-
Notifications
You must be signed in to change notification settings - Fork 183
nsca
Fabian Affolter edited this page Apr 27, 2014
·
2 revisions
The nsca
target is used to submit passive Nagios/Icinga checks to an NSCA daemon.
Consider the following Icinga service description which configures a passive service:
define service{
use generic-service
host_name localhost
service_description Current temp via MQTT
active_checks_enabled 0
passive_checks_enabled 1
check_freshness 0
check_command check_dummy!1
}
with the following target definition in mqttwarn.py
[config:nsca]
nsca_host = '172.16.153.112'
targets = {
# Nagios host_name, Nagios service_description,
'temp' : [ 'localhost', 'Current temp via MQTT' ],
}
[arduino/temp]
targets = nsca:temp
; OK = 0, WARNING = 1, CRITICAL = 2, UNKNOWN = 3
priority = check_temperature()
format = Current temperature: {temp}C
Also, consider the following PUB via MQTT:
mosquitto_pub -t arduino/temp -m '{"temp": 20}'
Using a transformation function for priority to decide on the status to be sent to Nagios/Icinga, we obtain the following:
Topic option | M/O | Description |
---|---|---|
priority |
O | Nagios/Icinga status. (dflt: 0) |
The transformation function I've defined as follows:
def check_temperature(data):
'''Calculate Nagios/Icinga warning status'''
OK = 0
WARNING = 1
CRITICAL = 2
UNKNOWN = 3
if type(data) == dict:
if 'temp' in data:
temp = int(data['temp'])
if temp < 20:
return OK
if temp < 25:
return WARNING
return CRITICAL
return UNKNOWN
Requires:
-
pynsca, but you don't have to install that; it suffices if you drop
pynsca.py
alongsidemqttwarn.py
(i.e. in the same directory)