当前位置: 首页 > news >正文

【2023】Prometheus-Prometheus与Alertmanager配置详解

记录一下Prometheus与Alertmanager的配置参数等内容

目录

  • 1.Prometheus
    • 1.1.prometheus.yml
    • 1.2.告警规则定义
  • 2.alertmanager
    • 2.1.alertmanager.yml
      • 2.1.1.global:全局配置
        • 2.1.1.1.以email方式作为告警发送方
        • 2.1.1.2.以wechat方式作为告警发送方
        • 2.1.1.3.以webhook方式作为告警发送方
      • 2.1.2.templates:告警通知模板
      • 2.1.3.route:路由
        • 2.1.3.1.routes:子路由用法示例
      • 2.1.4.receivers:接收器
        • 2.1.4.1.email_configs:配置邮件告警通知
        • 2.1.4.2.webhook_config:配置钉钉告警通知
        • 2.1.4.3.wechat_config:配置微信告警通知
      • 2.1.5.inhibit_rules:告警抑制
    • 2.2.templates:告警通知模板
      • 2.2.1.定义一个email告警通知模板

1.Prometheus

1.1.prometheus.yml

global:
# 采集间隔时间为15秒,默认1分钟scrape_interval: 15s 
# 评估规则间隔15秒,默认1分钟evaluation_interval: 15s# 接入alertmanager工具
alerting:alertmanagers:- static_configs:- targets:- 192.168.10.5:9093# 定义告警规则存放位置
rule_files:- "/data/prometheus/rules/*_rules.yml"# 采集数据源的源信息的配置项,可以配置多个
scrape_configs:- job_name: "prometheus"static_configs:- targets: ["localhost:9090"]

1.2.告警规则定义

  • node节点告警规则定义,列出两个例子,其他告警规则照猫画虎
