Prometheus告警规则增删改自动化
Prometheus告警规则增删改自动化
前言:
随着容器技术的发展,zabbix监控方式与k8s的结合不完善,导致不得不放弃zabbix,而新的监控工具prometheus的使用就越来越多了。但是经过初步使用,发现prometheus过于原始,很多设置都要通过配置文件手动添加修改,本篇文章介绍我是如何解决prometheus的“原始”。
环境:
语言:python2.7
web框架:flask
简介:
Prometheus的告警设置是通过文件设置,在prometheus.yml配置文件中设置rule_files:
- /etc/prometheus/rules.d/*.yml
将所有告警规则文件放在/etc/prometheus/rules.d/目录下,所以我们控制告警的方式定为在此目录下写和修改文件即可。
1、添加告警规则
页面风格是仿照着prometheus的界面写的,有些颜色和位置大小不完全相同(调前端让人头疼)。
通过输入告警名称,表达式,持续时间,和描述来创建告警规则,模板是我先定死的,input框设置了disabled属性,告警内容通过报警脚本进行过滤。
主要技术:
此页面应用更多的都是基础的表单提交,没有什么难度,唯一添加的一些加强页面效果的操作是对input和select事件的处理,input告警内容的同时,右侧告警规则预览可以同时显示输入后的效果,如上图。
Js代码:
$("#rules_name").bind('input propertychange',function () {
var content = $("#rules_name").val();
var html = "- name: " + content + '_rules';
$("#name_rules").html(html);
var alerthtml = " - alert: " + content;
$("#alert_rules").html(alerthtml);
});
将input绑定了propertychange事件(rules_name是input标签的id),输入后input的value产生变化,同时刷新name_rules对应的id内容进行刷新,这样就能实时查看到输入内容后对应的配置文件。
最后是表单提交,后台将提交的信息写入文件中:
[root@localhost rules.d]# cat service_100000.yml
#{'name': 'service_100000_rule', 'alert': 'service_100000', 'expr': 'service_count>100000', '_for': '30s', 'level': 'disaster', 'summary': '告警主机和端口{{ $labels.instance }} 告警值:{{ $value }}', 'description': '业务量大于100000了,必须要告警了'}
groups:
- name: service_100000_rule
rules:
- alert: service_100000
expr: service_count>100000
for: 30s
labels:
level: "disaster"
service: "local-234"
annotations:
summary: "告警主机和端口{{ $labels.instance }} 告警值:{{ $value }}"
description: "业务量大于100000了,必须要告警了"
多了一个service_100000.yml文件,内容如上,第一行内容是用来记录参数的,用于之后的修改参数使用。
刷新prometheus配置之后发现,告警已经加载进来了
2、修改告警
修改告警规则应该是我们日常最多用到的,经常要修改阈值,首先,在选择框中会加载所有已经设置的rules规则,然后我们选中后(如果告警规则多之后,如何找到我们要修改的规则又是个问题,我是在select的基础上添加一个输入框,可以根据输入内容快速进行搜索,查找或者选择我们要修改的规则,如上图,输入ser就能弹出我们要找的规则),触发select事件:
$("#list_select_rules").change(function(){
var content=$("#list_select_rules").val();
jQuery.ajax({
type: "POST",
url: "/prometheus/getRulesDetail",
dataType: 'json',
data : {
"name": content
},
async: false,
error: function () {
alert("操作失败,请稍等片刻重新尝试,如仍有问题请联系管理员......");
return false;
},
success : function(result){
//{'name': '', 'alert': '', 'expr': '', '_for': '', 'level': '', 'summary': '', 'description': ''}
$("#name_rules").html("- name: " + result.alert + '_rules');
$("#alert_rules").html(" - alert: " + result.alert);
$("#rules_name").val(result.alert);
$("#expr_rules").html(" expr: " + result.expr);
$("#rules_expr").val(result.expr);
$("#time_rules").html(" for: " + result._for);
$("#rules_time").val(result._for);
$("#desc_rules").html(" level: " + result.description);
$("#rules_desc").val(result.description);
$("#select_rules").html(" level: " + result.level);
var add = $('#rules_select').val(result.level);
add.attr('selected',true);
}
})
});
选中select标签内容后触发js事件,将选中内容发送至后台,获取对应的告警规则信息(就是告警规则的第一行被注掉的信息),然后将input和右侧预览对应位置进行刷新,可以实现选中规则后,所有信息直接展示在前端,然后进行提交,后台进行文件修改,进而实现告警规则的修改。
3、删除
删除功能比较简单,和update一样,界面加载时,通过js将所有告警规则加载至select标签中,然后设置select事件,如上图,我选择了service_100000这个规则,后侧的告警预览就把这个告警规则信息展示出来了,js代码同上边的update事件代码。然后点击删除键,将选择的规则传入后台,直接删除文件即可。
至此,prometheus的告警规则的增删改就完成了。之后我还会慢慢优化,希望能实现像zabbix一样的效果。
代码位置:https://github.com/1182640071/AddRulesWeb
我的prometheus管理平台地址: https://blog.csdn.net/www199202/article/details/90728824
Prometheus告警规则增删改自动化的更多相关文章
- prometheus 告警规则
GitHub网址1 https://github.com/samber/awesome-prometheus-alerts 网址2 https://awesome-prometheus-alerts. ...
- prometheus告警规则模板:MySQL,nginx,node
rules_up.yml groups: - name: up rules: - alert: mysql expr: up{instance="db1",job="my ...
- Prometheus告警模型分析
Prometheus作为时下最为流行的开源监控系统,其庞大的生态体系:包括针对各种传统应用的Exporter,完整的二次开发工具链,与Kubernetes等主流平台的高度亲和以及由此带来的强大的自发现 ...
- 02 . Prometheus告警处理
Prometheus告警简介 告警能力在Prometheus的架构中被划分成两个独立的部分.如下所示,通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性的对告 ...
- Prometheus告警处理
在Prometheus Server中定义告警规则以及产生告警,Alertmanager组件则用于处理这些由Prometheus产生的告警.Alertmanager即Prometheus体系中告警的统 ...
- Prometheus监控学习笔记之Prometheus 2.0 告警规则介绍
0x00 变化 Prometheus 2.0 已经发布一段时间了,从今天开始我将分几篇文章为大家介绍其中的一些变化. 此篇文章主要介绍 2.0 的告警规则声明的新写法. 从 1.x 到 2.0 规则声 ...
- Prometheus 编写告警规则案例
Prometheus 编写告警规则案例 注:确保alertmanager配置完毕! 1.创建编辑文件:vim /usr/local/prometheus/rules/node.yml # groups ...
- prometheus linux系统告警规则 实例
#prometheus linux系统告警规则 实例 #根据实际情况修改参数 #rules.linux.yml groups: - name: linux rules: - alert: Node-D ...
- 实用干货丨如何使用Prometheus配置自定义告警规则
前 言 Prometheus是一个用于监控和告警的开源系统.一开始由Soundcloud开发,后来在2016年,它迁移到CNCF并且称为Kubernetes之后最流行的项目之一.从整个Linux服务器 ...
随机推荐
- Cookie中的HttpOnly
1.什么是HttpOnly? 如果您在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,具体一点的介绍请google进行搜索 2.ja ...
- React Native 开发豆瓣评分(四)集中管理 fetch 数据请求
豆瓣评分的API接口 接口是从网上查找的,看样子应该是微信小程序里面扣出来的(ua 里面有 wechatdevtools) 接口都需要设置apiKey(054022eaeae0b00e0fc068c0 ...
- React学习:状态(State) 和 属性(Props)
State 与 Props 区别props 是组件对外的接口,state 是组件对内的接口.组件内可以引用其他组件,组件之间的引用形成了一个树状结构(组件树),如果下层组件需要使用上层组件的数据或方法 ...
- Win10同时安装office2016和visio2016说明
前言 无论是先安装office2016还是visio2016,均不能成功. 而office2016和visio2016的镜像文件是一样的,只是名称不一样,只需下载其一即可. 具体参考链接 https: ...
- Linux expect实现自动登录
expect expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令.当然若是使用不带密码的密钥验证同样可以实现自动登录和自动远程执行命令.但当不能使用密钥验证的时候,我们就没有办法 ...
- 本地ssh快速登录
每次登录都要ssh -p wang@xx.xx.xx.xx 虽然做了公钥验证 https://www.cnblogs.com/php-linux/p/10795913.html 不需要输入密码,但是每 ...
- kubernetes-使用Calico配置NetworkPolicy
安装网络插件Calico 先下载好yml,因为我的虚拟机地址(192.168.17.180)在192.168.0.0/16网段中 所以要修改 wget https://docs.projectcali ...
- LFS7.10——构造临时Linux系统
参考:LFS编译——准备Host系统 前言 在准备好Host环境后,接下来构造一个临时Linux系统.该系统包含****构建所需要的工具.构造临时Linux系统分两步: 构建一个宿主系统无关的新工具链 ...
- zabbix Server 4.0监控Flume关键参数
zabbix Server 4.0监控Flume关键参数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Flume本身提供了http, ganglia的监控服务.当然我们也可以使用 ...
- 渗透之路基础 -- 跨站伪造请求CSRF
漏洞产生原因及原理 跨站请求伪造是指攻击者可以在第三方站点制造HTTP请求并以用户在目标站点的登录态发送到目标站点,而目标站点未校验请求来源使第三方成功伪造请求. XSS利用站点内的信任用户,而CSR ...