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

【云原生监控】Prometheus之Alertmanager报警

Prometheus之Alertmanager报警

文章目录

  • Prometheus之Alertmanager报警
    • 概述
    • 资源列表
    • 基础环境
    • 一、部署Prometheus服务
      • 1.1、解压
      • 1.2、配置systemctl启动
      • 1.3、监控端口
    • 二、部署Node-Exporter
      • 2.1、解压
      • 2.2、配置systemctl启动
      • 2.3、监听端口
    • 三、配置Prometheus收集Exporter采集的数据
      • 3.1、编辑Prometheus配置文件
      • 3.2、重新加载Prometheus服务
      • 3.3、访问Prometheus仪表盘
    • 四、部署Alertmanager报警工具
      • 4.1、下载软件包
      • 4.2、解压软件包
    • 五、配置Alertmanager邮件报警
      • 5.1、编辑Alertmanager配置文件
      • 5.2、启动Alertmanager
      • 5.3、监听端口
    • 六、配置Prometheus报警规则
      • 6.1、编辑配置文件
      • 6.2、编辑规则文件
      • 6.3、Prometheus的配置文件语法检查
      • 6.4、重新加载Prometheus服务
    • 七、模拟被监控端挂掉

概述

  • Prometheus通过 规则文件对比抓取到的数据,来判断是否触发告警,我们通过配置告警的工具Alertmanager进行告警通知。
  • 规则文件,写的就是,当我们获取到PromeSQL的值到达一个设置的规则后,触发告警,也就是说,规则文件,是触发告警的关键,而Alertmanager是告警的手段、工具。

资源列表

操作系统配置主机名IP所需软件
CentOS 7.92C4Gprometheus192.168.93.101prometheus-2.37.8.linux-amd64.tar.gz
CentOS 7.92C4Galertmanager192.168.93.102node_exporter-1.6.1.linux-amd64.tar.gz
alertmanager-0.26.0.linux-amd64.tar.gz

基础环境

  • 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  • 关闭内核安全机制
setenforce 0
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
  • 修改主机名
hostnamectl set-hostname prometheus
hostnamectl set-hostname alertmanager

一、部署Prometheus服务

  • 作用:收集数据和展示数据

1.1、解压

[root@prometheus ~]# tar -zxvf prometheus-2.37.8.linux-amd64.tar.gz
  • 移动至指定目录
[root@prometheus ~]# mv prometheus-2.37.8.linux-amd64 /usr/local/prometheus

1.2、配置systemctl启动

[root@prometheus ~]# cat >> /etc/systemd/system/prometheus.service << EOF
[Unit]
Description=xinjizhiwa Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target
[Service]
Restart=on-failure
ExecStart=/usr/local/prometheus/prometheus \
--config.file=/usr/local/prometheus/prometheus.yml \
--web.enable-lifecycle
ExecReload=/bin/kill -HUP \$MAINPID
LimitNOFILE=65535[Install]
WantedBy=multi-user.target
EOF
  • 加载并启动服务
[root@prometheus ~]# systemctl enable prometheus.service --now

1.3、监控端口

  • Prometheus默认监听9090端口
[root@prometheus ~]# netstat -anpt | grep 9090
tcp6       0      0 :::9090                 :::*                    LISTEN      8311/prometheus     
tcp6       0      0 ::1:9090                ::1:35776               ESTABLISHED 8311/prometheus     
tcp6       0      0 ::1:35776               ::1:9090                ESTABLISHED 8311/prometheus 

二、部署Node-Exporter

  • 作用:用来收集节点上的数据

2.1、解压

[root@alertmanager ~]# tar -zxvf node_exporter-1.6.1.linux-amd64.tar.gz
  • 移动至指定目录
[root@alertmanager ~]# mv node_exporter-1.6.1.linux-amd64 /usr/local/node_exporter

2.2、配置systemctl启动

[root@alertmanager ~]# cat > /etc/systemd/system/node-exporter.service << EOF
[Unit]
Description=xinjizhiwa node-exporter
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target[Service]
Restart=on-failure
ExecStart=/usr/local/node_exporter/node_exporter
ExecReload=/bin/kill -HUP \$MAINPID
LimitNOFILE=65535[Install]
WantedBy=multi-user.target
EOF
  • 加载并启动服务
[root@alertmanager ~]# systemctl daemon-reload 
[root@alertmanager ~]# systemctl enable node-exporter.service --now

2.3、监听端口

  • node-exporter默认监听9100端口
[root@alertmanager ~]# netstat -anpt | grep 9100
tcp6       0      0 :::9100                 :::*                    LISTEN      8320/node_exporter

三、配置Prometheus收集Exporter采集的数据

  • node-exporter会把数据统一收集,等待Prometheus进行收集数据展示

3.1、编辑Prometheus配置文件

[root@prometheus ~]# grep -v "#" /usr/local/prometheus/prometheus.yml
global:alerting:alertmanagers:- static_configs:- targets:rule_files:scrape_configs:- job_name: "prometheus"static_configs:- targets: ["localhost:9090"]
####################################################- job_name: "alertmanager"static_configs:- targets: ["192.168.93.102:9100"]
####################################################

3.2、重新加载Prometheus服务

  • 此次的加载方式不适用systemctl进行加载的
[root@prometheus ~]# curl -X POST http://192.168.93.101:9090/-/reload

3.3、访问Prometheus仪表盘

  • 访问地址:http://192.168.93.101:9090

  • 依次点击Status>Targets

  • 此时,就会看到,新配置的被监控项主体的指标列表
    在这里插入图片描述

四、部署Alertmanager报警工具

  • 作用:用于集成邮件报警

4.1、下载软件包

[root@alertmanager ~]# wget https://github.com/prometheus/alertmanager/releases/download/v0.26.0/alertmanager-0.26.0.linux-amd64.tar.gz

