Zabbix-overvåking av systemd

Informasjon om overvåking av tjenester i Zabbix.

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.

Av fhl
Publisert 14. apr. 2026 12:54