zabbix監控服務器時間問題


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腳本

import time
import ntplib
import sys
import os


def main():
try:
ntp_client = ntplib.NTPClient()
response = ntp_client.request('s2g.time.edu.cn')
ntp_timeStamp = response.tx_time
ntp_date = time.strftime('%Y-%m-%d', time.localtime(ntp_timeStamp))
ntp_time = time.strftime('%X', time.localtime(ntp_timeStamp))
except:
print u'無法獲取到s2g.time.edu.cn上面的時間戳'
sys.exit()

'''獲取本地服務器時間戳'''
local_timeStamp = time.time()

'''獲取之間的差值'''
diff = abs(ntp_timeStamp - local_timeStamp)
print diff

if __name__ == '__main__':
main()

windows下可以使用pyinstaller打包成exe可執行文件

 

第三在zabbix_agentd.conf中添加自定義的key

UserParameter=custom.timediff.count,"D:\bat\get_time.exe"

重啟zabbix服務

 

第四添加監控和觸發器,本人設置當時間不一致超過3秒就出發報警。

這個,相信大家都會,就不多說了

第五觸發報警后,可在服務器上執行

同步時間

w32tm /resync

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM