• Python 操作Zabbix API 获取ERROR级别告警信息并打印


    1.需求:有一个语音合成播报项目,要实时获取zabbix的ERROR级别以上告警信息,将该信息合成语音播报出去。(合成语音及播报已经完成)

    2.现实:整理zabbix告警级别,将不太重要的告警放到ERROR级别以下,将重点信息设置为ERROR级别,然后通过zabbbix api获取。

    3.简单实现:

    #!/usr/bin/env python
    #coding:utf-8
    import json
    import urllib2
    from urllib2 import URLError
    import sys
    zabbix_addresses=['http://www.baidu.com/zabbix,Admin,Admin]
    class ZabbixTools:
        def __init__(self,address,username,password):
    
            self.address = address
            self.username = username
            self.password = password
    
            self.url = '%s/api_jsonrpc.php' % self.address
            self.header = {"Content-Type":"application/json"}
    
    
    
        def user_login(self):
            data = json.dumps({
                               "jsonrpc": "2.0",
                               "method": "user.login",
                               "params": {
                                          "user": self.username,
                                          "password": self.password
                                          },
                               "id": 0
                               })
    
            request = urllib2.Request(self.url, data)
            for key in self.header:
                request.add_header(key, self.header[key])
    
            try:
                result = urllib2.urlopen(request)
            except URLError as e:
                print "Auth Failed, please Check your name and password:", e.code
            else:
                response = json.loads(result.read())
                result.close()
                #print response['result']
                self.authID = response['result']
                return self.authID
    
        def trigger_get(self):
            data = json.dumps({
                               "jsonrpc":"2.0",
                               "method":"trigger.get",
                               "params": {
                                          "output": [
                                                    "triggerid",
                                                    "description",
                                                    "priority"
                                                    ],
                                          "filter": {
                                                     "value": 1
                                                     },
                                          "sortfield": "priority",
                                          "sortorder": "DESC",
                                          "min_severity": 4,
                                          "skipDependent": 1,
                                          "monitored": 1,
                                          "active": 1,
                                          "expandDescription": 1,
                                          "selectHosts": ['host'],
                                          "selectGroups": ['name'],
                                          "only_true": 1
                                        },
                               "auth": self.user_login(),
                               "id":1              
            })
    
            request = urllib2.Request(self.url, data)
            for key in self.header:
                request.add_header(key, self.header[key])
    
            try:
                result = urllib2.urlopen(request)
            except URLError as e:
                print "Error as ", e
            else:
                response = json.loads(result.read())
                result.close()
                issues = response['result']
                content = ''
                if issues:
                    for line in issues:
                        #content = content + "%s:%s:%s
    " % (line['groups'],line['hosts'],line['description'])
                 content = content + "%s
    " % (line['description'])
    #                    print line
                return content
    
    if __name__ == "__main__":
        for zabbix_addres in zabbix_addresses:
            address,username,password = zabbix_addres.split(',')
            z = ZabbixTools(address=address, username=username, password=password)
            content = z.trigger_get()
        print    content
     

    #!/usr/bin/env python
    #coding:utf-8
    import json
    import urllib2
    from urllib2 import URLError
    import sys
    zabbix_addresses=['http://www.aliyun.com/zabbix,Admin,Admin]
    class ZabbixTools:
        def __init__(self,address,username,password):
    
            self.address = address
            self.username = username
            self.password = password
    
            self.url = '%s/api_jsonrpc.php' % self.address
            self.header = {"Content-Type":"application/json"}
    
    
    
        def user_login(self):
            data = json.dumps({
                               "jsonrpc": "2.0",
                               "method": "user.login",
                               "params": {
                                          "user": self.username,
                                          "password": self.password
                                          },
                               "id": 0
                               })
    
            request = urllib2.Request(self.url, data)
            for key in self.header:
                request.add_header(key, self.header[key])
    
            try:
                result = urllib2.urlopen(request)
            except URLError as e:
                print "Auth Failed, please Check your name and password:", e.code
            else:
                response = json.loads(result.read())
                result.close()
                #print response['result']
                self.authID = response['result']
                return self.authID
    
        def trigger_get(self):
            data = json.dumps({
                               "jsonrpc":"2.0",
                               "method":"trigger.get",
                               "params": {
                                          "output": [
                                                    "triggerid",
                                                    "description",
                                                    "priority"
                                                    ],
                                          "filter": {
                                                     "value": 1
                                                     },
                                          "sortfield": "priority",
                                          "sortorder": "DESC",
                                          "min_severity": 4,
                                          "skipDependent": 1,
                                          "monitored": 1,
                                          "active": 1,
                                          "expandDescription": 1,
                                          "selectHosts": ['host'],
                                          "selectGroups": ['name'],
                                          "only_true": 1
                                        },
                               "auth": self.user_login(),
                               "id":1              
            })
    
            request = urllib2.Request(self.url, data)
            for key in self.header:
                request.add_header(key, self.header[key])
    
            try:
                result = urllib2.urlopen(request)
            except URLError as e:
                print "Error as ", e
            else:
                response = json.loads(result.read())
                result.close()
                issues = response['result']
                content = ''
                if issues:
                    for line in issues:
                        #content = content + "%s:%s:%s
    " % (line['groups'],line['hosts'],line['description'])
                 content = content + "%s
    " % (line['description'])
    #                    print line
                return content
    
    if __name__ == "__main__":
        for zabbix_addres in zabbix_addresses:
            address,username,password = zabbix_addres.split(',')
            z = ZabbixTools(address=address, username=username, password=password)
            content = z.trigger_get()
        print    conten
    http://www.cnblogs.com/Jame-mei
  • 相关阅读:
    [Linux]-Nginx平滑升级
    [Linux]-部署PXE网络装机
    [Linux]--构建DR模式的LVS群集
    [Linux]--构建NAT模式的LVS群集
    [Linux]-Apache,awstats部署
    [Linux]-部署Nginx Apache动静分离
    [Linux]-Rsync同步
    Vue.js内部运行机制(一)
    JS类数组对象及如何转变为真正的数组
    JS、TS中的符号表达式
  • 原文地址:https://www.cnblogs.com/Jame-mei/p/11942687.html
Copyright © 2020-2023  润新知