slauger/check_netscaler

invalid perfdata values

ix-dev opened this issue · 12 comments

The plugin returns invalid performance data values. According to the Nagios Plugins
Development Guidelines
the value has to be in class [-0-9.] and 'a' for the UOM (unit of measurement) is not supported.

icinga2.log

[2019-09-24 06:14:55 +0200] warning/InfluxdbWriter: Ignoring invalid perfdata value: ns.hacurstate=UP;;
[2019-09-24 06:14:55 +0200] warning/InfluxdbWriter: Ignoring invalid perfdata value: ns.hacurmasterstate=Primary;;
[2019-09-24 06:15:13 +0200] warning/InfluxdbWriter: Ignoring invalid perfdata value: hapktrxrate=5a;;;0;
[2019-09-24 06:15:13 +0200] warning/InfluxdbWriter: Ignoring invalid perfdata value: hapkttxrate=5a;;;0;

Hi @ix-dev,

do you have an idea how we could fix this or are you able to provide a patch for this? A quick solution could be to add an switch, which completly disables the perfdata output for the plugin.

Maybe we also could ignore the metric if the value is e.g. an string.

I think the best solution would be to output only numeric perfdata since string values are not supported by Nagios/Icinga. In order to provide backward compatibility, a switch like '--numeric-perfdata' could also be added.

Hi just wanted to let you know that I have solved that.
It will be problem if in data output will be label with . in the name ... like system.memory ... it was similar case opened at icinga2 community:

https://community.icinga.com/t/issue-icinga-not-showing-metrics-stored-in-graphite/466/3

example:

-icinga2 will not store graphs:
NetScaler OK - perfdata: ns_tcpcurserverconn: 9163 | 'ns.tcpcurserverconn'=9163;;

-icinga2 will store graphs:
NetScaler OK - perfdata: ns_tcpcurserverconn: 9163 | 'ns_tcpcurserverconn'=9163;;

After troubleshooting I have made some changes almost on every line where I have $plugin->add_perfdata...

for 1 example changing label inside hash structure and changing the "." to "_"
original:
$plugin->add_perfdata(
label => "'" . $plugin->opts->objectname . ".member_quorum'",
value => $member_quorum . '%',
min => 0,
max => 100,
warning => $member_quorum_warning,
critical => $member_quorum_critical,
);

I have changed to this:

$plugin->add_perfdata(
label => "'" . $plugin->opts->objectname . "_member_quorum'",
value => $member_quorum . '%',
min => 0,
max => 100,
warning => $member_quorum_warning,
critical => $member_quorum_critical,
);

After changes has been done, we are getting the graphs.
Maybe you should think also to change the format of output.

This plugin is great and thank you for sharing it with community.

KR,
Josip

HI @fatslimjoe,

thanks for your information and research. Changing the labels would break metrics for existing users. I'm not really happy with this, but it seems we need to do this.

Could you share your changes with us with a pull request?

Hi @slauger ,

I am getting 403 error. Could you be so kind and check permissions? Otherwise if the problem is on my side I will send you changed script.

BR,
Josip

Hi @fatslimjoe,

I guess this would be your first contribution on GitHub? What exactly have you tried? it's not possible to push directly to this repository. Just create a fork (fork button in the top right), make your changes there and issue a pull request from it.

See also https://opensource.com/article/19/7/create-pull-request-github.

If you need more help, you could also reach me out via Microsoft Teams or Telegram.

9a9a1b1 adds the ability to configure a custom separator (e.g. _ instead of the default .).

Fixed with v1.6.1.

v.1.6.1 still returns invalid performance data values.

[2021-09-10 09:55:46 +0200] warning/InfluxdbWriter: Ignoring invalid perfdata value: ns.hacurstate=UP;;
[2021-09-10 09:55:46 +0200] warning/InfluxdbWriter: Ignoring invalid perfdata value: ns.hacurmasterstate=Primary;;

Could you please have a look at this issue?

There are no plans to change the current default. Have you tried to use the --seperator='_' switch?

The problem is not the label / separator. Nagios / Icinga2 only allows numeric values. Strings are not allowed.

According to the Nagios Plugins Development Guidelines the value has to be in class [-0-9.] and 'a' for the UOM (unit of measurement) is not supported. So 'UP' or 'PRIMARY' also not allowed.

ef23964 should fix the measurement problem. For the rest i need to find a proper test environment first.