[云原生] Prometheus之部署 Alertmanager 发送告警

一、Alertmanager 发送告警的介绍

Prometheus 对指标的收集、存储与告警能力分属于 Prometheus Server 和 AlertManager 两个独立的组件,前者仅负责定义告警规则生成告警通知, 具体的告警操作则由后者完成。

Alertmanager 负责处理由 Prometheus Server 发来的告警通知,Alertmanager对告警通知进行分组、去重后,根据路由规则将其路由到不同的receiver,如
Email、钉钉或企业微信等。

除了基本的告警通知能力外,Altermanager还支持对告警进行去重、分组、抑制、静默和路由等功能:
●分组(Grouping):将相似告警合并为单个告警通知的机制,在系统因大面积故障而触发告警潮时,分组机制能避免用户被大量的告警噪声淹没,进而导致关键信息的隐没

●抑制(Inhibition):系统中某个组件或服务故障而触发告警通知后,那些依赖于该组件或服务的其它组件或服务可能也会因此而触发告警,抑制便是避免类似的级联告警的一种特性,从而让用户能将精力集中于真正的故障所在

●静默(Silent):是指在一个特定的时间窗口内,即便接收到告警通知,Alertmanager也不会真正向用户发送告警信息的行为;通常,在系统例行维护期间,需要激活告警系统的静默特性

●路由(route):用于配置Alertmanager如何处理传入的特定类型的告警通知,其基本逻辑是根据路由匹配规则的匹配结果来确定处理当前告警通知的路径和行为

二、Alertmanager邮箱报警设置

(1)上传 alertmanager-0.24.0.linux-amd64.tar.gz 到 /opt 目录中,并解压 
cd /opt/
tar xf alertmanager-0.24.0.linux-amd64.tar.gz
mv alertmanager-0.24.0.linux-amd64 /usr/local/alertmanager
(2)修改 alertmanager 配置文件,添加邮件告警路由信息
vim /usr/local/alertmanager/alertmanager.yml
#global 配置段用于定义全局配置
#templates 配置段负责自定义告警内容模板文件
#route 配置段用于指定如何处理传入的告警
#receiver 配置段则定义了告警信息的接收器,每个接收器都应该有其具体的定义
 
global:                       #在全局配置段设置发件人邮箱信息
  resolve_timeout: 5m             #定义持续多长时间未接收到告警通知后,就将告警状态标记为resolved
  smtp_smarthost: 'smtp.qq.com:25'
  smtp_from: '这里使用的是个人邮箱'
  smtp_auth_username: '这里使用的是个人邮箱'
  smtp_auth_password: 'xxxxxx'    #此处为授权码,登录QQ邮箱【设置】->【账户】中的【生成授权码】获取
  smtp_require_tls: false         #禁用TLS的传输方式
route:                        #设置告警的分发策略
  group_by: ['alertname']         #采用哪个标签来作为分组依据,这里使用告警名称做为规则,满足规则的告警将会被合并到一个通知中
  group_wait: 20s                 #一组告警第一次发送之前等待的时延,即产生告警20s将组内新产生的消息合并发送,通常是0s~几分钟(默认是30s)
  group_interval: 5m              #一组已发送过初始告警通知的告警,接收到新告警后,下次发送通知前等待时延,通常是5m或更久(默认是5m)
  repeat_interval: 20m            #一组已经发送过通知的告警,重复发送告警的间隔,通常设置为3h或者更久(默认是4h)
  receiver: 'my-email'    #定义告警接收人
receivers:                    #设置收件人邮箱信息
- name: 'my-email'
  email_configs:
  - to: '收件人的邮箱'    #设置收件人邮箱地址
    send_resolved: true

(3)配置启动文件 
cat > /usr/lib/systemd/system/alertmanager.service <<'EOF'
[Unit]
Description=alertmanager
Documentation=https://prometheus.io/
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/alertmanager/alertmanager \
--config.file=/usr/local/alertmanager/alertmanager.yml \
--log.level=debug
 
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
EOF
 
