我有几个(比如说 40 个)工作站和服务器,它们使用 Ansible 在拉取配置中进行配置。每台机器都有一个 cron 作业,用于ansible-pull
拉取 git 存储库并将其应用到主机本身。结果目前通过电子邮件发送到我的帐户。
在电子邮件中,我必须检查某些主机是否在当天没有发送电子邮件,以确定它们是否只是关闭了或存在其他问题。如果缺少一台机器,我会尝试通过 SSH 连接。如果它已关闭,那就没问题。否则,我会尝试解决问题。
几天前,我在一台服务器上安装了 Nagios,以便概览机器。通过 ping 和 SSH 设置监控非常简单,现在我可以看到哪些机器处于运行状态,哪些处于停机状态。
现在我想以某种方式监控 Nagios 中的 Ansible 状态。我没有在 Nagios Exchange 上找到直接插件,所以我有以下想法:
将输出写入
ansible-pull
带有时间戳的日志文件,然后让 Nagios 主机从机器中检索所有日志。然后它需要检查最后一个时间戳是否不早于 24+X 小时,其中 X 是某个范围,例如 1 小时。将所有内容转换回推送架构,并
ansible-playbook
在基础设施服务器上运行。然后这会创建一些文件,我在那里有一个概述,Nagios 可能会以某种方式解析它。将我们的配置管理移植到 Puppet,因为它似乎内置了一些监控功能,并使用它来代替 Nagios。
购买 Ansible Tower 可能是一个解决方案,但买不起。到目前为止,只有当工作站挂起时,人们才会来我的办公室,所以我们实际上不需要监控系统。我只想用免费软件来做这件事。
从目前的设置来看,第一个选项似乎是最简单的,我只是不确定合理的实现方式是什么。如果答案能为我提供实现的粗略轮廓以及指向 Nagios 所需插件的指针,我将不胜感激。
答案1
为此,您可以使用某种形式或远程命令执行。Icinga2 代理、NRPE 或 SSH,并将检查可执行文件放在机器本身上。它将在本地进行检查并仅返回检查输出。