Nagios で dhcpd を監視する
簡単にできるだろうと思っていたら、setuid を含めてちょっとややこしい手順があったのでメモを残しておく
dhcpd の動作確認を行うには check_dhcp を使用しますが、一般ユーザで実行すると以下の様にエラーが表示されます。
-bash-4.1$ /usr/local/nagios/libexec/check_dhcp Warning: This plugin must be either run as root or setuid root. To run as root, you can use a tool like sudo. To set the setuid permissions, use the command: chmod u+s yourpluginfile Error: Could not bind socket to interface eth0. Check your privileges...
どうやら check_dhcp は root 権限で動かさなければいけないらしい。 sudo するか setuid しなさいということなので、やってみる。
$ chmod u+s /usr/local/nagios/libexec/check_dhcp
さらにファイルの所有権を root に変更
$ chown root /usr/local/nagios/libexec/check_dhcp
$ ls -l /usr/local/nagios/libexec/check_dhcp
-rwsr-xr-x. 1 root nagios 99325 10月 3 17:44 2011 check_dhcp
再度挑戦。
$ /usr/local/nagios/libexec/check_dhcp -v DHCP socket: 3 Hardware address: 00:0c:29:xx:xx:xx DHCPDISCOVER to 255.255.255.255 port 67 DHCPDISCOVER XID: 1508846776 (0x59EF2CB8) DHCDISCOVER ciaddr: 0.0.0.0 DHCDISCOVER yiaddr: 0.0.0.0 DHCDISCOVER siaddr: 0.0.0.0 DHCDISCOVER giaddr: 0.0.0.0 send_dhcp_packet result: 548 . . .
成功かも。
設定ファイルの編集
commands.cfg に定義が無ければ追加
#
# /usr/local/nagios/etc/objects/commands.cfg
#
# check_dhcp コマンドを定義
# ‘check_dhcp’ command definition
define command{
command_name check_dhcp
command_line $USER1$/check_dhcp $ARG1$
}
監視サーバ設定にはいつも通り
define service{
use generic-service
host_name dhcp-server
service_description dhcp
check_command check_dhcp
}
nagios を再起動
service nagios restart Running configuration check...done. Stopping nagios: done. Starting nagios: done.