![CentOS: リモート サーバー上の nrpe/snmp エージェントからの出力を読み取ることができません。ローカルでは動作しますが、何が間違っているのでしょうか?](https://rvso.com/image/617262/CentOS%3A%20%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%20%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E4%B8%8A%E3%81%AE%20nrpe%2Fsnmp%20%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%81%8B%E3%82%89%E3%81%AE%E5%87%BA%E5%8A%9B%E3%82%92%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%A7%E3%81%AF%E5%8B%95%E4%BD%9C%E3%81%97%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E4%BD%95%E3%81%8C%E9%96%93%E9%81%95%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F.png)
Nagios でこのサーバーを監視したいので、いくつかのサーバーに NRPE と SNMP をインストールしました。すでに適切に実行されているチェックがいくつかあり、意図したとおりの出力が得られます。今日、サーバーcheck_ifstatus
の 1 つにあるネットワーク インターフェイス カードの状態を監視するために、Nagios コマンドをインストールしました。サーバー上でローカルにmysql
実行しているときに、関連情報を正しく取得します。check_ifstatus
[root@dbr4 nagios]# /usr/lib64/nagios/plugins/check_ifstatus -H localhost
OK: host 'localhost', interfaces up: 4, down: 0, dormant: 0, excluded: 0, unused: 0 |up=4,down=0,dormant=0,excluded=0,unused=0
[root@dbr4 nagios]#
しかし、Nagios サーバーからコマンドを実行すると、次のエラーが発生します。
[root@monitorvm ~]# /usr/lib64/nagios/plugins/check_ifstatus -H amadbr4
CRITICAL: No response from remote host 'dbr4' for 1.3.6.1.2.1.2.2.1.8 with snmp version 1
[root@monitorvm ~]#
チェックしたいサーバーで snmp を有効にする必要があるということですか? このチェックを実行するために NRPE を使用する方法はありますか? SELINUX はすべてのマシンで無効になっています。
答え1
なぜ NRPE を使用して SNMP 経由でチェックするのですか? snmp が外部インターフェイスでリッスンしていると仮定すると、Nagios ボックスから直接確認できます (netstat のコメントから判断すると、間違ったポートを探しているにもかかわらず、これを望んでいるようです)。
SSL サポートなしで NRPE をコンパイルしていない限り、-n を使用しないでください。
(また、-p 5666デフォルトなので、-t 10。
- Nagios ボックスの IP が allowed_hosts リストに含まれていることを確認します。
- 引数なしで「check_nrpe -H dbr4」を実行して、NRPEデーモンと通信できるかどうかを確認します。NRPEのバージョン番号が返されるはずです。
- nrpe.cfg の「command[check_ifstatus]」行が手動テストと一致していることを確認します。
答え2
Keith の回答が最も正確です。SNMP チェックを行うために NRPE を使用する必要はなく、不必要な複雑さが追加されます。
getenforce
とはいえ、 SELinux がオフになっていることがわかっている場合を除いて、ここで最も可能性が高い問題は SELinux です。NRPE ホストで実行します。「Enforcing」と表示されている場合、SELinux は有効になっています。SELinux が有効になっている場合は、 check_nrpe
Nagios ホストからコマンドを実行し、/var/log/audit/audit.log
NRPE ホストで確認します。「type=AVC」で「avc: denied」と表示されている行がある場合は、SELinux の制限に違反している可能性があります。
これを回避する簡単な方法は、編集して に/etc/selinux/config
設定してSELinux をオフSELINUX
にすることですpermissive
(このシステムで将来的に SELinux を再度有効にする予定がある場合) または に設定してdisabled
(このシステムで SELinux を再度実行しないことが確実な場合)。もちろん、これを行うと SELinux の利点が失われます。
プラグインの SELinux コンテキストを変更することで、この問題を解決できる可能性がありますcheck_ifstatus
。 でコンテキストを確認できますls -Z
。私のシステム (標準ターゲット ポリシーを使用) では、コンテキストは "system_u:object_r:nagios_system_plugin_exec_t:s0" で、その "nagios_system_plugin_exec_t" が重要な部分です。 で "nagios_system_plugin_exec_t" に設定してもchcon -t nagios_system_plugin_exec_t check_ifstatus
機能しない場合は、"nagios_unconfined_plugin_exec_t" で試してみてください。これらの変更のいずれかが機能する場合は、 で永続化する必要がありますsemanage fcontext -a -t nagios_system_plugin_exec_t '/usr/lib(64)?/nagios/plugins/check_ifstatus'
。
どれもうまくいかない場合は、ループバック アドレスを使用するプロセスに対する制限に遭遇している可能性があり、AVC メッセージを確認して独自の SELinux ポリシーを作成する必要があります。私はまだ十分な経験がないのでアドバイスは提供できませんが (「Nagios ホストから直接 SNMP をチェックしてください。それが SNMP の目的です」以外)、これを行う方法についての参考資料がオンラインでいくつかあります。SELinuxaudit2allow
ポリシーの適応プロセスに役立つ を調べるとよいでしょう。