Encara que OP5 monitor disposa del seu pròpia API Rest, algunes aplicacions (com Splunk por exemple) només s'entendran con el nostre servidor si disposem de l'API Livestatus.
Fem un poc d'història. Nagios Core no inclou cap mena d'API, tot accés a la seva informació es realitza mitjançant la lectura del fitxer “estatus.dat”. Aquí l'inconvenient ho tenim en què s'uneixo fitxer difícil de formatar per a poder treballar con ell.
L'alternativa sempre ha estat NDO, inclou un agent que grava en una base de dades MySQL. Els inconvenients de NDO somni bàsicament dos: les escriptures en disc (moltes si tenim un monitoratge extens) i l'estructura de la pròpia base de dades (una mica “complicada” d'entendre si la comparem por exemple con Merlin).
Finalment tenim MK Livestatus que nos resol aquests dos problemes. No hi ha accés a disc (no hi ha MySQL por mitjana) i el seu sistema de consultes (querys) es d'allò més senzill.
A més Livestatus s'ha convertit en “estàndard” i s'inclou en molts forks (com Naemon) de manera nativa, alhora que cada vegada més aplicacions suporten l'API (NagVis, NagiosBO, Thruk, etc.). Podeu trobar tota la informació aquí:
https://mathias-kettner.de/checkmk_livestatus.html
Us comentàvem al principi que aplicacions com Splunk només s'entendran amb el nostre Nagios (avui com a exemple OP5 Monitor) si existeix la API Livestatus. Veurem com integrem Splunk amb Nagios (OP5 Monitor).
Comencem explicant que la integració de Splink amb Nagios es compon de dues parts: un agent que s'instal·la en el servidor Nagios i un accés a la API del mateix servidor. Sense les dues parts la informació que ens apareix en Splunk és incompleta.
La instal·lació de l'agent la tenim documentada en:
https://apps.splunk.com/app/352/#/documentation
La part de l'agent no ha més secret d'anotar correctament els path als quals ha d'accedir (no són els mateixos en Nagios que en OP5 Monitor).
La dificultat la tindrem en el moment d'integrar la lectura dels resultats, perquè OP5 ja mana les dades a PNP4Nagios en un format determinat, i substituir l'u per l'altre ens porta al fet que deixem de veure les gràfiques, és per això que només hem d'afegir aquestes cadenes a l'actual funcionament d'OP5, perquè funcionin els dos formats de manera simultània.
Per a la cadena “hosts”:
src_host=$HOSTNAME$ perfdata=HOSTPERFDATA hoststate=$HOSTSTATE$ attempt=$HOSTATTEMPT$ statetype=$HOSTSTATETYPE$ executiontime=$HOSTEXECUTIONTIME$ reason=$HOSTOUTPUT$ result=$HOSTPERFDATA$
Per a la cadena “services”:
src_host=$HOSTNAME$ perfdata=SERVICEPERFDATA name=$SERVICEDESC$ severity=$SERVICESTATE$ attempt=$SERVICEATTEMPT$ statetype=$SERVICESTATETYPE$ executiontime=$SERVICEEXECUTIONTIME$ latency=$SERVICELATENCY$ reason=$SERVICEOUTPUT$ result=$SERVICEPERFDATA$
fins aquí ja tenim la part de l'agent instal·lada correctament, anem per la API.
En aquest enllaç trobarem tota la informació necessària:
https://mathias-kettner.de/checkmk_livestatus.html
Requisits:
yum install gcc-c++ libstdc++-devel
A partir d'aquí descarreguem la versió més nova de MK Livestatus, descomprimim, configurem, compilem i instal·lem:
wget https://mathias-kettner.de/download/mk-livestatus-1.2.6b11.tar.gz
tar xzf mk-livestatus-1.2.6b11.tar.gz
cd mk-livestatus-1.2.6b11
./configure --with-nagios4
make
make install
Afegim els següents paràmetres al nostre “nagios.cfg”.
event_broker_options=-1
broker_module=/usr/local/lib/mk-livestatus/livestatus.o /opt/monitor/var/rw/live
Reiniciem OP5 Monitor en el nostre cas i provem des de linia de comando que funciona correctament la API:
echo 'GET hosts' | unixcat /opt/monitor/var/rw/live
Hauríem de veure una llista amb tots els hosts i els seus serveis.
Ara només ens fa falta deixar la API disponible des d'altres equips (en aquest cas del servidor de Splunk). Per a això creem un servei en Xinetd que ens obri el port 6557.
vi /etc/xinetd.d/livestatus
i li afegim el següent contingut:
service livestatus
{
type = UNLISTED
port = 6557
socket_type = stream
protocol = tcp
wait = no
cps = 100 3
instances = 500
per_source = 250
flags = NODELAY
user = monitor
server = /usr/bin/unixcat
server_args = /opt/monitor/var/rw/live
# only_from = IP_SPLUNK
disable = no
}
Reiniciem xinetd i llestos, ja disposem de les dades del nostre OP5 en Splunk.
"