MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > linux / 正文

利用Zabbix监控系统监测Linux服务器系统时间是否准确完美实现

2024-11-26 15:29 huorong linux 4 ℃ 0 评论

服务器时间校准是非常重要的,因为很多应用服务都是需要基于时间的,服务器系统时间如果不准确的话就会产生很多问题。虽然我们可以通过部署NTP时间服务器来进行校准,但是有时候感觉还不够保险,而这往往也是很多运维人员忽视的一个地方,认为有NTP校准就万事大吉了,殊不知某种原因会导致服务器的时间仍旧会偏差很大。因此我们最好的办法还是应该把服务器系统时间监测一下,当时间偏差超过我们设置的范围时发送告警通知我们,这样我们才能及时发现问题并进行处理。


我们利用Zabbix监控系统对一台Linux服务器系统时间进行监测。

1.登录Zabbix Web界面,点击配置->主机->创建监控项。键值选择“system.localtime”获取系统时间,默认获取到的值为从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数。可设置单位“unixtime” , 转换为 “yyyy.mm.dd hh:mm:ss”格式。然后可根据实际情况设置自定义监测时间间隔。


2.创建触发器。选择函数为“fuzzytime”,当服务器时间与Zabbix Server之间的时间相差10秒以上时触发告警。



3.查看最新数据,可以获取到这台Linux服务器的时间。


4.测试。登录到这台Linux服务器使用“date”命令设置时间,使之与Zabbix Server服务器时间相差大于10s,此时成功收到触发告警的邮件,测试成功。


这个Zabbix自带的fuzzytime函数是与Zabbix Server服务器时间去进行比较,我们最好的方式当然是去与NTP时间服务器去比较了。如果NTP服务器与Zabbix Server是同一台服务器那这样就解决了。但是大多情况下NTP服务器为另外的一台服务器,那么我们怎么去创建监控呢?大致思路是被监控的Linux主机获取到远程NTP服务器的时间,然后与自己的本地时间进行比较。Linux服务器的话就可以通过编写一个shell脚本,然后通过Zabbix自定义参数监控去实现了。

1.登录到NTP服务器上,安装xinetd服务,这样远程主机就可以通过rdate命令获取到NTP服务器的时间了。

yum install -y xinetd

修改“/etc/xinetd.d/time-stream”配置。“disable = yes”改为“disable = no”。

启动xinetd。

systemctl start xinetd

2.登录到被监控Linux服务器上,测试使用rdate命令可以获取到NTP服务器的时间值。并使用如下命令将从NTP服务器获取到的时间转换成从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数。

date --date="`rdate 192.168.52.100|sed q|sed 's/^.*]\ *//g'`" '+%s'


本机获取时间值的命令,也转换为以上格式。

date '+%s'

这样我们就可以编写一个shell脚本来比较这两个时间值了。

# vi /usr/share/shell/timediff.sh

#!/bin/sh

NTPTIME=$(date --date="$(rdate 192.168.52.100 | sed q | sed 's/^.*]\ *//g')" '+%s')

LOCALTIME=$(date '+%s')

if [ $NTPTIME -ge $LOCALTIME ]

then

TIMEDIFF=$(($NTPTIME-$LOCALTIME))

echo "$TIMEDIFF"

else

TIMEDIFF=$(($LOCALTIME-$NTPTIME))

echo "$TIMEDIFF"

fi

赋予脚本可执行权限。

chmod +x /usr/share/shell/timediff.sh

3.编辑zabbix agent配置文件,创建一个用户自定义键值,用来获取这两个时间的差值。

vi /etc/zabbix/zabbix_agentd.conf

UserParameter=checktime,sh /usr/share/shell/timediff.sh


配置完成重启Zabbix Agent。

systemctl restart zabbix-agent

4.登录到Zabbix Web界面。创建监控项,键值这里手工输入创建的自定义键值。


5.创建触发器。比如当与NTP服务的时间差值大于10s时,触发告警通知我们。



6. 测试。使用“date”命令改变时间,使之与NTP服务器时间相差大于10s,此时成功收到触发告警的邮件,测试成功。


这样我们利用Zabbix监测Linux系统时间就完成了,下期为大家带来监测Windows系统时间,Widows系统可以使用Python编写一个可执行程序去实现,欢迎大家关注!另外如果有同学需要全面地学习Zabbix监控系统可以订阅我的专栏课程咯~


Tags:linux获取系统时间

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言