Zabbix Discovery: Vorhandensein von Network-Interfaces und Mounted filesystems sicherstellen

Ich würde gerne überwachen, dass Netwerk-Interfaces und gemountete Filesysteme immer da bleiben. Dies geht via Zabbix Discovery recht bequem: Damit ich nicht alle per Hand anlegen muss, mache ich das via eine Discovery, automatisch entsprechende Items und Trigger anlegt.

Überwachen, dass Network-Interfaces, die einmal da waren auch da bleiben.

  • Filter beim Discovery, sodass die häufig wechselnden Interfaces nicht betrachtet werden (via global regular expression “Network interfaces for discovery” in “Administration” -> “General” -> “Regular Expressions”. Diese wird unter “Filter” bei der Discovery benutzt.)

    Ich habe dort v.a. die docker-Interfaces ausgeblendet:

    Zabbix RegExp: Network interfaces for discovery

  • UserParamater net.if.link[eth0] etc. zur Erkennung, ob Network Interface “up” im Zabbix-Agent: In /etc/zabbix/zabbix_agentd.d/userparameter_niclink.conf:

    UserParameter=net.if.link[*],if [ -r /sys/class/net/$1/carrier ] ; then cat /sys/class/net/$1/carrier ; else echo 0 ; fi
    

    Diese spiele ich via Ansible in alle Linux-Server ein:

    - name: add interface state key
      lineinfile: >
        dest=/etc/zabbix/zabbix_agentd.d/userparameter_niclink.conf
        regexp='^UserParameter=net.if.link'
        line='UserParameter=net.if.link[*],if [ -r /sys/class/net/$1/carrier ] ; then cat /sys/class/net/$1/carrier ; else echo 0 ; fi'
        create=yes
        state=present
      notify: restart zabbix-agent
    
  • Im Discovery einen neuen Item Prototype erstellen: Unter “Configuration” -> “Templates” -> “Template OS Linux” (bzw. mein eigenes Linux Template) -> “Discovery” -> “Network interface discovery”. Keyname net.if.link[{#IFNAME}] um den neuen UserParameter in allen Interfaces abzubilden.

  • Trigger prototype erstellen, der prüft, ob das Interface mindestens 5 Minuten lang “down” (.max(5m)}=0) war oder nicht erkannt wurde (.nodata(310)}=1) (5 Minuten, damit nicht gleich ein Reboot o.ä. zu x Meldungen führt).

    Meine Trigger Expression dazu lautet:

    {Template Linux Dirk:net.if.link[{#IFNAME}].max(6m)}=0
    or
    {Template Linux Dirk:net.if.link[{#IFNAME}].nodata(360)}=1
    

    Sieht dann so aus:

    Zabbix Trigger prototype: Network interfaces is down

Tipp: Beim “Herumspielen” mit diesen Discovery-Einstellungen ist es meist nützlich das “Update interval (in sec)” der entsprechenden “Discovery rule” von 1h auf 1m herunterzusetzen. Man wundert sich sonst leich, warum die Änderungen (scheinbar) keine Wirkung haben.

Überwachen, dass Mounted filesystems, die einmal da waren auch da bleiben.

  • Item Prototype in Template/Discovery bei “Mounted filesystem discovery”:
    • Name: Filesystem {#FSNAME} is mounted (Dirk prototype)
    • Key: vfs.file.regmatch[/proc/mounts,^\S+ {#FSNAME} .*]
    • Types: Numeric (unsigned) / Decimal
    • Show/Store value: As is
  • Trigger Prototype:
    • Name: Filesystem {#FSNAME} is not mounted (Dirk prototype)
    • Expression: {Template OS Linux:vfs.file.regmatch[/proc/mounts,^\S+ {#FSNAME} .*].max(5m)}=0

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert