News:

We really need your input in this questionnaire

Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - tomaskir

#1
Null means data collection error - no value will be stored in the DB, no value will be shown on the chart.
The DCI will show "<<ERROR>>" in Last Values.

If you want 0, simply return 0 in the transform script.
#2
Use a transform script to return "null" when wrong value is received:


if ($1 < -100) {
  return null;
} else {
  return $1;
}
#3
Feature Requests / Re: Network Configuration Management
December 20, 2019, 08:15:00 PM
Quote from: Millenium7 on December 20, 2019, 12:45:08 AM

Unimus is a lot cheaper if you only need to automate a handful of devices, but Solarwinds gets much cheaper as you get beyond about 250-500. I can see you've added more functionality since we were looking at Unimus but its still crazy expensive over time. Unimus pricing at this time is $4,500/year for 1000 devices. We got a Solarwinds NCM1000 licence for something like $8000 (I don't remember exactly) but its a once off lifetime licence, we have the software forever. We lose software support after it expires (which were very helpful but we don't need it now) or we can renew it at a drastically reduced price (far less than unimus pricing for a year)


Solarwinds NCM licenses differ in pricing by region, but for US/EMEA regions, the NCM DL1000 license is $12.000.
This is with 1 year maintenance only. After that, renewing the DL1000 license when out-of-maintenance is $8.000 yearly.
(you may have different pricing in other regions, or if you already have other Solarwinds products)

You can easily verify Solarwinds NCM pricing by Googling "Solarwinds NCM DL1000 price".
Unimus is MUCH cheaper at $4.500 yearly at the 1.000 device tier.

The CHEAPEST Solarwinds NCM (DL50) license, is $2.900.
Unimus for 50 devices is $225 yearly.

In ALL cases (including Unlimited licensing), Unimus is cheaper than Solarwinds.

And while technically you can run Solarwinds without support, personally I don't think running unsupported and unpatched versions of software that is supposed to be your main configuration management over your network is a good idea. Unimus is based on a SaaS model, so you ALWAYS have support when you need it, and you are always running the latest and supported version of software. This is because telling the customer "you need to pay $8.000 to receive support" when you run upon a bug after the 1st year is really scummy (assuming the 1.000 device tier again). Unimus is also constantly adding features, with over 6 new releases each year for the last 3 years.

Not to mention Unimus will just work ootb with all 140+ supported vendors, including Config Push - no need to disable prompt matching, or fiddle with it in any way.
There is also direct NetXMS support through NMS Sync, and the device support list is more extensive than Solarwinds.
#4
Feature Requests / Re: Network Configuration Management
December 19, 2019, 12:22:15 PM
Quote from: Millenium7 on December 19, 2019, 07:39:54 AM
I'd like to see this implemented but its also kind of out of the scope of NetXMS IMO.
Unimus is incredibly expensive, we looked at it and its just silly
Solarwinds NCM is a far more polished and functional package and is significantly cheaper than Unimus especially as you start to get more than just a handful of devices (its once-off licence cost). We ended up going with that as there's no other system at the moment thats more cost effective for our needs

Are you sure you didn't miss-read the pricing on Unimus?
(it is yearly, not monthly payments)

Unimus is cheaper than Solarwinds NCM by far.
The feature-set of Unimus is just about the same as Solarwinds, while being much more modern, and MUCH easier to use.
#5
General Support / Re: NXCExeption when using csv importer
November 03, 2019, 02:39:23 PM
The csv importer v 1.1.2 was built with NetXMS v2 client libraries, this is why it didn't work.

I have updated it and released 1.1.3, which is built with support for NetXMS v3.
#6
Announcements / Re: NetXMS 3.0 released
September 12, 2019, 12:11:15 PM
Quote from: Victor Kirhenshtein on September 12, 2019, 11:10:31 AM
That's complicated issue. Current implementation is a bit messy with $n variables after matching. Consider the following code:

v = "error 43";
if (v ~= "(error|warning) ([0-9]+)")
println("Step 1: $1=".$1." $2=".$2);
if (v ~= "(error .*|info ([0-9]+))")
println("Step 2: $1=".$1." $2=".$2);


In NetXMS 2.2 $2 will be equal "43" on step 2, which is kind of misleading. It was because implementation in 2.2 silently skipping unmatched capture groups. Implementation in 3.0 resets all unused $n variables, which has side effect of clearing $1 if there were no capture groups at all. Looks like it was bad decision to use same names for capture groups and script arguments.

I want to gradually clean up inconsistencies in NXSL, and that could lead to break up of some things. I think that for now I can introduce server configuration variable (off by default) that will prevent resetting of unused capture group variables. Also I will introduce separated naming for script arguments and capture groups so scripts could be migrated over time to non-overlapping variable naming. Also for transformation scripts I think it is worth passing raw value not only as first argument to the script but also as global variable, like $rawValue.

Best regards,
Victor

The problem here is that there are likely thousands of scripts all around the Forums, Wiki and the internet that this change breaks.
Every single one would have to be updated - which is unrealistic.
For new users who find some regex-based scripts on the internet, they will not work, and they don't know why.

Existing implementations (scripts) will start working differently upon upgrade, without any knowledge of the system operators
This will be VERY difficult to track down, as this will not produce script errors, rather things will just work differently.
This means there can be a threshold script which will "pretend" to still work, but in reality will not work.
It puts burden on system operators to review every script they have upon upgrade to check if it still works properly

What I personally would propose:
There are far less scripts using regex capture groups than just regex.
So if a change is needed, only regex capture group should be changed, without affecting regex operations without capture groups (as is the case now).

What about capturing regex returning arrays with captures?

matchArrray = "test" ~= "t(e)(s)t";

println(matchArrray [0] . matchArrray [1]);
for (match : matchArrray) {
  print(match);
}


This would clean up the reuse of $1, $2, etc. without breaking ALL regex handling.
The change would only affect a smaller part of community, so less impact.
#7
Announcements / Re: NetXMS 3.0 released
September 12, 2019, 02:36:19 AM
Quote from: Tursiops on September 12, 2019, 02:16:29 AM
Just a practical note on this one:
Quote1. We have switched from TRE to PCRE as regular expression engine. In most cases this should go unnoticed, but in certain cases regular expressions may stop working or produce unexpected results.

A side effect of this change is that if you are matching a regular expression, even without a capture group, $1, $2, etc. will be reset to null values.
An transform script example of where that might cause an issue:
if ( $1 ~= "^Hello\s+World" ) {
  return $1;
} else {
  return "Something Else";
}


In prior versions of NetXMS, if the DCI returned "Hello World", the transform script would have returned exactly that.
With version 3, the transform script will return null.

You will need to change your script to something like this:
value = $1;
if ( value ~= "^Hello\s+World" ) {
  return value;
} else {
  return "Something Else";
}


Is this a known and expected change or a bug?
This will break A LOT of my NXSL scripts...
#8
You should never manipulate the data directly in the database.

Your options are:
1) use NXSL to manipulate the alarms
2) use the API to manipulate the alarms

