zabbix中有自帶對linux伺服器時間進行監控的模板,用的key是system.localtime返回當前的系統時間,而配置tigger報警時是用的fuzzytime(N)方法,該方法是將返回的系統時間與監控伺服器的時間進行對比,如果大於N,則報警。 存在一下3個問題: 1、監控伺服器並不一定是 ...
zabbix中有自帶對linux伺服器時間進行監控的模板,用的key是system.localtime返回當前的系統時間,而配置tigger報警時是用的fuzzytime(N)方法,該方法是將返回的系統時間與監控伺服器的時間進行對比,如果大於N,則報警。
存在一下3個問題:
1、監控伺服器並不一定是ntp伺服器:這種情況下也就說是系統時間是與非NTP伺服器對比的時間。
2、取到被監控系統的時間,然後再返回給監控伺服器,當監控項數量大,或監控出現延時隊列的時候。就會產生誤報。
3、對於windows server伺服器沒有相應的模版。
正好業務上有一批搭載系統為windows server的伺服器,而業務對時間要求比較高。
下麵是我的解決辦法:
第一,利用下麵的bat腳本設置windos時間同步伺服器
@echo off
@REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Parameters /v NtpServer /t REG_SZ /d "10.13.255.1,0x9\0 10.13.255.2,0x9\0 0.cn.pool.ntp.org,0x9" /f
@echo off
@REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Parameters /v Type /t REG_SZ /d NTP /f
@echo off
echo ------------------------------------
@echo off
REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpClient /v SpecialPollInterval /t REG_DWORD /d 60 /f
@echo off
REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Config /v MaxAllowPhaseOffset /t REG_DWORD /d 3600 /f
@echo off
REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Config /v MaxNegPhaseCorrection /t REG_DWORD /d 3600 /f
@echo off
REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Config /v MaxPosPhaseCorrection /t REG_DWORD /d 3600 /f
@echo off
REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Config /v PhaseCorrectRate /t REG_DWORD /d 7 /f
@echo off
REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Config /v MinPollInterval /t REG_DWORD /d 3 /f
@echo off
REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Config /v MaxPollInterval /t REG_DWORD /d 4 /f
@echo off
sc triggerinfo w32time start/networkon
@echo off
gpupdate /force
@echo off
w32tm /resync
@echo off
net stop w32time
net start w32time
說明:
"10.13.255.1,0x9\0 10.13.255.2,0x9\0 0.cn.pool.ntp.org,0x9"
以上地址只適用於本人的托管機房
第二編寫用於對比時間的python腳本
#!/usr/bin/env python
# -*- coding:UTF-8 -*-
import time
import ntplib
def get_time():
ntp_client = ntplib.NTPClient()
response = ntp_client.request('s2g.time.edu.cn')
wtime = time.strftime('%Y%m%d%H%M%S', time.localtime(response.tx_time))
return wtime
if __name__ == '__main__':
networktime = get_time()
local_time = time.strftime('%Y%m%d%H%M%S')
difference = abs(int(networktime) - int(local_time))
print difference
windows下可以使用pyinstaller打包成exe可執行文件
第三在zabbix_agentd.conf中添加自定義的key
UserParameter=custom.timediff.count,"D:\bat\get_time.exe"
重啟zabbix服務
第四添加監控和觸發器,本人設置當時間不一致超過3秒就出發報警。
這個,相信大家都會,就不多說了
第五觸發報警後,可在伺服器上執行
同步時間
w32tm /resync