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

news2024/11/25 14:47:49

记录一下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_status
    rules:
    - alert: '节点状态'
      expr: up == 0
      for: 1m
      labels:
        severity: '紧急严重'
      annotations:
        discription: "Node has been down for more than 2 minutes"
        summary: "IP为 {{ $labels.instance }} 节点宕机"
  - name: cpu_use
    rules:
    - alert: 'CPU使用情况'
      expr: ((node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / node_memory_MemTotal_bytes) > 0.9
      for: 1m
      lavels:
        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'
  # 邮箱授权密码token
  smtp_auth_password: 'PLAPPSJXJCQABYAF'
  # 通过指定文件来输入密码,与上条选一即可
  smtp_auth_password_file: 'password/pass'
  # 设置tls协议,是否使用分别是ture/false
  smtp_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']
  # 从接收告警到发送告警的等待时间,时间段内告警会合并一个通知,默认30s
  group_wait: 30s
  # 相同的group之间发送告警的时间间隔,默认5分钟
  group_interval: 5m
  # 告警成功发送后能再次发送相同告警的时间间隔,默认4小时
  repeat_interval: 20m
  # 配置要发送告警使用的接收器名称
  receiver: 'email'
  # 默认为false,用于指示处理警告时进行下一步处理
  # 若设置为true,告警则进行匹配子节点
  continue: false
  # 用于将报警规则与报警事件进行匹配的功能
  # 通过字符方式进行匹配,判断告警中是否有标签labelname=labelvalue
  match:
    [ <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: 10s
    matchers:
    - 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-pager
  email_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" . }}'
# 故障恢复是否通知,默认为false
    send_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.coloradmin.cn/o/333387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c++基础入门二

一、数组的引用int main() {int a 10, b 20;int ar[10] { 1,2,3,4,6,7 };int& x ar[0];int& p[5] ar;//errorint(&p)[10] ar;//引用整个数组的大小sizeof(ar)int(*p)[10] &ar;//typesize表示整个数组//只有在这三种情况下代表整个数组&#xff0c;其他情…

C++ 浅谈之 STL Vector

C 浅谈之 STL Vector HELLO&#xff0c;各位博友好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 这里是 C 浅谈系列&#xff0c;收录在专栏 C 语言中 &#x1f61c;&#x1f61c;&#x1f61c; 本系列阿呆将记录一些 C 语言重要的语法特性 &#x1f3c3;&…

18-考虑柔性负荷的综合能源系统低碳经济优化调度MATLAB程序

参考文献&#xff1a;考虑柔性负荷的综合能源系统低碳经济优化调度_薛开阳考虑用户侧柔性负荷的社区综合能源系统日前优化调度_刘蓉晖主要内容&#xff1a;基础模型参考刘蓉晖的论文&#xff0c;主要做了场景1、2、3&#xff1b;碳交易模型采用薛开阳论文中的。采用CPIEX求解某…

ArcGIS API for JavaScript 4.15系列(2)——Dojo中的dom操作

1、前言 ArcGIS API for JavaScript是基于Dojo框架编写的开发包&#xff0c;因此了解并掌握Dojo的相关基础知识是极为必要的。很多开发者都反馈过一个问题&#xff0c;那就是一看见ArcGIS API for JavaScript里那些奇形怪状的代码就觉得无从下手。有一点必须得承认&#xff1a…

Xshell 安装及使用方法

公网地址&#xff1a;47.XXX.XXX.229 私网地址&#xff1a;172.XXX.128.XXX 用户&#xff1a;root 密码&#xff1a;1234561,百度xshell&#xff0c;下载&#xff0c;安装Xshell 2&#xff0c;填写配置及使用方式 主机&#xff1a;47.XXX.XXX.229 用户&#xff1a;root 密码&a…

SpringCloud学习笔记 - 系统自适应限流 - Sentinel

1. Sentinel 系统自适应限流 Sentinel 系统自适应限流从整体维度对应用入口流量进行控制&#xff0c;结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标&#xff0c;通过自适应的流控策略&#xff0c;让系统的入口流量和系统的负载达到一…

第五十一章 BFS进阶(一)——双端队列广搜

第五十一章 BFS进阶&#xff08;一&#xff09;——双端队列广搜一、原理二、例题1、问题2、分析三、代码一、原理 在介绍双端队列广搜之前&#xff0c;我们先回顾一下堆优化版本的dijkstradijkstradijkstra算法。 在这个算法中&#xff0c;我们使用的是小根堆来找到距离起点…

java基础—Volatile关键字详解

java基础—Volatile关键字详解 文章目录java基础—Volatile关键字详解并发编程的三大特性&#xff1a;volatile的作用是什么volatile如何保证有可见性volatile保证可见性在JMM层面原理volatile保证可见性在CPU层面原理可见性问题的例子volatile如何保证有序性单例模式使用volat…

概率统计·假设检验【正态总体均值的假设检验、正态总体方差的假设检验】

均值假设检验定义 2类错误 第1类错误&#xff08;弃真&#xff09;&#xff1a;当原假设H0为真&#xff0c;观察值却落入拒绝域&#xff0c;因而拒 绝H0这类错误是“以真为假” 犯第一类错误的概率显著性水平α第2类错误&#xff08;取伪&#xff09;&#xff1a;当原假设H0不…

基于参数化模型的3D产品配置器开发

当我被要求为客户创建3D产品配置器时&#xff0c;我想到的第一个平台是 SketchFab。 我是在澳大利亚墨尔本的 SAE 创意媒体学院学习计算机动画时接触到它的。 推荐&#xff1a;使用 NSDT场景设计器 快速搭建 3D场景。 1、基于Sketchfab开发3D产品配置器 SketchFab 是在线共享…

码住!为什么一定要做tiktok小店?赶快来开启爆单模式!

随着短视频和社交电商的结合&#xff0c;商家的变现渠道变得更加宽广。各大平台也开启了直播带货的赛道&#xff0c;在跨境行业中&#xff0c;tiktok小店也是商家们关注的渠道。很多商家也开始做tiktok小店&#xff0c;那我们可以先了解一下这小店的优势。tiktok小店拥有优质的…

并发线程、锁、ThreadLocal

并发编程并发编程Java内存模型&#xff08;JMM&#xff09;并发编程核心问题—可见性、原子性、有序性volatile关键字原子性原子类CAS(Compare-And-Swap 比较并交换)ABA问题Java中的锁乐观锁和悲观锁可重入锁读写锁分段锁自旋锁共享锁/独占锁公平锁/非公平锁偏向锁/轻量级锁/重…

02- pandas 数据库 (机器学习)

pandas 数据库重点: pandas 的主要数据结构: Series (一维数据)与 DataFrame (二维数据)。 pd.DataFrame(data np.random.randint(0,151,size (5,3)), # 生成pandas数据 index [Danial,Brandon,softpo,Ella,Cindy], # 行索引 …

J6412四网口迷你主机折腾虚拟机教程

今天给大家做一个四网口迷你主机折腾虚拟机的安装教程&#xff0c;主机采用的是maxtang大唐NUC J6412 intel i226V四网口的迷你主机&#xff0c;这款主机它是不能直接装上NAS的&#xff0c;必须使用虚拟机系统&#xff0c;近期研究了下然后做了一个教程分享给大家。 首先需要做…

Antd-table全选踩坑记录

目录 一、需求 二、问题 ​编辑三、解决 四、全选选中所有数据而不是当前页 一、需求 最近遇到一个小小的需求&#xff0c;在我们这个项目中&#xff0c;有一个表格需要添加全选删除功能。这还不简单吗&#xff0c;于是我找到andt的官网&#xff0c;咔咔咔一顿cv&#xff0…

「自控元件及线路」14 电子电力技术与功率放大器概述

本节介绍电子电力技术的基本概念 本节介绍PD、SCR、GTR、MOSFET、IGBT等电子电力器件 本节介绍功率放大器的基本概念和线性功率放大器 文章目录电力电子技术概述电能变换电子电力器件功率二极管PD晶闸管SCR功率晶体管GTR功率场效应晶体管PowerMOSFET绝缘栅双极晶体管IGBT功率放…

代码随想录.力扣.二叉树.105/106. 从中序与前序/后序序列构造二叉树

题目&#xff1a; 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,2…

Notion 笔记Mac及windows客户端汉化

1、 注册/登录账号&#xff1a; https://www.notion.so/zh-cn 2、下载电脑软件应用&#xff1a; https://www.notion.so/desktop 下载完成后&#xff0c;安装到电脑中&#xff0c;界面如下&#xff1a; 3、下载汉化js插件 地址&#xff1a;https://github.com/Reamd7/n…

String、StringBuffer、StringBuilder有什么区别?

第5讲 | String、StringBuffer、StringBuilder有什么区别&#xff1f; 今天我会聊聊日常使用的字符串&#xff0c;别看它似乎很简单&#xff0c;但其实字符串几乎在所有编程语言里都是个特殊的存在&#xff0c;因为不管是数量还是体积&#xff0c;字符串都是大多数应用中的重要…

【PR】源窗口

【PR】源窗口源窗口粗剪源窗口按钮功能标记按钮出入点相关插入与覆盖插入覆盖导出帧使用软件&#xff1a;Premiere2020 源窗口粗剪 我们手上可能有一些很长的视频&#xff0c;但是我就想要其中的几段&#xff0c;这个时候粗剪就很方便&#xff0c;把想要的视频段落剪出来先凑一…