Vi upplever för tillfället längre svarstider än vanligt på grund av en ovanligt hög arbetsbelastning.
Vårt team arbetar med full intensitet för att effektivt hantera denna situation och minska väntetiderna.
Vi ber om er förståelse och tålamod under denna period och strävar efter att återgå till normala svarstider så snabbt som möjligt.

Läsa status i realtid från Nagios

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.

  • Automatiskt läsa data från webb-gui
  • Använda modulerna NDOUtils eller Merlin som skriver ner data/status i t.ex. en MySQL-databas
  • Använda modulen MK Livestatus
  • 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.