[LINUX] Überwachen Sie den Status von ISC DHCP mit ZABBIX

Als ich versuchte, den Status der IP-Adresszuweisung auf dem ISC-DHCP-Server mit ZABBIX zu überwachen, konnte ich aus irgendeinem Grund nur ein Beispiel für die Verwendung eines ziemlich großen Skripts finden, das in Perl usw. geschrieben wurde, und habe es daher selbst mit WAK implementiert Ich versuchte es.

In dem in / usr / local / bin / dhcpd_status gespeicherten Shell-Skript wird der ISC-DHCP-Release-Datensatz (dhcpd.leases) von awk analysiert und verwendet (aktiv), freigegeben (kostenlos), nicht zugewiesen (noassign), Zeigt alle verfügbaren und die dem Pool zugewiesene Nummer an (Kontingent).

/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

Berechnet als Summe aller Subnetze bei Ausführung ohne Parameter

python


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

Berechnet den Wert des angegebenen Subnetzes anhand der Netzwerkadresse des Subnetzteils (einschließlich des Zeitraums) im Parameter

python


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

In / etc / suders ist das zuvor erwähnte Shell-Skript so eingestellt, dass es mit Root-Rechten ausgeführt werden kann.

/etc/suders


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

In / etc / zabbix / zabbix_agentd.conf wird das zuvor vorbereitete Shell-Skript als Antwort auf die Anfrage von zabbix_server aufgerufen.

/etc/zabbix/zabbix_agentd.conf


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

Bestätigen Sie, dass der Wert mit dem Testbefehl von zabbix-agentd abgerufen werden kann

python


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

Fragen Sie auch bei zabbix-get nach

python


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

Danach können Sie den gewünschten Wert erhalten, indem Sie DHCP-bezogene Elemente zu den Überwachungselementen des Hosts hinzufügen, auf dem der ISC-DHCP-Server auf dem ZABBIX-Server ausgeführt wird. Der Schlüssel des Elements ist "isc.dhcpd". Der Parameter ist "[IP des Subnetzes, Element, das Sie erhalten möchten]" スクリーンショット 2020-10-06 8.09.41.png

Recommended Posts

Überwachen Sie den Status von ISC DHCP mit ZABBIX
[Amsel-Redis] Überwachen Sie Redis mit Amsel
[Amsel-Nginx] Überwachen Sie Nginx mit Amsel
[Amsel-Aerospike] Überwachen Sie Aerospike mit Amsel
[Amsel-Mysql] Überwachen Sie Mysql mit Amsel
[Amsel-memcached] Monitor Mit Amsel zwischengespeichert
Überwachen Sie Tomcat-Prozesse mit dem Zabbix-Agenten
So überwachen Sie den Ausführungsstatus von sqlldr mit dem Befehl pv