加入收藏 | 设为首页 | 会员中心 | 我要投稿 成都站长网 (https://www.028zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 系统 > 正文

c# 差值 获取时间_利用Zabbix监控系统监测Linux服务器系统时间是否准

发布时间:2022-09-30 16:30:37 所属栏目:系统 来源:未知
导读: 服务器时间校准是非常重要的,因为很多应用服务都是需要基于时间的,服务器系统时间如果不准确的话就会产生很多问题。虽然我们可以通过部署NTP时间服务器来进行校准,但是有时候感觉还不够

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

7883663220eff5f3e5cd12257cc8634f.png

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

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

0ffeaf5636eca633934284144ddd0f1c.png

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

3d03a1eef394f98161688dd4d2f8838a.png

4b7d300c44023996e377cc08ddd54451.png

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

79063b8c5bed895cbac468656f694e66.png

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

53d1463991102843aa78a74ee250fb07.png

这个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界面。创建监控项,键值这里手工输入创建的自定义键值。

9dce89ff7f7ac8793fd57bb07995909e.png

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

4b18f03286c446cdb5c7c0c0c0153ce6.png

0f6635e529903f90e1dbd9539b431e53.png

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

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

(编辑:成都站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!