#启动 Alertmanager
systemctl start alertmanager
systemctl enable alertmanager
 
netstat -natp | grep :9093

(4)添加告警规则  
mkdir /usr/local/prometheus/alter_rules
 
vim /usr/local/prometheus/alter_rules/instance_down.yaml
groups:
#若某个 Instance 的 up 指标的值转为 0 持续超过 1 分钟后,将触发告警
- name: AllInstances
  rules:
  - alert: InstanceDown                  #告警规则的名称,一个组内的告警规则名称必须惟一
    # Condition for alerting
    expr: up == 0                        #基于PromQL表达式的告警触发条件(布尔表达式)
    for: 1m                              #控制在触发告警之前,测试表达式的值必须为true的时长
	                                     #表达式值为true,但其持续时间未能满足for定义的时长时,相关的告警状态为pending
	                                     #满足该时长之后,相关的告警将被触发,并转为firing状态
	                                     #表达式的值为false时,告警将处于inactive状态
    # Annotation - additional informational labels to store more information
    annotations:                         #附加在告警之上的注解信息
      title: 'Instance down'
      description: Instance has been down for more than 1 minute.'
    # Labels - additional labels to be attached to the alert
    labels:
      severity: 'critical'               #在告警上附加的自定义的标签
#CPU 使用率大于 80% 触发告警
- name: node_alert
  rules:
  - alert: cpu_alert
    expr: 100 -avg(irate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance)* 100 > 80
    for: 5m
    labels:
      level: warning
    annotations:
      description: "instance: {{ $labels.instance }} ,cpu usage is too high ! value: {{$value}}"
      summary:  "cpu usage is too high"

(5)修改 prometheus 配置文件,添加 Alertmanager 实例的配置 
vim /usr/local/prometheus/prometheus.yml
......
alerting:
  alertmanagers:
    - static_configs:
        - targets:
            - 192.168.80.30:9093 #任意一台k8s主机IP及exporter服务监听端口
 
rule_files:
  - "/usr/local/prometheus/alter_rules/*.yaml"
  
 
systemctl reload prometheus

 (6)进行报警测试
systemctl stop node_exporter.service 

(7)恢复监控节点的exporter服务 
systemctl start node_exporter.service

三、Alertmanager钉钉报警设置 

(1)上传 prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz 到 /opt 目录中,并解压
cd /opt/
tar xf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz
mv prometheus-webhook-dingtalk-2.1.0.linux-amd64 /usr/local/dingtalk
(2)登录阿里钉钉,并且进行设置 
创建群 -> 群设置 -> 智能群助手 -> 添加机器人 -> 添加机器人 -> 自定义
消息推送    开启
Webhook     复制
安全设置 -> 勾选 加签 -> 复制
点击完成
(3)修改 dingtalk 告警插件配置文件 
cd /usr/local/dingtalk
cp -p config.example.yml config.yml
 
vim config.yml
timeout: 5s
 
## Uncomment following line in order to write template from scratch (be careful!)
#no_builtin_template: true
 
## Customizable templates path
templates:
  - contrib/templates/legacy/template.tmpl
 
## You can also override default template using `default_message`
## The following example to use the 'legacy' template from v0.3.0
default_message:
  title: '{{ template "legacy.title" . }}'
  text: '{{ template "legacy.content" . }}'
 
## Targets, previously was known as "profiles"
targets:
  webhook1:
    url: <粘贴Webhook的内容>
    # secret for signature
    secret: <粘贴加签的内容>
 
#启动服务 
./prometheus-webhook-dingtalk
(4)修改 alertmanager 配置文件 
vim /usr/local/alertmanager/alertmanager.yml
global:
  resolve_timeout: 5m
 
route:
  group_by: [alertname]
  group_wait: 10s
  group_interval: 15s
  repeat_interval: 20m
  receiver: 'dingding.webhook1'
 
