注意事项:

alertmanager中的web页面显示的报警时间是UTC时间,错8个小时,企业微信报警模板中已经修改过来了

下面配置可以作为参考:

1.prometheus操作

1.1 配置告警规则,参考地址:https://www.cnblogs.com/sanduzxcvbnm/p/13589792.html,https://www.cnblogs.com/sanduzxcvbnm/p/14759693.html

1.2 修改告警通知发送的alertmanager地址

  1. # my global config
  2. global:
  3. scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  4. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  5. # scrape_timeout is set to the global default (10s).
  6. #external_labels:
  7. # origin_prometheus: prometheus
  8. # Alertmanager configuration
  9. alerting:
  10. alertmanagers:
  11. - static_configs:
  12. - targets: ['localhost:9093']
  13. # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
  14. rule_files:
  15. - "rules/*.yml"
  16. # - "second_rules.yml"
  17. # A scrape configuration containing exactly one endpoint to scrape:
  18. # Here it's Prometheus itself.
  19. scrape_configs:
  20. # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  21. - job_name: 'prometheus'
  22. # metrics_path defaults to '/metrics'
  23. # scheme defaults to 'http'.
  24. static_configs:
  25. - targets: ['localhost:9090']
  26. - job_name: 'node'
  27. static_configs:
  28. - targets: ['localhost:9100']
  29. - job_name: 'mysql'
  30. static_configs:
  31. - targets: ['localhost:9104']
  32. labels:
  33. instance: park_single_db

2.配置alertmanager

2.1 修改配置文件,设置告警参数

  1. # vim /etc/alertmanager/alertmanager.yml
  2. global:
  3. resolve_timeout: 10m
  4. templates:
  5. - 'config/*.tmpl'
  6. route:
  7. group_by: ['alertname']
  8. group_wait: 30s
  9. group_interval: 5m
  10. repeat_interval: 12h
  11. receiver: 'wechat'
  12. receivers:
  13. - name: 'wechat'
  14. wechat_configs:
  15. - send_resolved: true
  16. wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
  17. wechat_api_corp_id: '企业id,在企业的配置页面可以看到'
  18. agent_id: '应用的AgentId,在应用的配置页面可以看到'
  19. api_secret: '应用的secret,在应用的配置页面可以看到'
  20. # 接收者或者是用户或者是部门,选一个就行
  21. to_user: '@all'
  22. #to_party: ' PartyID1 | PartyID2 '
  23. # 抑制作用可以不要
  24. #inhibit_rules:
  25. # - source_match:
  26. # severity: 'critical'
  27. # target_match:
  28. # severity: 'warning'
  29. # equal: ['alertname', 'instance','job']

2.2 设置企业微信告警模板

如果不配置自定义模板,发出的消息会非常杂乱,我们自定义的配置模板示例如下:

