Zabbix 5.0:通过LLD方式自动化监控阿里云RDS

Blog:博客园 个人
之前做了RDS监控,由于 RDS 实例数量增多,手动添加的方式已经不够效率,故改为LLD(Low-level discovery)方式做监控。

什么是LLD

LLD(Low-level discovery),即低级发现,提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法。例如,Zabbix可以在你的机器上自动开始监控文件系统或网络接口,而无需为每个文件系统或网络接口手动创建监控项。此外,可以配置Zabbix根据定期执行发现后的得到实际结果,来移除不需要的监控。

用户可以自己定义发现类型,只要它们遵循特定的JSON协议。

采集数据脚本

调用阿里云Api,采集RDS相关数据,相关配置可参考之前的文章,采集脚本略。

需要将Api返回的数据处理,将字段修改为{#MACRO} 形式的LLD宏,最后生成json格式的数据:

例如:

[{
	"{#DBINSTANCEID}": "rr-XXX",
	"{#DBNAME}": "XXX"
}, {
	"{#DBINSTANCEID}": "rm-XXX",
	"{#DBNAME}": "XXX"
}, {
	"{#DBINSTANCEID}": "rm-XXX",
	"{#DBNAME}": "XXX"
}]

说明:

  • {#DBINSTANCEID}:RDS实例ID
  • {#DBNAME}:RDS实例名称

Tips:LLD宏必须大写,否则会报错。

配置模板

新建模板,创建自动发现规则:

image-20220706153747443

说明:

参数 说明
名称 规则名称
类型 发现的检查类型
键值 可以是内置键值,也可以是自定义
更新间隔 执行发现的时间间隔
自定义时间间隔 非必选, 灵活:允许重定义默认更新间隔,调度:可以使监控项在特定时间或时间序列生效
资源周期不足 资源失效时间,若资源失效则删除,如果设置为“0”,将立即删除实体。不建议使用“0”

创建监控原型:

image-20220706161720897

创建触发器原型:

image-20220706161842672

创建图形原型:

image-20220706161936662

以此类推,把需要监控的项目都加上去。

查看效果:

image-20220706162706844

总结

LLD方式,大大减轻了人为添加监控的负担,RDS实例的变更也不需要人为去增删监控,真正做到自动化监控。

但也带来一些问题,比如性能问题,实例越多,监控原型越多,同时执行的监控采集脚本进程就越多,服务器的负载压力越大,而且频繁调用阿里云Api也会带来一些费用成本。

因此,这个监控方案仅限于阿里云RDS实例数量不太多的场景。若实例数量很多,可以考虑增加缓存,一次性读取数据,将数据存于缓存,然后监控客户端从缓存中读取数据,减少调用采集脚本的频率。

张贴在2