Prometheus告警Alertmanager部署

news2024/11/18 21:48:08

Prometheus告警Alertmanager部署

资源监控一般离不开预警,因为我们不可能每时每刻都盯着某个资源监控看,而且在实际的工作中当中我们搭建的解决方案涉及到的服务器是多台甚至数十台,所以更加不现实,因此资源告警是一个必不可少的一个模块。

Alertmanager告警原理

首先我们了解下alertmanager的基本的报警原理
Prometheus Server(监控规则-告警)–push->AlertManager(Router-Receiver)–notify->Email/企业微信…
通过Prometheus Server中配置的监控规则采集数据,当采集的数据经过一定的计算符合配置的告警规则时,就将把告警对应的内容信息推送给alertmanager模块,alertmanager模块根据配置规则将报警推送给邮件或者企业微信内容,具体可以参考官方文档:https://prometheus.io/docs/alerting/latest/configuration/

Alertmanager告警部署

alertmanager主要进行报警
1.首先我们进入Prometheus的官方网站的下载页面:https://prometheus.io/download/获取对应的版本。我们会看到如下界面。
在这里插入图片描述
然后这里我们选择altermanager-0.21.0.linux-amd64.tar.gz的版本进行点击进入下载,我们可以获取相应的安装包。
2.将下载下来的文件包通过xshell上传到跟我们prometheus同一台服务器上(也可以不同服务器),把程序包放到一个目录下面:

[root@localhost Stability]# pwd
/ftp/Stability
[root@localhost Stability]# ls |grep al
alertmanager-0.21.0.linux-amd64.tar.gz

3.通过以下命令对altermanager进行安装。

首先进行解压:
[root@localhost Stability]# tar -zxvf alertmanager-0.21.0.linux-amd64.tar.gz 
alertmanager-0.21.0.linux-amd64/
alertmanager-0.21.0.linux-amd64/alertmanager
alertmanager-0.21.0.linux-amd64/amtool
alertmanager-0.21.0.linux-amd64/NOTICE
alertmanager-0.21.0.linux-amd64/LICENSE
alertmanager-0.21.0.linux-amd64/alertmanager.yml
解压完成以后对文件进行重命名:
[root@localhost Stability]# mv alertmanager-0.21.0.linux-amd64 alertmanager

因为很多公司服务器所在的环境都属于公司内网中,服务器无法获取外网地址。如果在有外网的情况下是可以简化步骤1、步骤2中的步骤。只需要在在步骤1中获取下载的地址,然后进入CentOS操作系统下,使用如下命令即可获取安装包。

wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz

4.设置node_export后台启动,命令如下。

