NetXMS 3.0 released

Started by Victor Kirhenshtein, September 11, 2019, 10:46:25 PM

Previous topic - Next topic

vir_db

Thanks Viktor,

just another issue: seems that the upgrade brok the grafana plugin. I can get alerts, but I cannot collect any graphs (for ex. CPU Usage)

Alex Kirhenshtein

Plugin in grafana repo will be updated shortly.
In a meantime you can update it directly from git.

Quote from: vir_db on September 12, 2019, 12:34:03 PM
Thanks Viktor,

just another issue: seems that the upgrade brok the grafana plugin. I can get alerts, but I cannot collect any graphs (for ex. CPU Usage)


paul

Fantastic work Victor and the team - including those who helped in the testing.

I will wait for the first patch release - or Saturday - whichever comes first :)

Victor Kirhenshtein

Quote from: tomaskir on 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.

I've changed regexp expressions to return array with capture groups instead of boolean value. It still sets $n variables for compatibility but does not erase unused variables (so if there is no capture groups in regexp $1 will be left intact). As a side effect it is now possible do directly access capture group from regexp. For example the following code

text = "error 43";
errorCode = (text ~= "error ([0-9]+)")[1];
println(errorCode);

will print 43.

Best regards,
Victor


brettmilfos

Quote from: Victor Kirhenshtein on September 12, 2019, 10:58:03 AM
Quote from: brettmilfos on September 12, 2019, 06:59:17 AM
Just upgraded and have found an issue with SMS.

It created the migrated notification channel but did not work.

I tried to create a new notification channel, but there is nothing to select in the Driver name drop down.

Thanks, Brett.

How did you install server? On what platform?

Best regards,
Victor

Hi Victor,

Updated from 2.2.17 server 2k8r2 with existing generic SMS.

Cheers, Brett.

Victor Kirhenshtein

Hi,

I've found bug in Windows installer. Try to rename directory C:\NetXMS\lib\ncd to C:\NetXMS\lib\ncdrv and restart NetXMS Core service.

Best regards,
Victor

brettmilfos

Quote from: Victor Kirhenshtein on September 13, 2019, 12:51:16 AM
Hi,

I've found bug in Windows installer. Try to rename directory C:\NetXMS\lib\ncd to C:\NetXMS\lib\ncdrv and restart NetXMS Core service.

Best regards,
Victor

Hi,

That fixed the issue of not finding the DriverName.

Checking the logs the generic driver finds the device OK, but when I try to send a notification it says it cannot send the notification as there is no such channel name.

Cheers, Brett.

yordi

Hello,

I am using the debian repository, (http://packages.netxms.org jessie/main amd64 packages ) but it is not pickup version 3.0 .. is this not push jet ?
or is there a other repository ?

Victor Kirhenshtein

Hi,

there are issues with libraries needed by 3.0 in Debian Jessie and so far we have no plans to provide Debian Jessie packages for version 3.0.

Best regards,
Victor

Tatjana Dubrovica

Quote from: brettmilfos on September 13, 2019, 06:49:59 AM

Hi,

That fixed the issue of not finding the DriverName.

Checking the logs the generic driver finds the device OK, but when I try to send a notification it says it cannot send the notification as there is no such channel name.

Cheers, Brett.

Can you please provide screenshot of Cannel configuration for GenericDriver. It is under "Configuration"->"Notification Channels"

vir_db

Quote from: Alex Kirhenshtein on September 12, 2019, 01:13:21 PM
Plugin in grafana repo will be updated shortly.
In a meantime you can update it directly from git.

Quote from: vir_db on September 12, 2019, 12:34:03 PM
Thanks Viktor,

just another issue: seems that the upgrade brok the grafana plugin. I can get alerts, but I cannot collect any graphs (for ex. CPU Usage)

there are any updates about grafana plugin?
I saw the last commit 3 day ago, but still not working cloned in my grafana / netxms deploy

Victor Kirhenshtein

Did you clone it from our repository? Because latest version still waiting for approval to get into official Grafana plugin list.

Best regards,
Victor

vir_db

Quote from: Victor Kirhenshtein on September 16, 2019, 06:00:50 PM
Did you clone it from our repository? Because latest version still waiting for approval to get into official Grafana plugin list.

Best regards,
Victor

I cloned from this git: https://github.com/netxms/grafana