receivers:
- name: 'dingding.webhook1'
  webhook_configs:
  - url: 'http://192.168.73.108:8060/dingtalk/webhook1/send'
    send_resolved: true
 
  
systemctl reload alertmanager
(5)测试告警 
systemctl stop node_exporter

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/458790.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎么采集美团的数据

怎么使用简数采集器批量采集美团的活动、商家和商品相关信息呢&#xff1f; 简数采集器暂时不支持采集美团的相关数据&#xff0c;建议换其他网站采集&#xff0c;谢谢。 简数采集器采集网站文章数据特别高效方便&#xff0c;在简数智能向导模式下&#xff0c;只要填写要采集…

普林斯顿算法讲义(一)

原文&#xff1a;普林斯顿大学算法课程 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 1. 基础知识 原文&#xff1a;algs4.cs.princeton.edu/10fundamentals 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 概述。 本书的目标是研究各种重要和有用的算法——…

FastGPT知识库结构讲解

文章目录 FastGPT知识库结构讲解理解向量FastGPT 中向量的结构设计多向量的目的和使用方式提高向量搜索精度的方法 FastGPT 构建知识库方案导入数据方案1 - 直接分段导入导入数据方案2 - QA导入导入数据方案3 - 手动录入导入数据方案4 - CSV录入导入数据方案5 - API导入 QA的组…

SpringBoot项目根据配置文件初始化并向容器注册Bean

SpringBoot项目根据配置文件初始化并向容器注册Bean 文章目录 SpringBoot项目根据配置文件初始化并向容器注册Bean[TOC] 前言一、场景图示二、实现1.定义一个Condition实现类2.按照配置装配bean 总结 前言 在开发过程种有这种场景&#xff0c;我们在使用数据存储的时候定义了一…

智慧医疗是什么?有什么医疗信息化建设方案推荐?

近年来&#xff0c;随着云计算、物联网&#xff08;internet of things&#xff0c;IOT&#xff09;、移动互联网、大数据、人工智能&#xff08;artificial intelligence&#xff0c;AI&#xff09;、5G网络、区块链等新一代信息技术的逐步成熟和广泛应用&#xff0c;信息化已…

保姆级OpenSSL下载及安装教程

