コマンドでの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 の写真

ping や fping は Zabbix サーバから実行されているんですよね。

そうなると、Zabbix上に登録されているIPアドレスが異なるとかでしょうか。。。
アイテムキーicmp[] の引数で IP を直接指定した場合も疎通不可でしょうか。

ユーザー kkono の写真

監視サーバーは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 の写真

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 の写真

ping / fping の送信先 (zabbix 上ではホストに設定したIP) と
icmp-ping パケットの返答元IP が異なっているのではないでしょうか?

ping 監視対象のホスト(ルータ) のIPがNATされた先に設置されていて
応答元を示すIP情報が異なっているとか‥

対象ホスト(ルータ)に複数のIPが指定されていて、セカンダリIP側に ping を掛けていて
プライマリIP側が応答を返しているとか‥

ユーザー kkono の写真

監視できないルータにのみ、yy.yy.yy.yyのIPアドレスが表示されました。
問題になっているルータは、NATなどの先にあるようです。

今回は回避策として、pingコマンドは応答があるため、pingの結果を1,0で返すスクリプトを作成し、
対象ホストのアイテムに「タイプ:外部チェック」としてスクリプトを登録することで監視することにしました。