python实现对于告警规则的判断思路
场景
监控一个后台服务各个url的响应时间,需要在mysql数据库的一张表中设计一个字段需要包含且不仅限于以下一种规则(1. 大于 2. 小于 3. 大于等于 4. 小于等于),表结构大概是这样的

每个接口有不同的响应时间范围,超出这个范围就说明这个接口异常了,我们需要定义这个规则,并且能够让代码通过规则进行通知,刚开始的时候规则为 ">100,<200" 这种格式的,采用python中eval()这个方法,这样虽然勉强可以实现,但是eval不是很安全,所以放弃eval,经过研究测试,发现了另一个方法,就是采用python自带的getattr及operator
环境
python 3+
代码
import operator
def check_status(monitor_data: int, data: dict) -> list:
try:
data, result_list = data, []
for k, v in data.items():
f = getattr(operator, k)
result_list.append(f(monitor_data, v))
return result_list
except Exception:
import traceback
print(traceback.format_exc())
check_status(1001, {"gt": 1000, "le": 2000})
解释
这段代码用到了内置模块operator及getattr内置方法
getattr() 函数用于返回一个对象属性值
getattr(object, name[, default])
我们可以将规则设定为{"gt": 1000, "le": 2000},字典中的key正好对应operator中gt,lt,ge,le四个方法,用getattr获取operator对象中的gt,lt,ge,le这四个方法进行判断,根据返回值,得到一个布尔值进行判断
python实现对于告警规则的判断思路的更多相关文章
- python入门(11)条件判断和循环
python入门(11)条件判断和循环 条件判断 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现: ag ...
- Python 入门(五)条件判断和循环
if语句 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,可以用if语句实现: age = 20 if age > ...
- Prometheus监控学习笔记之Prometheus 2.0 告警规则介绍
0x00 变化 Prometheus 2.0 已经发布一段时间了,从今天开始我将分几篇文章为大家介绍其中的一些变化. 此篇文章主要介绍 2.0 的告警规则声明的新写法. 从 1.x 到 2.0 规则声 ...
- python inspect 模块 和 types 模块 判断是否是方法,模块,函数等内置特殊属性
python inspect 模块 和 types 模块 判断是否是方法,模块,函数等内置特殊属性 inspect import inspect def fun(): pass inspect.ism ...
- python基础(二)条件判断、循环、格式化输出
继续上一篇,今天主要总结一下条件判断.循环.格式化输出 一.条件判断 python中条件判断使用if else来判断,多分支的话使用if elif ... else,也就是如果怎么怎么样就怎么怎么样, ...
- Prometheus 编写告警规则案例
Prometheus 编写告警规则案例 注:确保alertmanager配置完毕! 1.创建编辑文件:vim /usr/local/prometheus/rules/node.yml # groups ...
- Prometheus告警规则增删改自动化
Prometheus告警规则增删改自动化 前言: 随着容器技术的发展,zabbix监控方式与k8s的结合不完善,导致不得不放弃zabbix,而新的监控工具prometheus的使用就越来越多了.但是经 ...
- prometheus linux系统告警规则 实例
#prometheus linux系统告警规则 实例 #根据实际情况修改参数 #rules.linux.yml groups: - name: linux rules: - alert: Node-D ...
- 记录规则(recording rules)与告警规则(alerting rule)
记录规则(recording rules) 配置规则 Prometheus支持两种类型的规则,可以对其进行配置,然后定期进行评估:记录规则和警报规则.要在Prometheus中包含规则,请创建一个包含 ...
随机推荐
- matlab中wvtool
参考:https://ww2.mathworks.cn/help/signal/ref/wvtool.html?searchHighlight=wvtool&s_tid=doc_srchtit ...
- C语言中time_t数据类型详细介绍
包含文件:<time.h> #ifndef __TIME_T #define __TIME_T /* 避免重复定义 time_t */ typedef long time_ ...
- MQTT消息队列压力测试
环境准备: jmeter插件下载:mqttxmeter1.0.1jarwithdependencies.jar 把MQTT插件放在 %JMeter_Home%/lib/ext下.重启jmeter. M ...
- Create a cursor from hardcoded array instead of DB
https://stackoverflow.com/questions/18290864/create-a-cursor-from-hardcoded-array-instead-of-db Crea ...
- Python+Appium自动化测试(14)-yaml配置Desired capabilities
一,前言 在之前的appium自动化测试示例中,我们都是把构造driver实例对象的数据(即Desired Capabilities)写在业务代码里,如下: # -*- coding:utf-8 -* ...
- 多测师讲解python_函数调用方法__高级讲师肖sir
(一)函数的介绍 函数:一个工具,随调随用优点:# 降低代码冗余# 增加代码的复用性,提高开发效率# 提高程序扩展性# 函数有两个阶段:定义阶段,调用阶段.# 定义时:只检查函数体内代码语法,不执行 ...
- MeteoInfo 新网站
MeteoInfo特别是MeteoInfoLab的推广需要写大量详细的帮助文档和示例程序,MeteoInfo原先的网站使用最原始的编写.html文件的方式来更新,效率实在太低,最近学习了一下Sphin ...
- trade可撤销贪心正确性证明
鉴于tarde这道题正解过于好写,导致我对这个诡异的贪心的正确性产生了疑问,所以花了2h的时间与同机房神犇M-Blanca,Midoria7,goote~进行讨论,最后与goote~犇犇各得出了一个正 ...
- 【图论】USACO07NOV Cow Relays G
题目大意 洛谷链接 给定一张\(T\)条边的无向连通图,求从\(S\)到\(E\)经过\(N\)条边的最短路长度. 输入格式 第一行四个正整数\(N,T,S,E\),意义如题面所示. 接下来\(T\) ...
- 【状态压缩DP】HDU 4352 XHXJ'S LIS
题目大意 Vjudge链接 定义一个数的内部LIS长度表示这个数每个数位构成的序列的LIS长度,给出区间\([l,r]\),求区间内内部LIS长度为\(k\)的数的个数. 输入格式 第一行给出数据组数 ...