# 首先我们需要确定操作系统版本,CentOS7及以上可以成服务的模式
root@localhost:/usr/local/monitor/node_exporter# cat /etc/redhat-release 
CentOS release 6.9 (Final)
# 然后我们需要在prometheus.yml文件中添加如下信息
[root@localhost prometheus]# vi prometheus.yml
# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets: ['10.31.128.110:7093']
rule_files:
  - /ftp/Stability/prometheus/rules/*.rules
# 接下来我们就要在对应的规则文件路径下进行规则配置,假设我们配置一个服务器Down的报警,操作如下
[root@localhost rules]# pwd
/ftp/Stability/prometheus/rules
[root@localhost rules]# vi service_down.rules
groups:
- name: ServiceStatus #规则组名称   
  rules:
  - alert: ServiceStatusAlert  #单个规则的名称
    expr: up == 0   #匹配规则, up==0
    for: 10s        #持续时间
    labels:         #标签
      project: ServiceDownAlert    #自定义lables
    annotations:            #告警正文
      summary: "Instance {{ $labels.instance }} down"
      description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minutes."
# 然后我们再配置alertmanager的告警规则
[root@localhost alertmanager]# vi alertmanager.yml
我们可以看到原先的配置文件如下:
global:
  resolve_timeout: 5m

route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
  receiver: 'web.hook'
receivers:
- name: 'web.hook'
  webhook_configs:
  - url: 'http://127.0.0.1:5001/'
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
equal: ['alertname', 'dev', 'instance']
然后我们进行改造成如下配置信息
#全局配置,比如配置发件人
global:
  resolve_timeout: 5m    #处理超时时间,默认为5min
  smtp_smarthost: 'mail.XXXXX.com:25'  # 邮箱smtp服务器代理
  smtp_from: 'XXXX@XXXX.com' # 发送邮箱名称
  smtp_auth_username: 'XXXX@XXXX.com' # 邮箱名称
  smtp_auth_password: 'XXXXXXX'              # 邮箱密码或授权码
  smtp_require_tls: false

# 定义路由树信息,这个路由可以接收到所有的告警,还可以继续配置路由,比如project: zhidaoAPP(prometheus 告警规则中自定义的lable)发给谁,project: baoxian的发给谁
route:
  group_by: ['alertname'] # 报警分组依据
  group_wait: 10s         # 最初即第一次等待多久时间发送一组警报的通知
  group_interval: 10s     # 在发送新警报前的等待时间
  repeat_interval: 10s      # 发送重复警报的周期 对于email配置中,此项不可以设置过低,否则将会由于邮件发送太多频繁,被smtp服务器拒绝
  receiver: 'email'       # 发送警报的接收者的名称,以下receivers name的名称

# 定义警报接收者信息
receivers:
  - name: 'email'  # 路由中对应的receiver名称
    email_configs: # 邮箱配置
    - to: 'XX@XXX.com'   # 接收警报的email配置
      #html: '{{ template "test.html" . }}'  # 设定邮箱的内容模板注意:我们改过prometheus.yml文件,所以需要重载

5.设置alertmanager后台启动,命令如下。

# 进入后台启动服务目录
[root@localhost Stability]# cd /usr/lib/systemd/system
# 拷贝一份现有的service服务脚本
[root@localhost system]# cp prometheus.service alertmanager.service
# 使用vim命令对文件记性编辑
[root@localhost system]# vim alertmanager.service
# 修改成以下内容后进行保存退出
[Unit]
Description=AlertManager
Documentation=https://prometheus.io/
After=network.target

[Service]
ExecStart=/ftp/Stability/alertmanager/alertmanager --config.file=/ftp/Stability/alertmanager/alertmanager.yml --storage.path=/ftp/Stability/alertmanager/data
Restart=on-failure

[Install]
WantedBy=multi-user.target 
# 保存退出后我们进行重新加载配置
[root@localhost system]# systemctl daemon-reload
# 然后启动alertmanager服务
[root@localhost system]# systemctl start alertmanager
# 查看进程是否在线
[root@localhost alertmanager]# systemctl status alertmanager
● alertmanager.service - AlertManager
   Loaded: loaded (/usr/lib/systemd/system/alertmanager.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2021-03-24 10:31:49 CST; 1s ago

6.启动完成以后,我们就可以用如下地址进行访问9093地址
在这里插入图片描述
这样我们一个报警就已经设置好了。

Alertmanager告警触发实例

因为我们目前的测试环境网段是无法进行邮件发送的,主要是跟网络隔离,所以这里使用windows环境的Alertmanager相关报进行邮件模拟发送。主要在prometheus上面简历了两个告警规则。

[root@localhost rules]# ls
cpu_high.rules  service_down.rules
规则1:当服务器10.31.131.20的CPU使用率超过0即报警
[root@localhost rules]# cat cpu_high.rules 
groups:
- name: ServiceStatus #规则组名称   
  rules:
  - alert: ServiceStatusAlert  #单个规则的名称
    expr:  sum(count(node_cpu_seconds_total{instance="10.31.131.20:7100", mode='system'}) by (cpu,instance)) by(instance) > 0  #匹配规则
    for: 10s        #持续时间
    labels:         #标签
      project: ServiceDownAlert    #自定义lables
    annotations:            #告警正文
      summary: "Instance {{ $labels.instance }} cpu higer"
      description: "{{ $labels.instance }} of job {{ $labels.job }} cpu is very higer."
规则2:当相应的服务在线,即报警
[root@localhost rules]# cat service_down.rules 
groups:
- name: ServiceStatus #规则组名称   
  rules:
  - alert: ServiceStatusAlert  #单个规则的名称
    expr: up == 1   #匹配规则, up==0
    for: 10s        #持续时间
    labels:         #标签
      project: ServiceDownAlert    #自定义lables
    annotations:            #告警正文
      summary: "Instance {{ $labels.instance }} down"
      description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minutes."

当触发报警以后,我们可以登录http://10.31.128.110:9090/classic/alerts的界面看到告警产生:
在这里插入图片描述
Inactive:告警仅仅生效,未发生任何事宜。
Pending:已触发阈值,但为满足告警持续时间
Firing:已触发阈值且满足告警持续时间。报警发送给接受者
接收的报警邮件如下:
在这里插入图片描述

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

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

相关文章

男士内裤品牌哪个好?2024公认好穿的五款男士内裤分享

男士内裤作为大家每天都要长时间穿着的贴身衣物,它的重要性不言而喻。为了确保健康与卫生,专家和医生建议您每三个月更换一次内裤,避免细菌滋生,让身体更加清爽自在。而一款优质的内裤,不仅要有舒适的弹性,…

学生课程信息管理系统

摘 要 目前,随着科学经济的不断发展,高校规模不断扩大,所招收的学生人数越来越 多;所开设的课程也越来越多。随之而来的是高校需要管理更多的事务。对于日益增 长的学生相关专业的课程也在不断增多,高校对其管理具有一…

《无与伦比》Centos7 扩容到已有逻辑卷

命令可以查找硬盘和分区情况 fdisk -l lsblk

【会议征稿,CPS出版】第三届先进机械电子与电气工程国际学术会议(ICAMEE 2024,7月19-21)

第三届先进机械电子与电气工程国际学术会议(ICAMEE 2024)将于2024年7月19-21日在桂林隆重举行。会议主要围绕“机械电子”、“电气工程” 等研究领域展开讨论, 旨在为机械电子、电气工程等领域的专家学者、工程技术人员、技术研发人员提供一个…

项目文章 | ATAC-seq联合转录组探究牦牛肌肉的调控机制

还在苦恼没有研究方向?还在找寻开启调控表观调控大门的钥匙?拿到材料不知如何下手?两篇ATAC联合转录组的牦牛调控机制分析或许能给你一点方向。 为了研究不同牦牛品种之间以及牦牛在成熟过程中,骨骼肌的调控如何影响肉类品质&…

OpenStack快速入门

任务一 熟悉OpenStack图形界面操作 1.1 Horizon项目 •各OpenStack服务的图形界面都是由Horizon提供的。 •Horizon提供基于Web的模块化用户界面。 •Horizon为云管理员提供一个整体的视图。 •Horizon为终端用户提供一个自主服务的门户。 •Horizon由云管理员进行管理…

Datacom HCIE实验考试通过率90%!深圳智汇云校传来5月捷报!

坚持不懈地努力,才能取得成功的果实 这是不变的真理 深圳云校传来5月捷报 在Datacom HCIE实验考试中 共有10名学员应战 其中9名学员凭借出色的表现 一次性通过了考试 展现出了扎实的技术能力 通过率高达90% (华为历年考试平均通过率约60%&#…

【Hudi】基础概念-数据写

目录 数据写写操作写流程(UPSERT)写流程(Insert)写流程(Insert Overwrite)Key生成策略删除策略 数据写 写操作 UPSERT:默认行为,数据先通过index打标,有一些启发式算法决定消息的组织以及优化文件的大小>CDC导入INSERT:跳过index,写入效…

Java历史

Java程序设计语言史 Java是一种面向对象的编程语言,由Sun Microsystems于1990年初由开发人员James Gosling、Mike Sheridan和Patrick Naughton开发。1991年,詹姆斯戈斯林和他的朋友们组成了一个名为“绿色团队”的团队,进一步致力于这个项…

如何使用nginx 将新老网站域名重定向?(亲测收藏版)

目录 1. 安装Nginx 2. 配置Nginx 3. 启用新配置 结论 最近公司需要推行海外的业务,原来公司的名字麦聪软件的官网maicongs.com暂时用不上了,想启用sqlynx.com,但因为历史流量的原因,有很多的业务是指向的maicongs.com&#xf…

小程序分页新写法

// pages/query/query.js import {request } from ../../utils/request; Page({/*** 页面的初始数据*/data: {tabClickIndex: ,page: 1,limit: 10,listData: []},/*** 生命周期函数--监听页面加载*/onLoad(options) {this.getList()},/*** 生命周期函数--监听页面初次渲染完成*…

Sylar C++高性能服务器学习记录23 【Http模块-知识储备篇】

早在19年5月就在某站上看到sylar的视频了,一直认为这是一个非常不错的视频。 由于本人一直是自学编程,基础不扎实,也没有任何人的督促,没能坚持下去。 每每想起倍感惋惜,遂提笔再续前缘。 为了能更好的看懂sylar&…

Python10 python多线程

1.什么是python多线程 Python的多线程指的是在一个Python程序中同时运行多个线程,以达到并发执行多个任务的目的。线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。 在Python中,多线程的…

C# OCCT Winform 选中模型改变状态

选中状态设置 _context new AIS_InteractiveContext(_viewer);var selectionDrawer new Prs3d_Drawer();selectionDrawer.SetColor(Colors.Selection);selectionDrawer.SetDisplayMode(1);selectionDrawer.SetTransparency(0.1f);_context.SetSelectionStyle(selectionDrawe…

【机器学习】机器学习重要方法——无监督学习:理论、算法与实践

文章目录 引言第一章 无监督学习的基本概念1.1 什么是无监督学习1.2 无监督学习的主要任务 第二章 无监督学习的核心算法2.1 聚类算法2.1.1 K均值聚类2.1.2 层次聚类2.1.3 DBSCAN聚类 2.2 降维算法2.2.1 主成分分析(PCA)2.2.2 t-SNE 2.3 异常检测算法2.3…

【Gradio】Chatbot | 如何使用 Gradio Blocks 创建自定义聊天机器人

简介 重要提示:如果您刚开始接触,我们建议使用 gr.ChatInterface 来创建聊天机器人——它是一个高级抽象,使得可以快速创建漂亮的聊天机器人应用程序,往往只需一行代码。在这里了解更多信息。 本教程将展示如何使用 Gradio 的低级…

【网络安全】简单的免杀方法(非常详细)零基础入门到精通,收藏这一篇就够了_免杀加壳工具

目录 一、免杀的概念 二、免杀系统搭建 三、免杀工具介绍 1、myccl 2、C32asm 3、OD 4、LordPE 5、ImportREC 6、VC6.0/visual studio 7、数字签名 四、关于杀软排名不分前后 1、360。 2、金山毒霸 3、江民 4、瑞星 5、安天防线 6、卡巴斯基 7、NOD32 8、诺…

【日记】被客户一顿输出该怎么办(431 字)

正文 上午有个客户在电话里对着我一顿输出,说他们没有发票财务账务没法处理怎么怎么的。话里话外满满一股 “全是你们的错” 的味道。 当时我很想笑,大姐,你对我输出有啥用啊。票是上级行开的,我们又没有开票权限,对我…

openEuler23.09安装MySQL8.4.0

在openEuler-23.09上安装MySQL8.4.0 一、MySQL数据库服务环境搭建 操作系统版本 openEuler-23.09-x86_64-dvd.iso ,安装步骤此处省略。。。 MySQL8.4.0下载地址 https://dev.mysql.com/downloads/mysql/ 1.1、下载及上传mysql二进制安装包 上传mysql-8.4.0-linu…

游戏中插入音效

一、背景音乐 准备:素材音乐 方法: 1、方法1: (1) 将背景音乐 bgAudio 拖放到Hierarchy面板 (2) 选中 bgAudio,勾选开始运行就播放、循环播放。调节音量(volume) 2、方法2: (1) Create Empty&#x…