Monitoring s single service - does not work

Hi,
I just started to use icinga2. The following problem is concerns me:
Monitoring a local saslauthd using testsaslauthd is not working correctly.
I created a new check

  object CheckCommand "check_saslauthd" {
        import "plugin-check-command"
        command = [PluginDir + "/check_saslauthd"]
        arguments ={
                "-u" = "$user$"
                "-p" = "$password$"
      }
}

check_saslauthd is some old perl check from nagios and is doing the job.
Icinga2 is just showing me “SASLAUTHD CRITICAL - CRITICAL: authentication failed for XX”.
At the command line using the same parameter everything is working.

a) How can I check if the command is execute on the node and not the server ?
b) How can I get some debug information (command line options ,exit code, …)

Thanks!
Peer

Hi,

The devs wrote an extensive documentation how to troubleshoot why something not work. This is the link for the part of troubleshooting checks: https://icinga.com/docs/icinga2/latest/doc/15-troubleshooting/#checks-troubleshooting.

I don’t know the check “check_saslauthd”. But in my experience it’s very often a security reason why something not work. Like the icinga-user is not allowed to run the check or the script needs more permission to get some data. e.g. Redhat Systems are using SELinux. If this is turned on maybe the script wants to do something what it is not allwed.
“authentication failed” sounds like a permission problem or wrong user/password.

1 Like

Thanks. I’ll check the documentation. A good starting point…

1 Like

If you use the director, the executed commandline is displayed in the webinterface (the ‘inspect’ link on the service detail page)
If you don’t use director, you can find the commandline it either in the debuglog or via the api console.

Icingaweb2 also shows you a value called check source, this is the machine where the command is executed.

Another source of errors can be the variable names user and password
If there are other checks for the same system that use the same vars with other values, the macro resolver could confuse them. Better put check-command-exclusive macros into your checkcommand, like for example sasl_user and sasl_password

1 Like

So that’s the command object, but can we see the service object? If it’s meant to be run on the client node and not the Icinga parent, you would need something like:

command_endpoint = host.name

in your service object.

1 Like