我想通过我的 nagios 监控检查每个节点是否都使用 puppetmaster 提供的当前目录版本。
就我的情况来说,有:
- 木偶大师
- 主机1
- 主机2
- 主机X
我想创造核聚变在 host1、host2、hostX 上插入:
- 检查主机上的当前目录版本
- 检查为节点准备的当前目录版本木偶大师
- 如果两者不同,则发出警告
问题:
- 要在 puppetmaster 上检查目录版本,我可以运行 /production/catalog API 查询,但它非常昂贵(cpu)——因为每次我请求时都需要编译目录。
- 我看不到任何选项来检查节点上的当前目录版本。我尝试了 puppet catalog,但没有什么帮助。
所以我的问题是,如何监控 Puppet 代理的健康状况,并在任何主机使用旧 Puppet 目录时收到通知?这有意义吗?
答案1
我写了一个简单的检查木偶NRPE 脚本可以完成大部分你想要做的事情。它基于RI Pienaar 的original 比我需要的要多。在这两种情况下,我们都会解析 /var/lib/puppet/state/last_run_summary.yaml 来查看上次代理运行的状态。
当正常代理运行应提供足够的数据以正确发出警报时,我看不出使用第三个软件来比较主服务器和代理之间的目录版本的优势。
答案2
以下是我们的工作:
在我们的设置中,我们有一个围绕调用的包装脚本puppet agent --test
,它还检查一些环境设置,例如是否存在允许登录管理员暂时禁用自动化的“停止文件”。
在包装脚本中,每次 Puppet 代理以状态代码 0 退出时,我们都会触及状态文件 (/var/state/puppet-run)。
然后,我们跟踪这个文件的年龄,以确定它是否比 Puppet 运行间隔时间的 1.5 倍还要长。
答案3
正是这个问题激励我将其构建为一项服务,以便人们可以继续使用,而不必构建自己的监控工具。查看http://cronitor.io—— 一台显示器是免费的,并且有针对商业的付费计划。