ホスト・サービス・ポートのステータス監視
4936 ワード
試してみる1:zabbixが持参したテンプレートnet.tcp.listen
モニタ項目を直接新規作成します.この方法では、/proc/net/tcpを直接読み取りますが、ポートステータスは取得されません.
具体的なソースコード(バージョン3.0.2):
ホスト側からポートを表示するのは正常listen
カーネルが頻繁に/proc/net/tcpというファイルを書くため、読み取りが正常ではありません.
試行2:ネイティブでスクリプトをカスタマイズする
カスタムkey
agentを再起動したらproxy側でzabbix_get取得データは常に0
agentログには、スクリプトの実行権限がないことが常に求められます.
スクリプトは755に与えられ、zabbixユーザーの下で手動で実行された結果は正常に1ではなく、プロファイルでUnsafeUserParameters=1が定義されています.
試行3:proxy側でスクリプトをカスタマイズする
tcpingは非常に良いポートモニタリングツールですが、使用時に注意しなければなりません.必ず-tパラメータを持ってください.そうしないと、ポートが通じないと、ずっと待っている状態になります.また、-tの時間はzabbix_より小さくなければならないことに注意してください.get実行のタイムアウト時間(一般推奨設定<5 s)
カスタムkey値
マスター端のzabbix_を通過get実行取得結果正常
インタフェースにモニタリング項目を追加し、キー値を持ち込む
モニタ成功
この方法は、ネットワークが到達できる限り、任意のホストのポート情報をスクリプトで監視できます.
モニタ項目を直接新規作成します.この方法では、/proc/net/tcpを直接読み取りますが、ポートステータスは取得されません.
具体的なソースコード(バージョン3.0.2):
# cd /home/zabbix/zabbix-3.0.2/src/libs/zbxsysinfo/linux
# cat net.c
if (0 < (n = proc_read_tcp_listen("/proc/net/tcp", &buffer, &buffer_alloc)))
{
ret = SYSINFO_RET_OK;
zbx_snprintf(pattern, sizeof(pattern), "%04X 00000000:0000 0A", (unsigned int)port);
if (NULL != strstr(buffer, pattern))
{
listen = 1;
goto out;
}
}
ホスト側からポートを表示するのは正常listen
カーネルが頻繁に/proc/net/tcpというファイルを書くため、読み取りが正常ではありません.
試行2:ネイティブでスクリプトをカスタマイズする
#!/bin/sh
res=`/bin/netstat -an|grep $1|grep LISTEN|wc -l`
if [ "$res" -gt 0 ]
then
{
echo 1
}
else
{
echo 0
}
fi
カスタムkey
UserParameter=jiankong,/etc/zabbix/scripts/netstat.sh 9170
agentを再起動したらproxy側でzabbix_get取得データは常に0
agentログには、スクリプトの実行権限がないことが常に求められます.
スクリプトは755に与えられ、zabbixユーザーの下で手動で実行された結果は正常に1ではなく、プロファイルでUnsafeUserParameters=1が定義されています.
試行3:proxy側でスクリプトをカスタマイズする
# cd /home/zabbix/zabbix-agent/etc/scripts
# cat check_port_status.sh
tcping -t 2 $1 $2 | awk '{print $4 }'|awk -F"." '{print $1}'
tcpingは非常に良いポートモニタリングツールですが、使用時に注意しなければなりません.必ず-tパラメータを持ってください.そうしないと、ポートが通じないと、ずっと待っている状態になります.また、-tの時間はzabbix_より小さくなければならないことに注意してください.get実行のタイムアウト時間(一般推奨設定<5 s)
カスタムkey値
# cd /home/zabbix/zabbix-agent/etc/zabbix_agentd.conf.d
# cat port_check.conf
UserParameter=port.check[*],/home/zabbix/zabbix-agent/etc/scripts/check_port_status.sh $1 $2
マスター端のzabbix_を通過get実行取得結果正常
インタフェースにモニタリング項目を追加し、キー値を持ち込む
port.check[192.168.12.12,9170]
モニタ成功
この方法は、ネットワークが到達できる限り、任意のホストのポート情報をスクリプトで監視できます.