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.

"