Back to OP5 Monitor FAQ

Sending results using mon query handler

Solutions provided by the OP5 Monitor Community for the benefit of other clients. These solutions or documents are NOT maintained, tested, or supported by ITRS Client Services and are provided as written by the original submitter.

Version Copied

This article was written for version 6.2 of Monitor. It could work on both lower and higher versions if nothing else is stated.

About Copied

This article describes how to use the query handler function of mon to send passive results to OP5 Monitor. These types of passive results can be used in scripts that are not scheduled by OP5 Monitor to perform checks.

To send a passive result to OP5 Monitor, we use the command mon qh query command run or alternatively write directly to the Nagios query handler socket. Both methods are described in this how-to. The use of the mon command is more useful as a debugging tool. For working implementations where passive results are sent to OP5 Monitor, using sockets is preferred.

Service Copied

To send a passive result for a service using the query handler, the commands look like this:

mon

$ mon qh query command run "[$(date +%s)] PROCESS_SERVICE_CHECK_RESULT;monitor;some_service;0;output"

Socket

printf "@command run [$(date +%s)] PROCESS_SERVICE_CHECK_RESULT;monitor;some_service;0;output\0" | unixcat /opt/monitor/var/rw/nagios.qh

Where:

In this example we will send a result to the service ‘Disk usage Z:’ on host ‘File_server’. The check result is ‘OK’ with “Disk usage Z: 25Gb” as output and “‘Z:’ =20.00Gb;30.00;40.00” as performance output1 for building graphs.

mon

mon qh query command run "[$(date +%s)] PROCESS_SERVICE_CHECK_RESULT;File_Server;Disk usage Z:;0;Disk usage Z: 25Gb|'Z:' =20.00Gb;30.00;40.00"

Socket

printf "@command run [$(date +%s)] PROCESS_SERVICE_CHECK_RESULT;File_Server;Disk usage Z;0;Disk usage Z: 25Gb|'Z:' =20.00Gb;30.00;40.00\0" | unixcat /opt/monitor/var/rw/nagios.qh

The command output, if everything is OK, is:

OK:No error

This result will look like this in OP5 Monitor:

Multiline Copied

It is possible to send passive results with multiline support. To do this, we need to change escape_html_tags=1 to escape_html_tags=0 in the file /opt/monitor/etc/cgi.cfg.

To send a multiline result to OP5 Monitor, use the tag in the output. Example:

mon

mon qh query command run "[$(date +%s)] PROCESS_SERVICE_CHECK_RESULT;File_Server;Disk usages;0;Disk usage Z: 25Gb<br>Disk usage S: 20Gb<br>Disk usage I: 10Gb"

Socket

printf "@command run [$(date +%s)] PROCESS_SERVICE_CHECK_RESULT;File_Server;Disk usages;0;Disk usage Z: 25Gb<br>Disk usage S: 20Gb<br>Disk usage I: 10Gb\0" | unixcat /opt/monitor/var/rw/nagios.qh

Footnote Copied

  1. The performance output for the service check uses a semicolon as a separator for separating results with warning and critical thresholds, the same as the query handler uses to separate its input values. This is not an issue, as the query handler stops looking at semicolons after the output starts.

Host Copied

It is also possible to do this for host checks by replacing PROCESS_SERVICE_CHECK_RESULT with PROCESS_HOST_CHECK_RESULT (and there is no longer a need to specify a service).

mon

mon qh query command run "[$(date +%s)] PROCESS_HOST_CHECK_RESULT;File_Server;0;Server is UP"

Socket

printf "@command run [$(date +%s)] PROCESS_HOST_CHECK_RESULT;File_Server;0;Server is UP\0" | unixcat /opt/monitor/var/rw/nagios.qh
["Geneos"] ["FAQ"]

Was this topic helpful?