Icinga2サーバーを構成していて、 check_by_sshプラグインを使用して外部マシンでローカル スクリプトを実行したいのですが、奇妙な問題が発生しました。数時間答えを探しましたが、運がありません。
私のコマンドオブジェクトは次のようになります。
object CheckCommand "check_procs" {
import "by_ssh"
vars.by_ssh_logname = "root"
vars.by_ssh_port = "22"
vars.by_ssh_command = "/tmp/test.sh"
vars.by_ssh_identity = "/etc/icinga2/conf.d/services/id_rsa.pub"
vars.by_ssh_ipv4 = "true"
vars.by_ssh_quiet = "true"
}
の内容test.sh
は単純exit 0
です。Icinga ボックスと、コマンドを実行しているリモート マシンとの間に信頼関係があります。
シェル経由でコマンドを実行すると、機能します
[root@icinga ~]# ssh root@10.10.10.1 -C "/tmp/test.sh"
[root@icinga ~]# echo $?
0
しかし、サーバーによって実行されると、Icingaweb2に次の出力が表示されます。
不明 - check_by_ssh: リモート コマンド '/tmp/test.sh' がステータス 255 を返しました
touch success
スクリプトが実行されるかどうかを確認するために、 toスクリプトを追加しましたtest.sh
が、実行されていないようです。つまり、Icinga がスクリプトを実行すると、スクリプトを実行する前に失敗します。
それが何であるかの手がかりはありますか?オンラインでも、check_by_ssh
Icinga2 を使用した例はあまりありません。
注: Icinga は root ユーザーを使用してリモート サーバーを識別します。これがベストプラクティスではないことはわかっていますが、これは開発環境です。
更新:私は問題を発見したと思います。問題は、root ユーザーを使用してリモート マシンにログインしようとしていることです。公開鍵認証を使用しても、これはサポートされていません。スクリプトはユーザーで実行する必要があります
icinga
2 回目の更新: 動作するようになりました。問題はキー認証、icinga がユーザー icinga を使用してコマンドを実行するという事実 (by_ssh_logname 属性を使用している場合でも)、および追加
vars.by_ssh_options = "StrictHostKeyChecking no"