For the API, you can either use nxshell, or write a custom application using the Java API libraries.

nxshell has documentation on the wiki:
https://wiki.netxms.org/wiki/Using_nxshell_to_automate_bulk_operations
#9
General Support / Re: Changelog post-2.2.9
March 19, 2019, 03:02:50 PM
The most up-to-date changelog can be found on GitHub:
https://github.com/netxms/netxms/blob/master/ChangeLog

This will contain things not yet released, since it is from the master development branch.

That being said, the Changelog you linked to should probably be updates as well.
#10
I would recommend checking out Unimus.

Takes literally 15 minutes to go from nothing to managing a network of 1000 devices.
Unimus has a native NetXMS connector, so you can sync your Unimus instance with NetXMS.
(no need to add devices into 2 systems)

Full config management and change management for 120+ vendors/devices.
(and full config change notification emails with a graphical diff in the email)

Also Mass Config Push for network automation.

Not FOSS however, so it might not fit your requirements if you are looking for a FOSS solution.
#11
General Support / Re: Raspberry Pi 3 - Compile Agent
September 15, 2018, 09:24:16 PM
There is latest up-to-date Raspbian packages in the official NetXMS APT repo.

(This includes 2.2.8 for Raspbian Stretch, and armhf Ubuntu 18 pacakges)
#12
Importer 1.1.2 released, hopefully everything should work now.
#13
Hi,

The dependencies were outdated.
I updated those and released a new version of the .csv importer.

Please check the GitHub releases.
#14
Feature Requests / Re: Find Device per MAC Address
March 03, 2018, 01:49:10 AM
Tools > Find MAC address
#15
General Support / Re: How to specify a netmask for node?
February 26, 2018, 03:49:57 PM
An object in NetXMS always has to have at least one interface, where its Primary IP will reside.
If an object has all information sources disabled (nxagent and snmp), the object is created with a synthetic interface to hold its IP.

Next up, when an interface is created, NetXMS looks to place it in a subnet.
NetXMS will look for a matching subnet to place the IP in.

If a subnet doesn't yet exist, a new one will be created - specifically a /24 in this case, since the synthetic interface has a default /24 mask.

You can influence this by changing the server configuration parameter DefaultSubnetMaskIPv4 (or DefaultSubnetMaskIPv6).