1 Template-crb-services
Tjenester på Cerebrum-hosts kan overvåkes med template Template-crb-services.
Notat
I praksis er dette overvåking av prosesser, og ikke systemd.
Vi kunne sjekket med system.run[systemctl is-active <unit>]`, men dette er sperret for i zabbix-agent sin config.
Nyere versjoner av zabbix-agent ser ut til å ha innebygd systemd-støtte.
1.1 Konfigurasjon
Listen over prosesser som overvåkes, og regler for varsler leses fra /cerebrum/etc/zabbix/services.json, men dette kan oversyres per-host med {$CRB_SERVICE_LIST}.
Filen ligger typisk i config-repoet for hosten, og rulles ut med deploy-scriptet.
Filen inneholder:
{
"discovery": [
{
"name": "<unit>",
"cmd": "<command>",
"monitor": true
"proc_min": <min>,
"proc_max": <max>,
},
…
]
}
Hvor:
- name
Navn på systemd unit.
Dette navnet brukes for å navngi items og triggers i Zabbix. På sikt vil vi gjerne også sjekke den faktiske tilstanden i systemd.
Eksempel: "crb-api.service", "crb-bofhd.service"
- cmd
Kommando-pattern som letes etter på hosten.
Kommandoen må være en python-prosess, og være startet av brukeren cerebrum. Pattern-et bør inneholde en noenlunde unik del av ExecStart i tilhørende systemd unit.
Eksempel: "/cerebrum/sbin/bofhd.py"
- monitor
Skru av/på overvåking og varsling for denne tjenesten.
Kan enkelt brukes for å midlertidig eller permanent skru av overvåking av en gitt tjeneste, uten å fjerne selve konfigurasjonen.
Verdier: true, false
- proc_min
Minimum antall prosesser som matcher cmd.
Typisk verdi er 1. Hvis antall prosesser blir mindre enn dette, vil det utløse en alarm. Kan settes til 0 for å deaktiveres.
- proc_max
Maks antall prosesser som matcher cmd.
Kan brukes for å oppdage at f.eks. flere job-runner kjører samtidig. Kan også settes til 0 for å sjekke at en gitt jobb ikke kjører - det er nyttig ved migrering til en ny host, hvor en gitt tjeneste bare skal kjøre på én av hostene.
For multi-processing kan det være nyttig å sette denne passe høyt - manglende prosesser vil stort sett bli Zombie-prosesser.
1.2 Overvåking
Hver tjeneste i konfigurasjonsfilen med monitor: true, vil få en egen item som teller antall prosesser (proc.num[python,cerebrum,all,<cmd>]). Hvis dette tallet overskrider grenseverdiene (proc_min, proc_max), vil det utløses en alarm.
I tillegg kjører en uavhengig overvåking som teller zombie-prosesser (proc.num[,cerebrum,zomb]), med et tilhørende varsel dersom denne er høyere enn null.