4.2、解压软件包

[root@alertmanager ~]# tar -zxvf alertmanager-0.26.0.linux-amd64.tar.gz[root@alertmanager ~]# mv alertmanager-0.26.0.linux-amd64 /usr/local/alertmanager

五、配置Alertmanager邮件报警

5.1、编辑Alertmanager配置文件

[root@alertmanager ~]# cat /usr/local/alertmanager/alertmanager.yml 
#一、发件人信息配置
global:#解析失败超时时间;resolve_timeout: 5m#【发件人】邮箱smtp_from: '2516786946@qq.com'#【邮箱官方主机】地址及端口smtp_smarthost: 'smtp.qq.com:465'#【发件人名称】邮箱smtp_auth_username: 'wzh@qq.com'#【发件人】邮箱授权码smtp_auth_password: 'sqwmtjbnsbrlebie'#发送信息是否tls加密smtp_require_tls: falsesmtp_hello: 'qq.com'
#二、报警的间隔信息配置;
route:group_by: ['alertname']group_wait: 5sgroup_interval: 5s#重复报警的间隔时间,如果报警问题没有解决,则会间隔指定的时间继续触发报警,比如5分钟;repeat_interval: 5m#采用什么报警方式?本次学习,我们使用邮箱;receiver: 'email'
#三、接收告警的目标信息编辑;谁来接收告警?
receivers:
#定义接收者名称
- name: 'email'email_configs:#【收件人】- to: '2516786946@qq.com'send_resolved: true
inhibit_rules:- source_match:#匹配的告警级别severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'dev', 'instance']

5.2、启动Alertmanager

# 此命令是前台启动命令
[root@alertmanager ~]# /usr/local/alertmanager/alertmanager

5.3、监听端口

  • Alertmanager默认监听9093端口
[root@alertmanager ~]# netstat -anpt | grep 9093
tcp6       0      0 :::9093                 :::*                    LISTEN      8393/alertmanager

六、配置Prometheus报警规则

6.1、编辑配置文件

[root@prometheus ~]# cat /usr/local/prometheus/prometheus.yml 
global:scrape_interval: 3s evaluation_interval: 15s alerting:alertmanagers:- static_configs:- targets:- 192.168.93.102:9093  ### 报警的中间件地址(Alertmanager的访问地址)rule_files:- "/usr/local/prometheus/rules.yml"  ### 规则文件地址scrape_configs:- job_name: "prometheus"static_configs:- targets: ["localhost:9090"]- job_name: "alertmanager"static_configs:- targets: ["192.168.93.102:9100"]

6.2、编辑规则文件

  • 规则文件内容:当监控数据,到达什么数值后,触发Alertmanager的报警
[root@prometheus ~]# cat /usr/local/prometheus/rules.yml
groups:
- name: wzh-alertrules:- alert: 102节点挂掉啦          #当promeQL这个语句=0时(节点挂掉),开始报警expr: up{instance="192.168.93.102:9100"} == 0  # PromeSQL语言(up{instance="192.168.93.102:9100"})#连续3s=0才触发报警;for: 3slabels:prometheus: wzh#被监控节点ipnode: 192.168.93.102annotations:summary: "{{ $lables.instance }} 已停止运行超过 3s!"

6.3、Prometheus的配置文件语法检查

[root@prometheus ~]# cd /usr/local/prometheus/
[root@prometheus prometheus]# ./promtool check config prometheus.yml 
Checking prometheus.ymlSUCCESS: 1 rule files foundSUCCESS: prometheus.yml is valid prometheus config file syntaxChecking /usr/local/prometheus/rules.ymlSUCCESS: 1 rules found

6.4、重新加载Prometheus服务

[root@prometheus prometheus]# curl -X POST http://192.168.93.101:9090/-/reload

七、模拟被监控端挂掉

  • 如果一直没有发送报警,可以选择多次重启Prometheus服务和Alertmanager服务
[root@alertmanager ~]# systemctl stop node-exporter.service

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SpringBoot 消息队列RabbitMQ 消息确认机制确保消息发送成功和失败 生产者确认
  • 什么是HTTP DDOS,如何防护
  • C++速通LeetCode中等第12题-矩阵置零(空间O(1)含注释)
  • xml中的转义字符
  • Java-使用反射来处理对象,并构建新的JSON数据结构
  • windows C++ 并行编程-异步消息块(四)
  • Java集合(List篇)
  • fiddler抓包06_抓取https请求(chrome)
  • 财富通公司开发维修售后小程序,解决售后维修问题
  • 【摘抄】软件工程师认知
  • 量子噪声流加密(一:整体框架描述)
  • 惠海H6118 DC-DC 降压恒流芯片30V36v40V48V降12V9V24V36V 1.2A大电流 调光降压芯片IC舞台灯
  • 学习CubeIDE——外设中断开发
  • 活动目录安全
  • go注册中心Eureka,注册到线上和线下,都可以访问
  • (三)从jvm层面了解线程的启动和停止
  • 《深入 React 技术栈》
  • extjs4学习之配置
  • Linux下的乱码问题
  • Python_OOP
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • vue学习系列(二)vue-cli
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 你真的知道 == 和 equals 的区别吗?
  • 如何学习JavaEE,项目又该如何做?
  • 鱼骨图 - 如何绘制?
  • Spring第一个helloWorld
  • ​Python 3 新特性:类型注解
  • # 数论-逆元
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (SERIES12)DM性能优化
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (笔试题)合法字符串
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (第一天)包装对象、作用域、创建对象
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (算法二)滑动窗口
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET C# 配置 Options
  • .NET Core跨平台微服务学习资源
  • .NET Core引入性能分析引导优化
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .Net 路由处理厉害了
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题