在通过Zabbix监控chrony时间源前,需要了解chronyc sources状态,因为本文监控是基于Centos7、chronyc sources结果来判断,理论适用于其它版本系统。
在chronyc sources命令的输出中,S列中的 * 表示该源是当前被选为同步的时间源。这意味着系统正在使用这个时间源来同步时间。但是,等于 * 并不一定意味着时间完全没有问题,不等于 * 也不意味着时间有问题。
如:
时间质量:当S列显示 * 时,表示该源被认为是最好的时间源,系统正在使用它进行时间同步,但是时间的准确性和质量也可能受到多种因素的影响,不能100%保证时间正常。例如网络延迟、源的稳定性等。
其它因素:即使当前时间源未被选为同步源(不显示 * ),也可能是由于网络延迟或其他因素,此时系统本身的时间并不一定有问题。
特别注意,本文监控的是时间源,并不是时间,但是相对来讲,chronyc sources状态S列等于 * 可以认为时间正常。
1、zabbix安装
确保当前已安装了zabbix环境,理论适用于zabbix其它版本,这里不再阐述zabbix安装过程。
2、自定义zabbix键值
确保/etc/zabbix/zabbix_agentd.conf中存在Include=/etc/zabbix/zabbix_agentd.d/*.conf配置项。
创建自定义键值
vi /etc/zabbix/zabbix_agentd.d/chronyc_sources.conf
|---|-----------------------------------------------------| | 1 | vi /etc/zabbix/zabbix_agentd.d/chronyc_sources.conf |
我这里定义为chronyc.sources,其中chronyc.sources名字可自行更改,后面的语句就是一个shell脚本,表示查找S列字段中是否存在 * ,如果存在,结果返回1。
UserParameter=chronyc.sources,chronyc sources | awk 'NR > 3 {print $1}' | cut -c 2 | grep '*' | wc -l
|---|-------------------------------------------------------------------------------------------------------------| | 1 | UserParameter=chronyc.sources,chronyc sources | awk 'NR > 3 {print $1}' | cut -c 2 | grep '*' | wc -l |
3、重启zabbix-agent
systemctl restart zabbix-agent
|---|--------------------------------| | 1 | systemctl restart zabbix-agent |
此时zabbix-agent就配置好了,如果开启了防火墙,请注意放行相关端口。
4、zabbix-server验证
在zabbix-server服务器上通过zabbix_get命令,验证刚刚配置的键值是否正常,这里的IP为zabbix-agent的IP地址。
zabbix_get -s IP -p 10050 -k chronyc.sources
|---|----------------------------------------------| | 1 | zabbix_get -s IP -p 10050 -k chronyc.sources |
如果一切正常,会返回1。
5、zabbix-server仪表盘配置
在zabbix-server仪表盘中,创建监控项(或自行配置模板)。
注意:此处键值chronyc.sources与之前在agent中配置的键一定要一致。
配置触发器
在表达式中添加,选择刚刚的监控项,当不等于1时,时间源异常,等于1时,时间源正常。