监控系统中非常重要的一环,就是告警,系统得在故障发生的第一时间将事件发送出来,通知干系人,prometheus提供了alertmanager来实现这个功能。

第一步:prometheus.yml配置文件,配置alertmanager地址

第二步:编写触发器,也就是在什么情况下产生告警。

Prometheus.yml填写触发器配置文件路径

alert_rule.yml内容

groups:
- name: node
rules:
- alert: node_cpu>80%
expr: (1-rate(node_cpu_seconds_total{mode="idle"}[1m]))*100 > 80
labels:
severity: 3
- alert: node_mem_availble<%
expr: node_memory_MemAvailable_bytes/node_memory_MemTotal_bytes*100 < 20
labels:
severity: 3
- alert: node_cpu_load>10
expr: node_load1 > 10
labels:
severity: 3
- alert: node_disk<%
expr: node_filesystem_avail_bytes{device!='nsfs'}/node_filesystem_size_bytes{device!='nsfs'}*100 < 20
labels:
severity: 3
- name: docker
rules:
- alert: docker_cpu>50%
expr: rate(container_cpu_usage_seconds_total{image!=''}[1m])*100 > 50
labels:
severity: 3
- alert: docker_restarted
expr: changes(container_start_time_seconds[1m]) != 0
labels:
severity: 4

其中expr就是产生告警的条件,即当这个语句条件成立时,触发告警,下面的labels是告警内容中的标签,这里添加了一个标签,即告警等级severity,可以自定义1-5,来区分不同级别的告警。

第三步:产生的告警怎么处理,是发消息?发送给谁?通过什么发送?都是在这里配置。alertmanager.yml配置文件

内容如下:

global:
resolve_timeout: 5m route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receiver: 'wechat'
routes:
- match_re:
severity: 1|2|3|4|5
receiver: 'wechat'
continue: true
- match:
severity: 5
receiver: 'message'
continue: true
- match:
severity: 5
receiver: 'call'
continue: true
receivers:
- name: 'wechat'
webhook_configs:
- url: 'http://localhost/alert_wechat'
- name: 'message'
webhook_configs:
- url: 'http://localhost/alert_message'
- name: 'call'
webhook_configs:
- url: 'http://localhost/alert_call'
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']

这里用了一个receiver,即web_hook,Prometheus会把告警内容post到指定的url地址。

最新文章

  1. 一行命令搞定node.js 版本升级
  2. Delphi 的知识体系
  3. EasyUI Jquery 动态加载树,点击节点加载
  4. paip.取当天记录的方法sql跟hql hibernate
  5. OC格式化标准符
  6. http://blog.sina.com.cn/s/blog_5b9b4abe01017638.html
  7. 初识HTTP 1.1与HTTP 1.0
  8. 201521123117 《Java程序设计》第9周学习总结
  9. js跳转页面的几种方式
  10. MySQL异步、同步、半同步复制
  11. 关于使用Unity开发Kinect时出现的Runtime Error错误的解决方式
  12. XBMC源代码简析 5:视频播放器(dvdplayer)-解复用器(以ffmpeg为例)
  13. vue菜鸟从业记:公司项目里如何进行前后端接口联调
  14. 近视BFC
  15. 【PS技巧】如何校正倾斜的图片
  16. Java容器解析系列(5) AbstractSequentialList LinkedList 详解
  17. [AGC 018 E] Sightseeing plan
  18. Quartz.Net分布式任务管理平台
  19. gitolite migration to bitbucket
  20. numpy 数据处理

热门文章

  1. HBase伪分布式安装及简单使用
  2. Nginx 限制单个IP的并发连接数及对每个连接速度(限速)
  3. Android开发之Conversion to Dalvik format failed问题解决
  4. Hadoop 中的 ArrayWritable
  5. String、StringBuffer、StringBuilder区别并验证
  6. MongoDB入门学习(1)
  7. jquery简洁遮罩插件
  8. 【ubantu】Ubuntu的一些常用命令
  9. shiro设置session超时
  10. windows下XAMPP安装php_memcache扩展