#!/usr/bin/env python # -*- coding: utf-8 -*- """ # # Authors: limanman # OsChina: http://xmdevops.blog.51cto.com/ # Purpose: # """ # 说明: 兼容绝对导入 from __future__ import absolute_import # 说明: 导入公共模块 import time import operator # 说明: 导入其它模块 from .alarm import alarm_template from .alarm.api import weixin_notify def avg(alarmtmplist, redis_key, trigg_key, trigg_val, errors): scope = {} realdata_lst = [] (service_name, converts_val, during_time, _, operator_val, compare_time, warnning_val, critical_val) = trigg_val convertsfunc = eval (converts_val, scope) warnning_val = convertsfunc(warnning_val) critical_val = convertsfunc(critical_val) datacate, host, plugin = redis_key.split( '::' ) operatorfunc = getattr (operator, operator_val) for cur_item in alarmtmplist: cur_item = convertsfunc(cur_item[ 'data' ][ 'target' ]) realdata_lst.append(cur_item) avg_realdata = sum (realdata_lst) / len (realdata_lst) warnning_res = operatorfunc(avg_realdata, warnning_val) critical_res = operatorfunc(avg_realdata, critical_val) msgtime = time.strftime( '%H:%M:%S' , time.localtime()) formats = 'PLUGIN(%s) DURINGTIME(%s) COMPARETIMES(%s) AVG(%s) OPERATION(%s) TARGET(%s)' if critical_res: message = formats % (plugin, during_time, compare_time, avg_realdata, operator_val, critical_val) res_msg = alarm_template % (host, 'critical' , errors, msgtime, message) weixin_notify(res_msg) return if warnning_res: message = formats % (plugin, during_time, compare_time, avg_realdata, operator_val, warnning_val) res_msg = alarm_template % (host, 'warnning' , errors, msgtime, message) weixin_notify(res_msg) return |