zabbix时间监控
Posted 运维讲堂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix时间监控相关的知识,希望对你有一定的参考价值。
本次使用的是zabbix server的外部命令监控,也就是说执行脚本监控的动作是由zabbixserver来做的.所以我们需要将脚本放置到zabbix server指定的目/usr/lib/zabbix/externalscripts/下.
check_time.py
#!/usr/bin/env python
#--*--coding:utf-8--*--
#Author:jacky
from datetime import datetime
import time
import sys
import subprocess
agent=sys.argv[1]
oid=".1.3.6.1.2.1.25.1.2.0"
fail=-1 #返回agent超时值
timeout=2 #设置超值阀值
sleep_time=0.1 #while循环频率
def get_agent_time(cmd, timeout=60):
p= subprocess.Popen(cmd, stderr=subprocess.STDOUT, stdout=subprocess.PIPE,shell=True)
t_beginning = time.time()
seconds_passed = 0
while True:
if p.poll() is not None:
break
seconds_passed = time.time() - t_beginning
if timeout and seconds_passed > timeout:
p.terminate()
return fail
time.sleep(sleep_time)
return p.stdout.read()
def unix_time(arg_time):
un_time = time.mktime(arg_time.timetuple())
return un_time
defdif_time(current_time_ux,agent_time_ux):
return abs(int(current_time_ux) - int(agent_time_ux))
if __name__ == "__main__":
res = get_agent_time(cmd='/usr/bin/snmpget -v 2c -c opdevos {0}{1}'.format(agent,oid),timeout=timeout)
if res != fail:
agent_time = res.split(" ")[3].replace(",","").split(".")[0]
agent_time = datetime.strptime(agent_time, '%Y-%m-%d %H:%M:%S')
agent_time_ux = unix_time(agent_time)
now_time = datetime.now()
current_time_ux=unix_time(now_time)
print dif_time(current_time_ux,agent_time_ux)
else:
print res
将其脚本放到zabbix server下的/usr/lib/zabbix/externalscripts/目录
在zabbix server下手动执行脚本测试下.
看到没,121这台机器与zabbix server时间偏差202秒左右,122这台机器因为snmp没有配置对,所以返回了我定义的-1值,这样对与写triiger比较方便判断.
创建一个名为Windows_snmp_time_check模板,添加一个item
添加一个snmp主机
查看Latest data和graph
接下来就需要设置trigger报警了.
过一会在Dashboard中就可以看到问题了.
至此结束.
以上是关于zabbix时间监控的主要内容,如果未能解决你的问题,请参考以下文章