ICMP pingの問題に対処したり、Zabbixでpingを設定したりしていませんか?確かに、ファイアウォールや特定の設定によってICMPパケットがブロックされている場合など、基本的なことが実際にはそれほど基本的でないというのは、ちょっと不思議な感じがします。監視システムが突然応答しなくなったり、ICMPチェックの設定に問題が生じたりする場合、通常はネットワークまたはファイアウォールのルールによってエコー要求または応答がブロックされていることが原因となっています。このガイドでは、Zabbixサーバーがネットワークデバイスやサーバーに問題なくpingを送信できるように、その問題を解決する手順を説明します。これらの調整を行えば、監視ダッシュボードにようやく意味のあるデータが表示されるようになり、アラートが「不明」モードのままになることもなくなるはずです。もちろん、WindowsとLinuxでは、必要以上に複雑な設定が必要になることもあります。
Windows Server および Linux で ICMP Ping 用のポートを開く方法は?
netsh または PowerShell を使用して Windows Server で ICMP を許可する
Windowsがサーバー上でデフォルトでICMP pingを許可していない場合は、ファイアウォールルールが受信Echoリクエストをブロックしている可能性があります。通常、WindowsはICMPを許可するはずですが、誰かが変更を加えたり、アップデートで設定がリセットされたりした場合は、手動で許可する必要があります。このような場合にnetshやPowerShellが役立ちます。
- 管理者としてコマンドプロンプトを開き、次のコマンドを実行します。
netsh advfirewall firewall add rule name="ICMP Allow" protocol=icmpv4:8, any dir=in action=allow
Set-NetFirewallRule -Name FPS-ICMP-ERQ-In -Enabled True -Profile Any -Action Allow
これにより、組み込みのファイアウォールルールが有効になり、ICMPエコーリクエストが許可されます。変更はすぐに反映されますが、場合によっては再起動やネットワークのリセットが必要になることもあります。また、設定によってはすぐに反映されない場合があり、ファイアウォールのプロファイルやルールを再確認する必要があるかもしれません。必ずしもうまくいくとは限りません。
Linuxでiptablesまたはfirewalldを使用してICMPを有効にする
Linuxは通常よりシンプルですが、ディストリビューションによってはICMPがデフォルトで無効またはブロックされている場合があります。これを確認または修正するには、root/sudoアクセスが必要です。
- iptables を使用している場合は、次のコマンドを実行して、エコー要求と応答を明示的に許可するルールを追加します。
# iptables -I INPUT -p icmp --icmp-type echo-request -j ACCEPT # iptables -I OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
注: これらのコマンドはルールをチェーンの先頭に挿入するため、すぐに反映されます。これらのルールを再起動後も維持するには、iptablesの設定を保存する(一部のディストリビューションでは「service iptables save」など)か、ディストリビューション固有の方法を使用する必要がある場合があります。
firewalld を備えたディストリビューション (Fedora、RHEL、CentOS など) を使用している場合は、iptables をスキップして以下を使用できます。
# firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p icmp -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT # firewall-cmd --reload
このコマンドは、どこからでもICMPを許可する直接ルールを追加し、ファイアウォールルールをリロードします。簡単ですが、セキュリティの観点から本当に必要なルールであることを確認してください。
fping をインストールして Zabbix にパスを設定する方法は?
fpingがインストールされているか確認し、動作するか確認する
fpingはZabbixのICMPチェックに最適なツールです。非常に軽量で信頼性も高いです。まずは、fpingがインストールされていることを確認してください。一部のLinuxディストリビューションではプリインストールされている場合もありますが、必ずしもそうとは限りません。以下の方法を試してみてください。
fping -v
バージョン情報が表示されれば問題ありません。表示されない場合はインストールしてください。
- Ubuntu/Debian:
sudo apt install fping - CentOS/RHEL: 最初に EPEL リポジトリを有効にする必要があります。
sudo yum install epel-releaseに続くsudo yum install fping
インストールが完了したら、パスを確認してください。通常は/usr/bin/fpingにあります。何かおかしい点がある場合は、コマンドが別の場所にある可能性がありますので、 を確認してくださいwhich fping。
fping が にない場合は/usr/bin/fping、次のようにして Zabbix エージェントまたはプロキシ設定でパスを明示的に設定します。
FpingLocation=/usr/bin/fping Fping6Location=/usr/bin/fping6
これにより、ICMP チェックを実行するときに、Zabbix がどこにあるかを確実に認識できるようになります。
ZabbixのICMP Pingテンプレート
ほとんどのZabbixインストールには、テンプレートモジュールICMP Pingが既に付属していますが、バージョンによっては名前が多少異なる場合があります。このモジュールは主に以下の3つの機能を備えています。
- ICMP ping — ホストが ping に応答するかどうかを確認します。
- ICMP 損失– 失われたパケットの割合を追跡します。
- ICMP 応答時間– ping にかかる時間をミリ秒単位で測定します。
これらのチェックでは、 icmpping、icmppngloss、icmppingseなどの組み込みキーを使用します。これらはシンプルなチェックなので、Zabbixエージェントのインストールは不要です。SNMPまたはネットワークスキャンだけで実行できます。
これらのチェックには、パケットロスや応答遅延の増加を警告するトリガーがあります。 $ICMP_LOSS_WARNや$ICMP_RESPONSE_TIME_WARNなどのマクロ値は、マクロタブで直接調整できます。これは、問題の兆候が現れた際に大量のアラートを受信したくない場合に便利です。
たとえば、20% を超えるパケットが失われたり、応答時間が 150 ミリ秒を超えたりすると、Zabbix は「問題が発生しています」とささやきます。これは、ネットワークの障害が大きな問題になる前に検出する優れた方法です。
Zabbixでホストを作成し、ICMP Pingテンプレートを接続する
Windows Server(または任意のデバイス)をZabbixにICMP監視用に追加するのはそれほど難しいことではありませんが、どうしても抜け穴が出てきます。「設定」→ 「ホスト」 → 「ホストの作成」を選択し、名前とグループを選択して、エージェントインターフェースセクションにホストのIPアドレスを入力してください。pingベースの監視であっても、整理整頓に役立ちます。
テンプレートタブで、選択 をクリックし、テンプレートモジュール ICMP Pingを見つけて追加し、追加をクリックして確定します。簡単ですよね?
保存したら、「監視」 → 「最新データ」で状況を確認してください。新しいホストを選択し、「最終値」列でpingが返ってくるか、警告アイコンが表示されているかを確認してください。また、応答時間などの特定の指標をグラフ化して、ネットワークの健全性を視覚的に把握することもできます。
pingが機能しない場合は、エラーが表示されるか、データが取得できません。通常は、ファイアウォールのルールまたはpingのパスを確認してください。Zabbixサーバーまたはエージェントを再起動するだけで問題が解決する場合もありますが、多くの場合、ファイアウォールまたはネットワークの問題です。
とはいえ、ICMP pingはあくまでも始まりに過ぎません。デバイスの健全性についてより詳しい情報が必要な場合は、SNMPまたはZabbixエージェントの設定を検討する価値があります。しかし、手軽なチェックであれば、これが依然として最も簡単な方法です。