groups:- name: node_statusrules:- alert: '节点状态'expr: up == 0for: 1mlabels:severity: '紧急严重'annotations:discription: "Node has been down for more than 2 minutes"summary: "IP为 {{ $labels.instance }} 节点宕机"- name: cpu_userules:- alert: 'CPU使用情况'expr: ((node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / node_memory_MemTotal_bytes) > 0.9for: 1mlavels:severity: '警告'annotations:discription: "内存使用超过百分之九十了"summary: "IP为 {{ $labels.instance }} 节点内存告警"

2.alertmanager

2.1.alertmanager.yml

2.1.1.global:全局配置

2.1.1.1.以email方式作为告警发送方

global:# 邮箱SMTP服务器代理地址smtp_from: 'smtp.163.com:465'# 发送邮件的名称smtp_smarthost: 'xxx@163.com'# 邮箱用户名smtp_auth_username: 'xxx@163.com'# 邮箱授权密码tokensmtp_auth_password: 'PLAPPSJXJCQABYAF'# 通过指定文件来输入密码,与上条选一即可smtp_auth_password_file: 'password/pass'# 设置tls协议,是否使用分别是ture/falsesmtp_require_tls: false# 用于控制在确认报警后多久可以被视为解决的时间,默认5分resolve_timeout: 5m

2.1.1.2.以wechat方式作为告警发送方

global:
# 企业微信API地址,默认为https://qyapi.weixin.qq.com/cgi-bin/wechat_api_url: XXX
# 设置为企业微信中创建的Prometheus应用中记录的“Secret”内容wechat_api_secret: XXX
# 设置为企业微信中记录的“企业ID”wechat_api_corp_id: XXX

2.1.1.3.以webhook方式作为告警发送方

  • 默认全局段没有配置

2.1.2.templates:告警通知模板

  • alertmanager启动会加载该目录下文件,可自行定义告警内容。

  • templates:模板,用于定义接收告警的内容

# 注意:目录需自行创建,目录存放在alertmanager安装目录
templates:- 'template/*.tmpl'

2.1.3.route:路由

  • 用于处理prometheus生成的告警信息将其发送到receiver指定的目的地址。
  • 设置的第一个route为根节点,后面包含的节点为子节点
route:# 对报警进行分组,将多个相似告警合并为一个组,减少重复报警group_by: ['cluster,alertname']# 从接收告警到发送告警的等待时间,时间段内告警会合并一个通知,默认30sgroup_wait: 30s# 相同的group之间发送告警的时间间隔,默认5分钟group_interval: 5m# 告警成功发送后能再次发送相同告警的时间间隔,默认4小时repeat_interval: 20m# 配置要发送告警使用的接收器名称receiver: 'email'# 默认为false,用于指示处理警告时进行下一步处理# 若设置为true,告警则进行匹配子节点continue: false# 用于将报警规则与报警事件进行匹配的功能# 通过字符方式进行匹配,判断告警中是否有标签labelname=labelvaluematch:[ <labelname>: <labelvalue> ]# 通过正则表达式进行告警规则匹配设置match_re:[ <labelname>: <regex>, ... ]# 可以设置触发器发出的报警消息来检测指定的指标值,并执行相应的报警操作# 例如定义报警时间、报警级别等matchers:- foo = bar- dings != bums# 暂停某个时间段内告警,比如晚上8点到第二天7点间暂停告警mute_time_intervals: [{start: "20:00", end: "07:00"}]# 指定在哪些时间段内才发出警告,用法与上条一样active_time_intervals: [{start: "20:00", end: "07:00"}]# 可进行子路由节点匹配设置routes: 

2.1.3.1.routes:子路由用法示例

  • 下面这段代码的含义是告警发送给admin-receiver,按照cluster与alertname进行分组。
  • 子路由中若告警匹配到标签service=mysql或service=redis,将会向databas-pager发送告警
  • 子路由中若告警匹配到标签team=frontend,则会按照标签product,environment对告警进行分组后发送
route:... ...group_by: ['cluster,alertname']receiver: 'admin-receiver'routes:- receiver: 'database-pager'group_wait: 10smatchers:- service=~"mysql|redis"- receiver: 'frontend-pager'group_by: [product,environment]matchers:- team="frontend"

2.1.4.receivers:接收器

  • 接收器是一个通称,每个接收器需要一个唯一的全局名称
  • 接收器的名称要与routes中的receiver保持一致
receivers:
# 指定接收器名称
- name: database-pager
# 配置email告警email_configs:[ - <email_config>, ... ]
# 配置钉钉告警webhook_configs:[ - <webhook_config>, ... ]
# 配置微信告警wechat_configs:[ - <wechat_config>, ... ]
- name: database-pageremail_configs:[ - <email_config>, ... ]webhook_configs:[ - <webhook_config>, ... ]wechat_configs:[ - <wechat_config>, ... ]

2.1.4.1.email_configs:配置邮件告警通知

  • 还有一些其他的选项没有列出,如需要请自行查看官网
email_configs:
# 设置接收告警邮件的地址- to: '接收通知邮箱地址'
# 设置告警通知内容的来源,名字为模板文件的define内容html: '{{ template "email.html" . }}'
# 故障恢复是否通知,默认为falsesend_resolved: true
# 告警邮件标题headers:subject: "[XXX] 告警通知" 

2.1.4.2.webhook_config:配置钉钉告警通知

webhook_configs:
- url: 接收钉钉告警的地址send_resolved: true

2.1.4.3.wechat_config:配置微信告警通知

wechat_configs:
# 用于验证身份的企业id
- corp_id: 'XXX'
# 企业微信API地址api_url: 'XXX'
# 设置为企业微信中创建的Prometheus应用中记录的“AgentId”内容agent_id: 'XXX'
#  设置为企业微信中新建的Prometheus应用中记录的“Secret”内容api_secret: 'XXX'
# 设置为企业微信中的“部门ID”to_party: '2
# 设置为企业微信中使用的账号to_user: 'XXX'send_resolved: true

2.1.5.inhibit_rules:告警抑制

  • 可以指定在特定条件下要忽略的告警条件
  • 可以使用此选项设置首选项,例如优先处理某些告警
  • 如果同一组中的告警同时发生,则忽略其他告警
inhibit_rules:
# 当存在源标签告警触发时抑制含有目标标签的告警
- source_match:severity: 'critical'target_match:severity: 'warning'
# 保证该配置下标签内容相同才会被抑制equal: ['alertname','dev','instance']

2.2.templates:告警通知模板

  • alertmanager.ymltemplates:块定义存放位置

2.2.1.定义一个email告警通知模板

{{ define "test.html" }}
{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert := .Alerts -}}
========= ERROR ==========<br>
告警名称:{{ .Labels.alertname }}<br>
告警级别:{{ .Labels.severity }}<br>
告警机器:{{ .Labels.instance }} {{ .Labels.device }}<br>
告警详情:{{ .Annotations.summary }}<br>
告警时间:{{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}<br>
========= END ==========<br>
{{- end }}
{{- end }}
{{- if gt (len .Alerts.Resolved) 0 -}}
{{- range $index, $alert := .Alerts -}}
========= INFO ==========<br>
告警名称:{{ .Labels.alertname }}<br>
告警级别:{{ .Labels.severity }}<br>
告警机器:{{ .Labels.instance }}<br>
告警详情:{{ .Annotations.summary }}<br>
告警时间:{{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}<br>
恢复时间:{{ (.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}<br>
========= END ==========<br>
{{- end }}
{{- end }}
{{- end }}
  • 模板中的变量来自下图
    在这里插入图片描述
  • 后续待定
http://www.lryc.cn/news/412.html

相关文章:

  • 华为HCIE学习之openstack基础
  • Python实现贝叶斯优化器(Bayes_opt)优化BP神经网络分类模型(BP神经网络分类算法)项目实战
  • Elasticsearch(九)搜索---搜索辅助功能(下)--搜索性能分析
  • 化繁为简|中信建投基于StarRocks构建统一查询服务平台
  • 2023数字中国创新大赛·数据开发赛道首批赛题启动报名
  • MySQL数据库
  • 鸿蒙设备学习|快速上手BearPi-HM Micro开发板
  • 软件测试标准流程
  • Python身份运算符
  • linux 安装,卸载jdk8
  • 标准舆情监测平台解决方案及流程,TOOM舆情监测工作计划有哪些?
  • Lombok使用总结
  • Qt 如何处理耗时的线程,不影响主线程响应 QApplication::processEvents)
  • Antd-table全选踩坑记录
  • 防灾必看,边滑坡安全预警解决方案
  • 你每天所做的工作,让你产生了成就感吗?
  • MySQL中的锁
  • WebView自定义进度条、加载动画,拿走直接用~
  • 内存数据库Apache Derby、H2
  • 麻省理工出版 | 2023年最新深度学习综述手册
  • vi命令详解
  • 抖音的外卖行业入局,为中小外卖企业创业者的机会给了哪些机会?
  • 供应PEG试剂AC-PEG-COOH,Acrylate-PEG-Acid,丙烯酸酯-PEG-羧基
  • java二叉排序树
  • 聊一聊 gRPC 的四种通信模式
  • 科技云报道:开源真的香,风险知多少?
  • 国产化适配迁移记录
  • 又一国产开源项目走向世界,百度RPC框架Apache bRPC正式成为ASF顶级项目
  • 多数据库学习之GBase8s查询数据库表元信息常用SQL
  • Jetpack之Lifecycle应用与源码分析