用来衡量zabbix server和proxy的update 性能,在数据delay比较严重的时候,update percent会比较低。可以做成item用来监控性能。

import MySQLdbimport sysimport timeclass dbUtil:        def __init__(self,host,user,passwd,db):                self.host = host                self.user = user                self.passwd = passwd                self.db = db        def db_connect(self):                self.conn = MySQLdb.connect(host=self.host,user=self.user,passwd=self.passwd,db=self.db)                self.cursor = self.conn.cursor()        def db_fetch_one(self,sql):                self.cursor.execute(sql)                try:                        result = float(self.cursor.fetchone()[0])                except:                        result = "-1"                return result        def db_close(self):                self.cursor.close()                self.conn.close()def getData(sql):        #print sql        conn = dbUtil(ip,user,password,db)        conn.db_connect()        re = conn.db_fetch_one(sql)        return re        conn.db_close()def getPercent(hostname):        if hostname == "server_hostname":                sql = """ select round(a.aa*100/b.bb,2) from      (select count(*) as aa from items        where lastclock > UNIX_TIMESTAMP()-1800 and delay < 900            and hostid in (select hostid from hosts where status=0)            and status = 0      ) a,      (select count(*) as bb from items        where delay < 900 and status = 0            and hostid in (select hostid from hosts where status=0)       ) b"""                print getData(sql)        else:                hostsql= "select hostid from hosts where host='%s'" % (hostname)                hostid = getData(hostsql)                sql = """ select round(a.aa*100/b.bb,2) from      (select count(*) as aa from items        where lastclock > UNIX_TIMESTAMP()-1800 and delay < 900            and hostid in (select hostid from hosts where status=0 and proxy_hostid = %s)            and status = 0      ) a,      (select count(*) as bb from items        where delay < 900 and status = 0            and hostid in (select hostid from hosts where status=0 and proxy_hostid = %s)       ) b""" % (hostid,hostid)                print getData(sql)if __name__ == "__main__":        hostname = sys.argv[1]        getPercent(hostname)

调用方法:

脚本 hostname.

监控配置文件:

UserParameter=zabbix_percent[*],python /apps/sh/zabbix_scripts/zabbix/zabbix_percent.py $1