vim /usr/local/alertmanager/config/wechat.tmpl

  1. {{ define "wechat.default.message" }}
  2. {{- if gt (len .Alerts.Firing) 0 -}}
  3. {{- range $index, $alert := .Alerts -}}
  4. {{- if eq $index 0 -}}
  5. **********告警通知**********
  6. 告警类型: {{ $alert.Labels.alertname }}
  7. 告警级别: {{ $alert.Labels.severity }}
  8. {{- end }}
  9. =====================
  10. 告警主题: {{ $alert.Annotations.summary }}
  11. 告警详情: {{ $alert.Annotations.description }}
  12. 故障时间: {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} # 注意这行,时间默认UTC 所以后边加入28800e9 也就是多了8个小时
  13. {{ if gt (len $alert.Labels.instance) 0 -}}故障实例: {{ $alert.Labels.instance }}{{- end -}}
  14. {{- end }}
  15. {{- end }}
  16. {{- if gt (len .Alerts.Resolved) 0 -}}
  17. {{- range $index, $alert := .Alerts -}}
  18. {{- if eq $index 0 -}}
  19. **********恢复通知**********
  20. 告警类型: {{ $alert.Labels.alertname }}
  21. 告警级别: {{ $alert.Labels.severity }}
  22. {{- end }}
  23. =====================
  24. 告警主题: {{ $alert.Annotations.summary }}
  25. 告警详情: {{ $alert.Annotations.description }}
  26. 故障时间: {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} # 注意这行
  27. 恢复时间: {{ ($alert.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} # 注意这行
  28. {{ if gt (len $alert.Labels.instance) 0 -}}故障实例: {{ $alert.Labels.instance }}{{- end -}}
  29. {{- end }}
  30. {{- end }}
  31. {{- end }}

另一种解决UTC时间的办法

  1. {{ define "wechat.default.message" }}
  2. {{- if gt (len .Alerts.Firing) 0 -}}
  3. {{- range $index, $alert := .Alerts -}}
  4. {{- if eq $index 0 -}}
  5. **********告警通知**********
  6. 告警类型: {{ $alert.Labels.alertname }}
  7. 告警级别: {{ $alert.Labels.severity }}
  8. {{- end }}
  9. =====================
  10. 告警主题: {{ $alert.Annotations.summary }}
  11. 告警详情: {{ $alert.Annotations.description }}
  12. 故障时间: {{ $alert.StartsAt.Local.Format "2006-01-02 15:04:05" }} # 注意这行
  13. {{ if gt (len $alert.Labels.instance) 0 -}}故障实例: {{ $alert.Labels.instance }}{{- end -}}
  14. {{- end }}
  15. {{- end }}
  16. {{- if gt (len .Alerts.Resolved) 0 -}}
  17. {{- range $index, $alert := .Alerts -}}
  18. {{- if eq $index 0 -}}
  19. **********恢复通知**********
  20. 告警类型: {{ $alert.Labels.alertname }}
  21. 告警级别: {{ $alert.Labels.severity }}
  22. {{- end }}
  23. =====================
  24. 告警主题: {{ $alert.Annotations.summary }}
  25. 告警详情: {{ $alert.Annotations.description }}
  26. 故障时间: {{ $alert.StartsAt.Local.Format "2006-01-02 15:04:05" }}
  27. 恢复时间: {{ $alert.EndsAt.Local.Format "2006-01-02 15:04:05" }}
  28. {{ if gt (len $alert.Labels.instance) 0 -}}故障实例: {{ $alert.Labels.instance }}{{- end -}}
  29. {{- end }}
  30. {{- end }}
  31. {{- end }}

两者比较

重启应用

分析:

1.报警分组

根据告警规则中设置的规则,进行告警,相同的告警进行分组

  1. group_by: ['alertname']
  2. group_wait: 30s
  3. group_interval: 5m
  4. repeat_interval: 12h



2.默认接收告警

receiver: 'wechat'

接收告警的可以根据告警来源,告警严重程度等进行分别发送告警,这个属于路由分组功能,具体参考:https://www.cnblogs.com/sanduzxcvbnm/p/14247590.html

3.receivers

这个是实际执行告警的,名称要跟上一步的保持一致

4.抑制器

  1. # 抑制器配置
  2. inhibit_rules: # 抑制规则
  3. - source_match: # 源标签警报触发时抑制含有目标标签的警报
  4. severity: 'critical' # 此处的抑制匹配一定在最上面的route中配置不然,会提示找不key。
  5. target_match:
  6. everity: 'warning' # 目标标签值正则匹配,可以是正则表达式如: ".*MySQL.*"
  7. equal: ['alertname', 'instance',"job"] # 确保这个配置下的标签内容相同才会抑制,也就是说警报中必须有这三个标签值才会被抑制。

效果

1.单独的一个告警通知

2.有多条告警通知,但是分组合并在一个通知里发送

AlertManager 之微信告警模板,UTC时间错8个小时的解决办法的更多相关文章

  1. electron-vue中使用iview 报错this. is readonly的解决办法

    title: electron-vue中使用iview 报错this. is readonly的解决办法 toc: false date: 2019-02-12 19:33:28 categories ...

  2. Intellij里检出svn报错找不到svn解决办法

    Intellij里检出svn报错找不到,解决办法: 1. 安装svn客户端: 2. 去掉settings->version control->subversion里的use command ...

  3. alertmanager的web页面显示UTC时间的问题

    1.http://192.168.1.144:9093/#/alerts 显示的告警时间是UTC时间 2.脚本的变量 {"status":"success"}[ ...

  4. Linux/CentOS下的CST和UTC时间的区别以及不一致的解决方法

    今天被我遇到了,相差八小时,,,tzselect过了都不行,还得用ntupdate核一下. 网上找的,备不时之需要. ~~~~~~~~~~~~~~~~ 1.在linux中,用date查看时间的时候显示 ...

  5. Spring Boot连接MySQL报错“Internal Server Error”的解决办法

    报错信息如下: {timestamp: "2018-06-14T03:48:23.436+0000", status: 500, error: "Internal Ser ...

  6. dbstart和dbshut启动、关闭数据库报错ORACLE_HOME_LISTNER is not SET解决办法

    dbstart启动数据库报错,如下: [oracle@wen ~]$ dbstartORACLE_HOME_LISTNER is not SET, unable to auto-start Oracl ...

  7. Log4j 输出的日志中时间比系统时间少了8小时的解决方法,log4j日志文件重复输出

    1. 第一个问题:时间少了8小时 Log4j 输出的日志中,时间比系统时间少了8小时,但是 eclipse 控制台输出的日志的时间却是对的. log4j配置如下: #all logger output ...

  8. Mysql创建表时报错Table doesn't exist解决办法

    最近做项目时,本地数据库出了毛病,PHPMyadmin中有几张表不见了,我想应该是误删了吧,于是准备重新建一张表,可是问题出现了,sql报错,说表不存在... 什么鬼!就是因为表不存在我才要创建的好吗 ...

  9. Zabbix监控虚拟主机告警Lack of free swap space on Zabbix server解决办法

    Zabbix监控虚拟机的时候有时候会报一下告警 是因为Zabbix监控没有考虑虚拟主机的交换空间情况 解决办法修改配置

随机推荐

  1. Kafka启动遇到ERROR Exiting Kafka due to fatal exception (kafka.Kafka$)

    ------------恢复内容开始------------ Kafka启动遇到ERROR Exiting Kafka due to fatal exception (kafka.Kafka$) 解决 ...

  2. GET 请求和 POST 请求的区别和使用

    作为前端开发, HTTP 中的 POST 请求和 GET 请求是经常会用到的东西,有的人可能知道,但对其原理和如何使用并不特别清楚,那么今天来浅谈一下两者的区别与如何使用. GET请求和POST请求的 ...

  3. python中的标识符和保留字

    保留字,有一些单词被赋予了特定的意义,这些单词不能作为对象的名字 想要快速获取python中的关键字可以通过以下的程 序来快速实现 import keyword print(keyword.kwlis ...

  4. 基于SqlSugar的开发框架循序渐进介绍(13)-- 基于ElementPlus的上传组件进行封装,便于项目使用

    在我们实际项目开发过程中,往往需要根据实际情况,对组件进行封装,以更简便的在界面代码中使用,在实际的前端应用中,适当的组件封装,可以减少很多重复的界面代码,并且能够非常简便的使用,本篇随笔介绍基于El ...

  5. ArrayList的操作和对象数组

    ArrayList是List接口的一个实现类,它是程序中最常见的一种集合. ArrayList内部的数据存储结构时候数组形式,在增加或删除指定位置的元素时,会创建新的数组,效率比较低,因此不适合做大量 ...

  6. 0202年,您真的需要Thrift这样一个RPC微服务框架来拯救一下传统HTTP接口(api)了

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_104 目前市面上类似Django的drf框架基于json的http接口解决方案大行其道,人们也热衷于在接口不多.系统与系统交互较少 ...

  7. Informatica旗下PowerCenter的元数据库解析

    因客户需求,最近重拾Informatica下的PowerCenter产品,主要研究数据血缘关系.从PowerCenter本身来看,它是一个功能非常强大,速率非常高效的一款付费的ETL工具,可以满足各种 ...

  8. 【Azure 事件中心】使用Azure AD认证方式创建Event Hub Consume Client + 自定义Event Position

    问题描述 当使用SDK连接到Azure Event Hub时,最常规的方式为使用连接字符串.这种做法参考官网文档就可成功完成代码:https://docs.azure.cn/zh-cn/event-h ...

  9. 解析MySQL存储过程的游标执行过程

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 内容提纲 一.测试环境搭建 二.执行过程解析 三.注意事项 一.测试环境搭建 首先创建一张表,并插入几行数据字段: CRE ...

  10. gitpod.io,云端开发调试工具。

    gitpod,一款在线开发调试工具,使用它你可以在网页上直接开发软件项目了. 比如你的项目仓库在github上,你可以直接在网址的前面添加gitpod.io/#,然后回车就能在网页上使用vscode打 ...