更高效的SSL证书监控方案

2020-06-12 15:09:25 浏览数 (1)

上篇文章"简单脚本监控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中添加

如果觉得有用,请关注、转发、在看三连!!!

0 人点赞