Zabbixで名前解決ができているのか監視する

Tech

2023.12.15

Topics

はじめに

こんにちは。eunseoです。
本記事では、Zabbixで監視しているDNSサーバーで名前解決が出来ているか、出来ていないかを監視する手順について紹介します。

概要

Zabbixの外部チェックとは、Zabbixの監視アイテムの1つで、Zabbixサーバーがシェルスクリプトやバイナリを実行し、その結果を監視アイテムの値として使用することができる機能です。

Zabbix – 外部チェック

Zabbixサーバーからnslookupコマンドやdigコマンドを使って、DNSサーバーに登録されているドメインの状況を確認します。
正常に情報を取得できた場合「0」を返す。
正常に情報を取得できなかった場合「0以外」を返す。

今回の対象のドメイン名 : nhn-techorus.com

# nslookup -q nhn-techorus.com ; echo $?
*** Invalid option: q
Server: 127.0.0.1
Address: 127.0.0.1#53

Non-authoritative answer:
Name: nhn-techorus.com
Address: 203.174.73.145

0

シェルスクリプト

外部チェックを使うために、Zabbixサーバー上にあるシェルスクリプト(外部スクリプト)を作成し実行する必要があります。

シェルスクリプト配置の確認

シェルスクリプトを作成する前にExternalScriptsの配置を確認します。
(デフォルトでは /etc/zabbix/externalscripts/ が外部監視スクリプトを置く位置)

# grep ExternalScripts /etc/zabbix/zabbix_server.conf
ExternalScripts=/usr/lib/zabbix/externalscripts

シェルスクリプトの作成

/usr/lib/zabbix/externalscripts/の下に「nhn-techorus.com.sh」の名でシェルスクリプトを作成します。

# cd /usr/lib/zabbix/externalscripts/
# vi nhn-techorus.com.sh

nhn-techorus.com.sh

#!/bin/bash

DOMAINDATA=$(nslookup $1 $2 | grep Name | awk '{print $2}' | tail -n 1)
result=0

if [[ $DOMAINDATA == $1 ]]; then
echo $result
else
result=1
echo $result
fi

シェルスクリプトの設定(権限・所有者)

シェルスクリプトを作成したら所有者を「zabbix」に変更し、権限を「755」に与えます。

 
# cd /usr/lib/zabbix/externalscripts/ 
# chown zabbix:zabbix nhn-techorus.com.sh 
# chmod 755 nhn-techorus.com.sh 

シェルスクリプトの実行確認

作成したシェルスクリプトが正常に実行されているかを試してみます。

 
# /usr/lib/zabbix/externalscripts/nhn-techorus.com.sh  nhn-techorus.com
0

正常に実行できると0が返り、正常に実行できない場合は0以外の値が返ってきます。

Zabbix設定

シェルスクリプトを実行するZabbixの監視システム及びトリガーを作成します。

アイテム作成

  1. アイテムの設定画面から対象のホストを選択し、「アイテムの作成」をクリックします。
  2. 以下のようにアイテムを設定します。
    ・名前:DNS名前解決
    ・タイプ:外部チェック
    ・キー:シェルスクリプト名[ドメイン名,{HOST.IP}]
    (nhn-techorus.com.sh[nhn-techorus.com,{HOST.IP}])
    ・監視間隔(秒):180
    ・アプリケーション:DNS
    これ以外はデフォルトでOK
  3. 有効にチェックされていることを確認し、「追加」をクリックします。

トリガー作成

  1. トリガーの設定画面から対象のホストを選択し、「トリガーの作成」をクリック
  2. 以下のようにトリガーを設定します。
    ・名前:DNS名前解決
    ・条件式:{ドメイン名:シェルスクリプト名[ドメイン名,{HOST.IP}].last()}<>0
    ({nhn-techorus.com:nhn-techorus.com.sh[nhn-techorus.com,{HOST.IP}].last()}<>0)
    ・深刻度 : 軽度の障害
  3. 有効にチェックされていることを確認し、「追加」をクリックします。

以上で、DNSの監視設定は完了です。


DNSサーバーに障害が発生し、名前解決が出来なかった場合、Zabbixは「1」に上がり軽度の障害としてアラートが報告されます。

まとめ

本記事では、Zabbixで監視しているDNSサーバーで名前解決が出来ているか、出来ていないかを監視する手順について紹介しました。

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら