Nagios är ett övervakningsverktyg som är väldigt robust, flexibelt och naturligtvis öppen källkod.
Det är däremot inte så enkelt att läsa aktuell status om man t.ex. vill få in information i en extern applikation.
Det finns i princip tre olika metoder.
Alla dessa metoder fungerar, men har sina för- och nackdelar. T.ex. så är det ganska komplicerat att sortera ut data från ett webb-gui, och det blir problem om layouten ändras. Att skriva ner data till en MySQL-databas har absolut många fördelar, men i ett tungt system går det åt väldigt mycket CPU och disk-I/O till MySQL.
Det tredje alternativet, MK Livestatus, har en lite annorlunda funktion och därför kommer här en lite mer detaljerad beskrivning. Precis som NDOUtils och Merlin, så har MK Livestatus en egen Nagios-modul som laddas av Nagios-core. Modulen skapar en socket som man kan ansluta till och ställa frågor. Fördelen är att eftersom MK Livestatus är en del av Nagios i minnet, så kommer den åt Nagios interna status-struktur. Åtkomsten är blixtsnabb och disk-I/O är noll.
För att ladda Livestatus-modulen måste man först ladda hem och kompilera den, och sedan lägga in att modulen ska laddas i nagios.cfg:
broker_module=/mnt/persist/mklive/livestatus.o /var/lib/nagios/rw/live event_broker_options=-1
Efter en omstart av Nagios, så kommer det nu finnas en socket som lyssnar på anrop. Till Livestatus följer det med ett bra program som heter unixcat som man enkelt kan testa sin socket med. T.ex, för att lista namn och status (0 = up och 1 = down) och skriv ut svaret med JSON:
# echo -e 'GET hosts
Columns: name state
OutputFormat: json' | ./unixcat /var/lib/nagios3/rw/live
[["server-1",0],
["server-2",0],
["server-3",1],
["server4",0]]
Svaret blir alltså i det här fallet en JSON-kodad sträng som är enkelt att plocka in i t.ex. Python eller PHP. Enkelt och snabbt. Det spelar ingen roll om du har 10 maskiner eller 1000.
Mer information finns på MK Livestatus hemsida.