コマンドでのping、fpingは問題ないが、一部のルータのみZabbixからicmpping監視ができない
CentOSにZabbixをインストールしたサーバー1台の構成で、
10台程度のルータをPingで監視したいと考えています。
9台のルータは問題なく監視ができていますが、
1台のルータだけコマンドでのping、fpingは応答がありますが、
Zabbixのicmppingで監視すると、「0(Down)」の状態になります。
テンプレート「Template Module ICMP Ping」を適用しても、
「ICMP loss」は「100%」、「ICMP response time」は「0」となります。
何か確認すべき点などはありますでしょうか。
・ping、fpingの結果は次の通りです。
# ping xx.xx.xx.xx
PING xx.xx.xx.xx (xx.xx.xx.xx) 56(84) bytes of data.
64 bytes from yy.yy.yy.yy: icmp_seq=1 ttl=252 time=8.42 ms
64 bytes from yy.yy.yy.yy: icmp_seq=2 ttl=252 time=8.45 ms
# fping xx.xx.xx.xx
xx.xx.xx.xx is alive [<- yy.yy.yy.yy]
# fping xx.xx.xx.xx -C 3 -p 3000 -t 5000
xx.xx.xx.xx : [0], 84 bytes, 9.53 ms (9.53 avg, 0% loss) [<- yy.yy.yy.yy]
xx.xx.xx.xx : [1], 84 bytes, 12.4 ms (10.9 avg, 0% loss) [<- yy.yy.yy.yy]
xx.xx.xx.xx : [2], 84 bytes, 12.7 ms (11.5 avg, 0% loss) [<- yy.yy.yy.yy]
・環境は次の通りです。
CentOS 7.5.1804
Zabbix 3.4.12
・fpingの権限は次の通りです。
# ll /usr/sbin/ | grep fping
-rwsr-xr-x 1 root root 32960 Oct 26 2014 fping
-rwsr-xr-x 1 root root 32960 Oct 26 2014 fping6
よろしくお願いいたします。
yk_taiko - 投稿数: 184
ping や fping は Zabbix サーバから実行されているんですよね。
そうなると、Zabbix上に登録されているIPアドレスが異なるとかでしょうか。。。
アイテムキーicmp[] の引数で IP を直接指定した場合も疎通不可でしょうか。
kkono - 投稿数: 7
監視サーバーは1台構成であり、pingやfpingはZabbixサーバーから行っております。
テンプレートではなく、ホストに直接アイテムを追加し、
「icmpping[xx.xx.xx.xx,3,3000,64,5000]」などとしても、結果は変わりませんでした。
当然の動作ではありますが、
Ping監視できているホストのIPアドレスを、監視できないホストのIPアドレスに変更すると、「0(Down)」の状態になり、
Ping監視できないホストのIPアドレスを、監視できているホストのIPアドレスに変更すると、「1(Up)」の状態になります。
ですので、ホストやテンプレート、アイテムの設定は特に問題ないと思っています。
IPアドレスも何度も見返しております…。
何かわかりましたら、よろしくお願いいたします。
heya - 投稿数: 319
yy.yy.yy.yy というのは何ですか?
ソースを見たところ、[<- yy.yy.yy.yy] というのがあって、それが対象のアドレスと違う場合、その行は無視されるようです。
src/libs/zbxicmpping/icmpping.c の process_ping() 内
/* The were two issues with processing only the fping's final status line: */
/* 1) pinging broadcast addresses could have resulted in responses from */
/* different hosts, which were counted as the target host responses; */
/* 2) there is a bug in fping (v3.8 at least) where pinging broadcast */
/* address will result in no individual responses, but the final */
/* status line might contain a bogus value. */
/* Because of the above issues we must monitor the individual responses */
/* and mark the valid ones. */
if ('[' == *c)
{
/* Fping appends response source address in format '[<- 10.3.0.10]' */
/* if it does not match the target address. Ignore such responses. */
if (NULL != strstr(c + 1, "[<-"))
continue;
/* get the index of individual ping response */
index = atoi(c + 1);
if (0 > index || index >= count)
continue;
host->status[index] = 1;
continue;
}
fripper - 投稿数: 495
ping / fping の送信先 (zabbix 上ではホストに設定したIP) と
icmp-ping パケットの返答元IP が異なっているのではないでしょうか?
ping 監視対象のホスト(ルータ) のIPがNATされた先に設置されていて
応答元を示すIP情報が異なっているとか‥
対象ホスト(ルータ)に複数のIPが指定されていて、セカンダリIP側に ping を掛けていて
プライマリIP側が応答を返しているとか‥
kkono - 投稿数: 7
監視できないルータにのみ、yy.yy.yy.yyのIPアドレスが表示されました。
問題になっているルータは、NATなどの先にあるようです。
今回は回避策として、pingコマンドは応答があるため、pingの結果を1,0で返すスクリプトを作成し、
対象ホストのアイテムに「タイプ:外部チェック」としてスクリプトを登録することで監視することにしました。