目次

概要

ZABBIXにてDHCPの応答監視を行う手順。
ZABBIXの標準機能では監視出来ないことから、dhcpingコマンドを導入して監視を行う。
dhcpingの出力を管理するスクリプトを作成してZABBIXサーバ上に配置し、ZABBIXサーバからDHCPの応答を確認する。

環境情報

OSCentOS 5.5
ZABBIXZABBIX 1.8.15
dhcpingdhcping-1.2-2.el5

dhcpingのインストール

以下のサイトより使用する環境に適したdhcpingのRPMパッケージを取得する。

http://rpmfind.net/linux/rpm2html/search.php?query=dhcping


以下のコマンドにてインストールを行う。

rpm -ivh dhcping-1.2-2.el5.i386.rpm 


dhcpingの実行にはroot権限が必要なため、ZABBIX上からコマンドを実行できるようにするため、sudoの設定を行う。

# visudo


  • 末尾に追加
    zabbix ALL=(root) NOPASSWD: /usr/bin/dhcping

スクリプトの配置

後述のスクリプト(dhcp-check.sh)をZABBIXが実行可能な箇所に配置する。
(/usr/local/zabbix/bin/dhcp/dhcp-check.shに配置するものとする)

ZABBIXへの登録

ホスト登録

DHCPの応答確認を行うホストを作成する。
作成するホストはスクリプトを実行するサーバのアドレスを登録する必要がある。
スクリプトをZABBIXサーバに配置する場合、ホストはZABBIXサーバのIPアドレス、ホストマクロにDHCPサーバのIPアドレスを設定する。

  • ホスト設定
    名前【任意】
    IPアドレス【ZABBIXサーバのIP】
    マクロ{$DHCP.IP}=【DHCPサーバのアドレス】

アイテム設定

アイテムはホストマクロを参照する構造で作成する。

説明DHCP alive check
タイプZabbixエージェント
アイテムキーsystem.run[/home/system/script/apl/zabbix/dhcp/dhcp-check.sh {$DHCP.IP},]
データ型数値(整数)
データ形式10進数

トリガー設定

スクリプトの返値に応じたトリガーを作成する。
テンプレート化する際には3.のみを初期状態から有効に設定し、ホストへのテンプレート適用後に環境に応じて1. or 2.を有効にする。

  • 1. DHCPの応答なしを検知
    DHCPサーバの停止などを検知するために使用する。
    名前DHCPから応答がありません
    条件式{system.run[/home/system/script/apl/zabbix/dhcp/dhcp-check.sh {$DHCP.IP},].last(0)}=1
    イベント生成ノーマル
    深刻度重度の障害
  • 2. DHCPの応答ありを検知
    本来DHCPに応答しないアドレスからの応答を検知するために使用する。
    名前DHCPから応答があます
    条件式{system.run[/home/system/script/apl/zabbix/dhcp/dhcp-check.sh {$DHCP.IP},].last(0)}=0
    イベント生成ノーマル
    深刻度重度の障害
  • 3. 監視スクリプトの設定異常検知
    スクリプトの引数などの異常を検知するために使用する。
    名前DHCP監視の設定に誤りがあります
    条件式{system.run[/home/system/script/apl/zabbix/dhcp/dhcp-check.sh {$DHCP.IP},].last(0)}=2
    イベント生成ノーマル
    深刻度重度の障害

スクリプト(dhcp-check.sh)

第一引数に渡されたIPアドレスに対してdhcpingを実行し、結果により下記の返値を出力するスクリプト。

返値意味
0DHCPサーバからの応答あり
1DHCPサーバからの応答なし
2スクリプト引数に異常あり

ソース

#!/bin/sh
# --------------------------
#  DHCP Check
# --------------------------
# Version : 1.0
# date    : 2013/02/13

export LANG=C
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:$PATH

# Set
DHCPING="/usr/bin/dhcping"
LOG="/var/log/zabbix/dhcp-check.log"

# Check

if [ -x !$DHCPING ]; then
# echo "ERR : dhcping not found" >> $LOG
 echo "2"
 exit 1
fi

if [ -z $1 ]; then
# echo "ERR : DHCP Server unknown"  >> $LOG
 echo "2"
 exit 1
else
 DHCPSERVER=$1
fi

# Execute
DHCPCHECK=`sudo $DHCPING -s $DHCPSERVER 2>&1`
#echo $DHCPING" -s "$DHCPSERVER >> $LOG

echo $DHCPCHECK | grep "Got answer from:" > /dev/null
if [ $? -eq 0 ]; then
# echo "INFO : DHCP alive" >> $LOG
 echo "0"
 exit 0
else
# echo "INFO : DHCP not alive" >> $LOG
 echo "1"
 exit 1
fi

# EOF

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS