加载中…
个人资料
那个谁
那个谁
  • 博客等级:
  • 博客积分:0
  • 博客访问:638
  • 关注人气:1
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Prometheus告警规则增删改自动化

(2018-11-21 16:39:55)
标签:

it

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、添加告警规则

http://s9/mw690/006IC8q4zy7pn58ViwU98&690

                页面风格是仿照着prometheus的界面写的,有些颜色和位置大小不完全相同(调前端让人头疼)。

 

通过输入告警名称,表达式,持续时间,和描述来创建告警规则,模板是我先定死的,input框设置了disabled属性,告警内容通过报警脚本进行过滤。

主要技术:

       此页面应用更多的都是基础的表单提交,没有什么难度,唯一添加的一些加强页面效果的操作是对inputselect事件的处理,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_nameinput标签的id),输入后inputvalue产生变化,同时刷新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文件,内容如上,第一行内容是用来记录参数的,用于之后的修改参数使用。

                   http://s8/mw690/006IC8q4zy7pn5cXger47&690

              刷新prometheus配置之后发现,告警已经加载进来了

      

         

                 2、修改告警

                   http://s10/mw690/006IC8q4zy7pn5nRqSlf9&690


                   修改告警规则应该是我们日常最多用到的,经常要修改阈值,首先,在选择框中会加载所有已经设置的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、删除

                    http://s16/mw690/006IC8q4zy7pn5udQT53f&690

             删除功能比较简单,和update一样,界面加载时,通过js将所有告警规则加载至select标签中,然后设置select事件,如上图,我选择了service_100000这个规则,后侧的告警预览就把这个告警规则信息展示出来了,js代码同上边的update事件代码。然后点击删除键,将选择的规则传入后台,直接删除文件即可。

               

                

                至此,prometheus的告警规则的增删改就完成了。之后我还会慢慢优化,希望能实现像zabbix一样的效果。

s


                代码位置:https://github.com/1182640071/AddRulesWeb         

              我的prometheus管理平台地址: https://blog.csdn.net/www199202/article/details/90728824



ssss


 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有