公開日: 2012年8月19日 23:42:30
最終更新: 2012年8月19日 23:42:30

Nagios – dhcpd 監視

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.