[LINUX] Surveiller l'état du DHCP ISC avec ZABBIX

Lorsque j'ai essayé de surveiller l'état d'allocation d'adresse IP sur le serveur DHCP ISC avec ZABBIX, pour une raison quelconque, je n'ai pu trouver qu'un exemple d'utilisation d'un script assez volumineux écrit en Perl, etc., donc je l'ai implémenté moi-même en utilisant WAK Je l'ai essayé.

Dans le script shell enregistré dans / usr / local / bin / dhcpd_status, l'enregistrement de version ISC DHCP (dhcpd.leases) est analysé par awk et utilisé (actif), libéré (gratuit), non attribué (noassign), Affiche chaque disponible et le nombre alloué au pool (quota).

/usr/local/bin/dhcpd_status


#!/bin/sh
pattern=`echo -n "${1}"|sed -e 's/\./\\\\\\\\./g'`
active=`awk -v pattern="$pattern" '/^lease / { if ( $2 ~ pattern ) { curlease = $2; } else { curlease = "" } } /^  binding state / { if ( curlease != "" ) { lstates[curlease] = $3; } } END { for (curl in lstates) { tstates[lstates[curl]]++; } print tstates["active;"]; }' /var/lib/dhcpd/dhcpd.leases`
free=`awk -v pattern="$pattern" '/^lease / { if ( $2 ~ pattern ) { curlease = $2; } else { curlease = "" } } /^  binding state / { if ( curlease != "" ) { lstates[curlease] = $3; } } END { for (curl in lstates) { tstates[lstates[curl]]++; } print tstates["free;"]; }' /var/lib/dhcpd/dhcpd.leases`
pattern=`echo -n "^[\\t ]*range[\\t ]*${1}"|sed -e 's/\./\\\\\\\\./g'`
quota=`awk -F'[\t; ]*' -v pattern="$pattern" 'BEGIN { ttl = 0; } $0 ~ pattern { split($3, ip_from, "."); split($4, ip_to, "."); ttl += ip_to[4] - ip_from[4]; } END { print ttl; }' /etc/dhcp/dhcpd.conf`
noassign=$(($quota-$active-$free))
echo active: $active
echo free: $free
echo noassign: $noassign
available=$(($free+$noassign))
echo available: $available
echo quota: $quota

Calculé comme la somme de tous les sous-réseaux lorsqu'ils sont exécutés sans paramètres

python


# /usr/local/bin/dhcpd_status
active: 55
free: 313
noassign: 328
available: 641
quota: 696

Calcule la valeur du sous-réseau spécifié en fonction de l'adresse réseau de la partie sous-réseau (y compris la période) dans le paramètre

python


[root@zeus ~]# /usr/local/bin/dhcpd_status 192.168.1.
active: 41
free: 128
noassign: 0
available: 128
quota: 169

Dans / etc / suders, le script shell mentionné précédemment est défini pour pouvoir être exécuté avec les privilèges root.

/etc/suders


zabbix    ALL=(ALL)       NOPASSWD: /usr/local/bin/dhcpd_status
Defaults!/usr/local/bin/dhcpd_status !requiretty

Dans / etc / zabbix / zabbix_agentd.conf, le script shell préparé précédemment est appelé en réponse à la requête de zabbix_server.

/etc/zabbix/zabbix_agentd.conf


UserParameter=isc.dhcpd[*],sudo /usr/local/bin/dhcpd_status $1 | grep $2 | cut -d' ' -f 2

Confirmez que la valeur peut être obtenue avec la commande de test de zabbix-agentd

python


# zabbix_agentd -t isc.dhcpd[192.168.1.,active]
isc.dhcpd[192.168.1.,active]                  [t|72]

Vérifiez également avec zabbix-get

python


# zabbix_get -s 127.0.0.1 -k isc.dhcpd[192.168.1.,active]
isc.dhcpd[192.168.1.,active]                  [t|72]

Après cela, vous pouvez obtenir la valeur souhaitée en ajoutant des éléments liés à DHCP aux éléments de surveillance de l'hôte exécutant le serveur DHCP ISC sur le serveur ZABBIX. La clé de l'élément est ʻisc.dhcpdLe paramètre est[IP du sous-réseau, élément que vous voulez obtenir]` スクリーンショット 2020-10-06 8.09.41.png

Recommended Posts

Surveiller l'état du DHCP ISC avec ZABBIX
[blackbird-redis] Surveiller Redis avec blackbird
[blackbird-nginx] Surveiller Nginx avec blackbird
[blackbird-aerospike] Surveiller Aerospike avec blackbird
[blackbird-mysql] Surveiller mysql avec blackbird
[blackbird-memcached] Surveiller Memcached avec blackbird
Surveiller les processus Tomcat avec Zabbix-agent
Comment surveiller l'état d'exécution de sqlldr avec la commande pv