下载地址下载步骤安装步骤环境变量配置查看是否安装成功下载地址 官网链接:(https://slproweb.com/products/Win32OpenSSL.html ) 点击跳转 下载步骤 以下步骤截图,以当前官网界面为标准,后有变动请提示博主修改。 点击链接跳转后界面为 往下滚动找到安装包下载按钮…

电梯机房秀 系列二

上次小伍带大家看了部分机房的照片&#xff0c;并且简单介绍了一下电梯能量回馈装置&#xff0c;小伙伴们表示很新奇&#xff0c;没看够&#xff0c;今天小伍又来了&#xff0c;带大家看一下电梯能量回馈装置到底安装在电梯什么位置。跟着小伍去看看吧。Lets go&#xff01; 电…

算法50:动态规划专练(力扣514题:自由之路-----4种写法)

题目: 力扣514 &#xff1a; 自由之路 . - 力扣&#xff08;LeetCode&#xff09; 题目的详细描述&#xff0c;直接打开力扣看就是了&#xff0c;下面说一下我对题目的理解: 事例1&#xff1a; 输入: ring "godding", key "gd" 输出: 4. 1. ring的第…

强化学习:技术创新与应用实践

目录 前言1 强化学习原理和分类1.1 强化学习的原理1.2 基于值函数的方法1.3 基于策略的方法1.4 深度强化学习 2 强化学习应用2.1 游戏领域2.2 机器人控制2.3 金融交易 3 未来展望结语 前言 强化学习&#xff08;Reinforcement Learning&#xff09;作为人工智能领域的重要分支…

【Unity】进度条和血条的三种做法

前言 在使用Unity开发的时候&#xff0c;进度条和血条是必不可少的&#xff0c;本篇文章将简单介绍一下几种血条的制作方法。 1.使用Slider Slider组件由两部分组成&#xff1a;滑动区域和滑块。滑动区域用于显示滑动条的背景&#xff0c;而滑块则表示当前的数值位置。用户可…

数据结构:静态链表(编程技巧)

链表的元素用数组存储&#xff0c; 用数组的下标模拟指针。 一、理解 如果有些程序设计语言没有指针类型&#xff0c;如何实现链表&#xff1f; 在使用指针类型实现链表时&#xff0c;我们很容易就可以直接在内存中新建一块地址用于创建下一个结点&#xff0c;在逻辑上&#x…

OpenCV 将rgb图像转化成字符图像

将RGB图像转换成字符图像&#xff08;ASCII art&#xff09;通常涉及到灰度化、降采样、映射字符等一系列步骤。以下是一个简化的OpenCVC实现示例&#xff1a; #include <opencv2/opencv.hpp> #include <iostream> #include <string>// 字符映射表&#xff…

R语言绘制散点密度图ggdentity

使用R语言绘制二维密度图 下图是一张常见的二维核密度散点图&#xff0c;能够清晰直观的反映出数据之间的分布趋势&#xff0c;颜色越红的位置数据越集中分布。今天分享的笔记是在R语言中绘制该图的两种常见方法&#xff0c;提供过程代码。 论文中常见的这种展示两组数据之间分…

嵌入式驱动学习第三周——container_of()宏

前言 Linux内核编程中&#xff0c;会经常看见一个宏函数container_of&#xff0c;那么这究竟是什么呢&#xff0c;本篇博客记录学习container_of的过程。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程&#xff0c;未来预计四个月将高强度更新本专栏&#xff0c;喜欢的可…

【C++】stack、queue模拟实现+仿函数

stack、queue模拟实现仿函数 stack定义stack模拟实现 queue定义queue模拟实现 priority_queue定义priority_queue模拟实现 deque定义底层分析 容器适配器定义种类 仿函数控制类里面数据的比较逻辑回调函数仿函数两者区别 铁汁们&#xff0c;今天给大家分享一篇stack、queue模拟…

Vue+SpringBoot打造服装店库存管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 角色管理模块2.3 服装档案模块2.4 服装入库模块2.5 服装出库模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 角色表3.2.2 服装档案表3.2.3 服装入库表3.2.4 服装出库表 四、系统展示五、核心代码5.…

算法打卡day17|二叉树篇06|Leetcode 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

算法题 Leetcode 654.最大二叉树 题目链接:654.最大二叉树 大佬视频讲解&#xff1a;最大二叉树视频讲解 个人思路 大概思路就是在数组中 找最大值的节点作为当前节点&#xff0c;用最大值的index切割左右子树的区间&#xff0c;往复循环到数组元素为0&#xff1b; 解法 递…

【数据结构】二叉搜索树底层刨析

文章目录 1. 二叉搜索树的实现2. 二叉搜索树的应用3. 改造二叉搜索树为 KV 结构4. 二叉搜索树的性能分析 1. 二叉搜索树的实现 namespace key {template<class K>struct BSTreeNode{typedef BSTreeNode<K> Node;Node* _left;Node* _right;K _key;BSTreeNode(const…

【1】Python零基础起步

什么是编程(Programming) 编程是编定程序的中文简称&#xff0c;就是让计算机代码解决某个问题&#xff08;目的&#xff09;&#xff0c;对某个计算体系规定一定的运算方式&#xff0c;使计算体系按照该计算方式运行&#xff0c;并最终得到相应结果的过程&#xff08;手段&am…

Java Day 10 io流

IO流 1、前置知识 字符集1.1 标准ASCII1.2 GBK编码1.3 UTF-321.4 UTF-81.5 编码和解码方法 2、IO流2.1 流的分类2.2 FileInputStream2.2.1 常用方法 2.3 FileOutputStram2.3.1 常用方法2.3.2 文件复制案例 2.4 释放资源的方式2.4.1 try-catch-finally2.4.2 try-with-resource 1…
最新文章