【发布时间】:2017-08-14 14:23:46
【问题描述】:
我正在配置 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 上看到了这个输出:
未知 - check_by_ssh:远程命令“/tmp/test.sh”返回状态 255
现在我添加了一个 touch success 到 test.sh 脚本,以查看它是否被执行 - 但似乎没有。这意味着当 Icinga 执行我的脚本时,它甚至在执行之前就失败了。
有什么线索吗? check_by_ssh 和 Icinga2 的在线例子并不多。
注意: Icinga 使用 root 用户来识别远程服务器。我知道这不是最佳实践,但这是开发环境。
更新:我想我找到了问题所在。问题是我正在尝试使用 root 用户登录远程机器。这不受支持,即使使用公钥身份验证也是如此。该脚本必须与用户
icinga一起执行第二次更新:我得到了它的工作原理。问题是密钥身份验证,icinga 使用用户 icinga 执行命令的事实(即使使用 by_ssh_logname 属性)以及添加
vars.by_ssh_options = "StrictHostKeyChecking no"
【问题讨论】:
-
如果您找到解决方案,可以回答您自己的问题:stackoverflow.com/help/self-answer
标签: bash monitoring icinga2