上篇文章"简单脚本监控SSL证书,到期告警提醒"发布之后,不少朋友说项目少的情况还好,在zabbix中手动添加监控项和触发器就可以,但项目多的时候,一条一条添加,就有点不合适了
所以今天再介绍个方法,不用手动添加,不管你有多少项目,自动收集
这里用到的就是zabbix的自动发现规则,操作很简单,流程如下:
- 从web配置文件中获取域名
- 编写监控脚本,输出json格式
- 创建zabbix模板
- 添加自动发现规则
- 主机绑定模板
- 验证结果
1
获取域名
获取域名思路很简单,通常情况下,有证书的web配置,都监听443端口,所以可以通过python脚本,从web配置文件中,将监听了443端口的vhost中的ServerName字段拿到就可以了,当然,如果你监听的是其他端口,就通过其他端口去匹配,这里肯定是用正则去匹配
比如我要读取apache中配置了证书的vhost,我写的正则模型如下:
通过以上简单的一个脚本,我就拿到了配置文件下所有配置了证书的域名的一个列表,如果你是nginx,一样的方法,读取配置文件,获取listen是443端口的配置,拿到域名,至于怎么拿要具体看你nginx配置文件的写法,这里就不多说了
2
输出json格式
zabbix编写的脚本,要用于自动发现,输出格式必须为json格式,而且键一定要是data,所以通过python脚本,将第一步得到的ServerName格式化输出为json,脚本如下
这样经过格式化后输出的json,zabbix才能识别,在zabbix_server端通过zabbix_get获取数据测试
当然,能在server端获取到数据的前提是,将上面写好的脚本,添加到zabbix_agent配置中,添加为UserParameter
3
创建zabbix模板
上面添加玩玩脚本,从server端可以获取到数据之后,就可以在zabbix的web端添加模板了,配置——模板——创建模板
创建一个模板,模板名称自己定,其他的选项没有需要特别说明的,按自己的情况来
然后这个模板中,不需要创建任何东西,只需要创建自动发现规则
创建自动发现规则的时候,名称同样看自己(我比较土,就这么随意),类型要选zabbix客户端,键值比较重要,键值就是你在zabbix_agent中配置的UserParameter的key,也就是这个自动发现规则的数据,需要通过这个key来返回数据,或者说获取数据
添加完成后,就要开始添加监控项原型了
自动发现规则中,可以用自定义宏,从上面的脚本中可以看到,我把ServerName自定义为{#SERVERNAME},所以在添加监控项原型中可以使用该宏,名称和键值中通过使用该宏,动态获取要监控SSL的域名
这里名称也是自己定,用这种宏的方式,在告警的时候,可以更方便直观,键值这里用到的就是之前文章中的脚本,通过传{#SERVERNAME}获取到的域名给脚本,脚本返回证书到期时间
监控项原型添加完,就可以添加触发器类型了
这里是小于30天警告提醒
到这里zabbix模板就创建好了
4
主机绑定模板
主机绑定模板简单说下,上面模板配置好之后,选择要添加该模板的主机,在主机的模板中,链接刚才创建的模板就可以了
5
查看数据,验证结果
模板链接好之后,就可以通过监测中的最新数据查看返回结果了
当然,这个数据返回的时间,要根据你配置的模板中,更新间隔来定,开始测试,可以将时间设置短一点,测试没问题后,因为是SSL检测,不需要那么频繁检测,所以可以按天来设置更新间隔,减轻zabbix压力
上面模板链接后,如果数据没有返回,可以通过主机中的监控项中的状态和信息提示进行相应的调整
通过zabbix模板及自动发现,就可以很方便的自动监控添加的域名,不需要一个一个添加,也不用担心web中配置后,忘记在zabbix中添加
如果觉得有用,请关注、转发、在看三连!!!