统计zabbix 报警事件信息

使用zabbix的python api根据主机名过滤统计3天的报警的所有事件
  • 详细代码如下:
#-*- coding:utf-8 -*-
# python2.7
'''从zabbix 监控获取业务组报警的信息'''

import requests
import json
import time
import datetime
import re


server_url = "http://monitor.test.com:8000/api_jsonrpc.php"
header = {"Content-Type": "application/json"}
username = "admin"
password = "****"

def get_token():
‘’‘ 获取api 返回的token 值 ’‘’
    login_data = json.dumps({
        "jsonrpc": "2.0",
        "method": "user.login",
        "params": {
            'user': username,
            'password': password
        },
        "id": 0
    })
    response_auth = requests.post(server_url, data=login_data, headers=header)
    token = json.loads(response_auth.text)["result"]
    return  token


start_time_str = (datetime.datetime.now()+datetime.timedelta(days=-3)).strftime("%Y-%m-%d %H:%M")
end_time_str =  datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
# 转换为时间戳
start_time =  time.mktime(time.strptime(start_time_str,"%Y-%m-%d %H:%M"))
end_time = time.mktime(time.strptime(end_time_str,"%Y-%m-%d %H:%M"))

def get_alert():
    data = json.dumps(
        {"jsonrpc": "2.0", "method": "alert.get",
         "params": {"output": "extend",
                    "time_from":start_time,"time_till":end_time},
         "auth": get_token(),
         "id": 0}
    )
    responese = requests.post(server_url, data=data, headers=header)
    alter_list = responese.json()["result"]

    for item in alter_list:
        message = item["message"]
        messagestr = message.encode("utf-8")
        #print messagestr
        if messagestr != "Zabbix Server 心跳检测":
             messageDict = json.loads(messagestr)
             hostname = messageDict["hostname"]
             current_status = messageDict["current_status"]
             yw_hostname = re.findall(r"^yw.*|^sh1-yw.*|.*?yewu.*", hostname, re.I)
             message = re.findall(r"Zabbix agent.*|.*restarted.*|.*Hostname was changed.*|.*Host information.*",messageDict["message"],re.I)
             if len(yw_hostname) > 0 and not current_status.startswith("OK") and len(message) == 0:
                 print messageDict


if __name__ == "__main__":
      get_alert()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值