Icinga2 check_by_ssh插件返回255而不运行命令

时间:2017-08-14 14:23:47

标签: bash monitoring icinga2

我正在配置 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盒子和远程机器之间有信任,我正在运行命令。

当我通过shell执行命令时,它可以正常工作

[root@icinga ~]# ssh root@10.10.10.1 -C "/tmp/test.sh"
[root@icinga ~]# echo $?
0

但是当它由服务器执行时,我在 Icingaweb2 上看到了这个输出:

  

UNKNOWN - check_by_ssh:远程命令'/tmp/test.sh'返回状态255

现在我已经添加了touch successtest.sh脚本,以便查看它是否完全执行 - 但似乎没有。这意味着当Icinga执行我的脚本时,它甚至在执行之前就会失败。

有什么线索可以吗?在check_by_ssh和Icinga2之间没有很多在线示例。

注意: Icinga使用root用户识别远程服务器。我知道这不是最佳实践,但这是发展环境。

  

更新:我想我发现了这个问题。问题是我正在尝试使用root用户登录远程计算机。即使使用公钥认证,也不支持此功能。该脚本必须与用户icinga

一起执行      

第二次更新:我搞定了。问题是密钥验证,icinga使用用户icinga执行命令(即使使用by_ssh_logname属性)和添加vars.by_ssh_options = "StrictHostKeyChecking no"

2 个答案:

答案 0 :(得分:1)

我发现了这些问题,在我的案例中很少有这些问题。

  1. Icinga使用icinga用户通过SSH登录,即使我使用-l root。因此,要安装ssh密钥,我必须在ssh-copy-id icinga@HOST用户下执行root(Icinga shell设置为/ sbin / nologin)
  2. 然后我将私钥(再次,root用户)复制到icinga文件夹,以便应用程序可以访问它,并更改文件的所有权
  3. 接下来,我尝试使用icinga用户登录远程计算机sudo -u icinga ssh icinga@HOST -i id_rsa
  4. 如果第3步失败,您需要在继续之前先弄清楚。接下来我做的是将StrictHostKeyChecking no添加到模块选项中。
  5. Voila,现在有效。

答案 1 :(得分:0)

我的问题是所使用的rsa密钥文件并非由" nagios"用户:

-rw------- 1 nagios nagios 3.2K Nov 30 14:43 id_rsa
-rw-r--r-- 1 nagios nagios  766 Nov 30 14:42 id_rsa.pub