基于Prometheus和Grafana的监控平台 - 运维告警

简介: 今天我们就来聊聊 基于Prometheus和Grafana的监控平台的异常告警功能,这也是Prometheus系列的最后一篇。

通过前面几篇文章我们搭建好了监控环境并且监控了服务器、数据库、应用,运维人员可以实时了解当前被监控对象的运行情况,但是他们不可能时时坐在电脑边上盯着DashBoard,这就需要一个告警功能,当服务器或应用指标异常时发送告警,通过邮件或者短信的形式告诉运维人员及时处理。


告警方式


Grafana


新版本的Grafana已经提供了告警配置,直接在dashboard监控panel中设置告警即可,但是我用过后发现其实并不灵活,不支持变量,而且好多下载的图表无法使用告警,所以我们不选择使用Grafana告警,而使用Alertmanager。


1.png

Alertmanager


相比于Grafana的图形化界面,Alertmanager需要依靠配置文件实现,配置稍显繁琐,但是胜在功能强大灵活。接下来我们就一步一步实现告警通知。


告警类型


Alertmanager告警主要使用以下两种:


  • 邮件接收器 email_config


  • Webhook接收器 webhook_config,会用post形式向配置的url地址发送如下格式的参数。


{
"version": "2",
"status": "<resolved|firing>",
"alerts": [{
"labels":  <object> ,
"annotations":  <object> ,
"startsAt": "<rfc3339>",
"endsAt": "<rfc3339>"         }]
 }  


这次主要使用邮件的方式进行告警。


实现步骤


下载


从GitHub上下载最新版本的Alertmanager,将其上传解压到服务器上。


tar -zxvf alertmanager-0.19.0.linux-amd64.tar.gz


配置Alertmanager


vialertmanager.ymlglobal:
resolve_timeout: 5msmtp_smarthost: 'mail.163.com:25'#邮箱发送端口smtp_from: 'xxx@163.com'smtp_auth_username: 'xxx@163.com'#邮箱账号smtp_auth_password: 'xxxxxx'#邮箱密码smtp_require_tls: falseroute:
group_by: ['alertname']
group_wait: 10s#最初即第一次等待多久时间发送一组警报的通知group_interval: 10s#在发送新警报前的等待时间repeat_interval: 1h#发送重复警报的周期对于email配置中,此项不可以设置过低,否则将会由于邮件发送太多频繁,被smtp服务器拒绝receiver: 'email'receivers:
-name: 'email'email_configs:
-to: 'xxx@xxx.com'


修改完成后可以使用./amtool check-config alertmanager.yml校验文件是否正确。


2.png


校验正确后使用命令启动alertmanager。nohup ./alertmanager &。(第一次启动可以不使用nohup静默启动,方便后面查看日志)


上面的配置中我们只定义了一个路由,那就意味着所有由Prometheus产生的告警在发送到Alertmanager之后都会通过名为email的receiver接收。实际上,对于不同级别的告警,会有不同的处理方式,因此在route中,我们还可以定义更多的子Route。具体配置规则大家可以去百度进一步了解。


配置Prometheus在Prometheus安装目录下建立rules文件夹,放置所有的告警规则文件。


alerting:
alertmanagers:
-static_configs:
-targets: ['192.168.249.131:9093']
rule_files:
-rules/*.yml  


在rules文件夹下建立告警规则文件service_down.yml,当服务器下线时发送邮件。


groups:
-name: ServiceStatusrules:
-alert: ServiceStatusAlertexpr: up==0for: 2mlabels:
team: nodeannotations:
summary: "Instance {{ $labels.instance }} has bean down"description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 2 minutes."value: "{{ $value}}"


配置详解alert:告警规则的名称。expr:基于PromQL表达式告警触发条件,用于计算是否有时间序列满足该条件。for:评估等待时间,可选参数。用于表示只有当触发条件持续一段时间后才发送告警。在等待期间新产生告警的状态为PENDING,等待期后为FIRING。labels:自定义标签,允许用户指定要附加到告警上的一组附加标签。annotations:用于指定一组附加信息,比如用于描述告警详细信息的文字等,annotations的内容在告警产生时会一同作为参数发送到Alertmanager。


配置完成后重启Prometheus,访问Prometheus查看告警配置。


3.png


测试


关闭node_exporter,过2分钟就可以收到告警邮件啦,截图如下:


4.png


Alertmanager的告警内容支持使用模板配置,可以使用好看的模板进行渲染,感兴趣的可以试试!


The More


node exporter的一些指标计算语句


CPU使用率(单位为percent)


(avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)


内存已使用(单位为bytes)


node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Cached_bytes - node_memory_Buffers_bytes - node_memory_Slab_bytes


内存使用量(单位为bytes/sec)


node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Cached_bytes - node_memory_Buffers_bytes - node_memory_Slab_bytes


内存使用率(单位为percent)


((node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Cached_bytes - node_memory_Buffers_bytes - node_memory_Slab_bytes)/node_memory_MemTotal_bytes) * 100  


server1的内存使用率(单位为percent)


((node_memory_MemTotal_bytes{instance="server1"} - node_memory_MemAvailable_bytes{instance="server1"})/node_memory_MemTotal_bytes{instance="server1"}) * 100


server2的磁盘使用率(单位为percent)


((node_filesystem_size_bytes{fstype=~"xfs|ext4",instance="server2"} - node_filesystem_free_bytes{fstype=~"xfs|ext4",instance="server2"}) / node_filesystem_size_bytes{fstype=~"xfs|ext4",instance="server2"}) * 100  


uptime时间(单位为seconds)


time() - node_boot_time


server1的uptime时间(单位为seconds)


time() - node_boot_time_seconds{instance="server1"}


网络流出量(单位为bytes/sec)


irate(node_network_transmit_bytes_total{device!~"lo|bond[0-9]|cbr[0-9]|veth.*"}[5m]) > 0


server1的网络流出量(单位为bytes/sec)


irate(node_network_transmit_bytes_total{instance="server1", device!~"lo|bond[0-9]|cbr[0-9]|veth.*"}[5m]) > 0


网络流入量(单位为bytes/sec)


irate(node_network_receive_bytes_total{device!~"lo|bond[0-9]|cbr[0-9]|veth.*"}[5m]) > 0


server1的网络流入量(单位为bytes/sec)


irate(node_network_receive_bytes_total{instance="server1", device!~"lo|bond[0-9]|cbr[0-9]|veth.*"}[5m]) > 0


磁盘读取速度(单位为bytes/sec)


  • irate(node_disk_read_bytes_total{device=~"sd.*"}[5m])
目录
相关文章
|
9月前
|
运维 监控 自动驾驶
低代码运维平台:是“运维福音”,还是“甩手掌柜”?
低代码运维平台:是“运维福音”,还是“甩手掌柜”?
258 29
|
8月前
|
存储 运维 监控
57_大模型监控与运维:构建稳定可靠的服务体系
随着大语言模型(LLM)技术的快速发展和广泛应用,如何确保模型在生产环境中的稳定运行、高效服务和安全合规已成为企业和开发者面临的关键挑战。2025年,大模型服务已从实验室走向各行各业的核心业务流程,其运维复杂度也随之呈指数级增长。与传统软件系统不同,大模型服务具有参数规模庞大、计算密集、行为不确定性高等特点,这使得传统的运维监控体系难以满足需求。
1621 0
|
10月前
|
运维 Prometheus 监控
可观测性不是监控的马甲:运维团队到底该怎么升级?
可观测性不是监控的马甲:运维团队到底该怎么升级?
270 7
|
消息中间件 运维 监控
智能运维,由你定义:SAE自定义日志与监控解决方案
通过引入 Sidecar 容器的技术,SAE 为用户提供了更强大的自定义日志与监控解决方案,帮助用户轻松实现日志采集、监控指标收集等功能。未来,SAE 将会支持 istio 多租场景,帮助用户更高效地部署和管理服务网格。
721 51
|
数据采集 运维 监控
数据采集监控与告警:错误重试、日志分析与自动化运维
本文探讨了数据采集技术从“简单采集”到自动化运维的演进。传统方式因反爬策略和网络波动常导致数据丢失,而引入错误重试、日志分析与自动化告警机制可显著提升系统稳定性与时效性。正方强调健全监控体系的重要性,反方则担忧复杂化带来的成本与安全风险。未来,结合AI与大数据技术,数据采集将向智能化、全自动方向发展,实现动态调整与智能识别反爬策略,降低人工干预需求。附带的Python示例展示了如何通过代理IP、重试策略及日志记录实现高效的数据采集程序。
666 7
数据采集监控与告警:错误重试、日志分析与自动化运维
|
运维 监控 中间件
Linux运维笔记 - 如何使用WGCLOUD监控交换机的流量
WGCLOUD是一款开源免费的通用主机监控工具,安装使用都非常简单,它可以监控主机、服务器的cpu、内存、磁盘、流量等数据,也可以监控数据库、中间件、网络设备
|
Prometheus 监控 Cloud Native
Prometheus+Grafana(docker安装)
本文档详细介绍了如何使用Docker容器快速部署Prometheus监控系统和Grafana数据可视化平台。该方案适用于需要快速搭建监控环境的开发测试场景,具备部署简单、资源占用低、易于维护等特点。
|
Prometheus Kubernetes 监控
Kubernetes监控:Prometheus与AlertManager结合,配置邮件告警。
完成这些步骤之后,您就拥有了一个可以用邮件通知你的Kubernetes监控解决方案了。当然,所有的这些配置都需要相互照应,还要对你的Kubernetes集群状况有深入的了解。希望这份指南能帮助你创建出适合自己场景的监控系统,让你在首次发现问题时就能做出响应。
840 22
|
运维 监控 Linux
WGCLOUD运维平台的分布式计划任务功能介绍
WGCLOUD是一款免费开源的运维监控平台,支持主机与服务器性能监控,具备实时告警和自愈功能。本文重点介绍其计划任务功能模块,可统一管理Linux和Windows主机的定时任务。相比手动配置crontab或Windows任务计划,WGCLOUD提供直观界面,通过添加cron表达式、执行指令或脚本并选择主机,即可轻松完成任务设置,大幅提升多主机任务管理效率。
|
消息中间件 运维 监控
智能运维,由你定义:SAE自定义日志与监控解决方案
SAE(Serverless应用引擎)是阿里云推出的全托管PaaS平台,致力于简化微服务应用开发与管理。为满足用户对可观测性和运维能力的更高需求,SAE引入Sidecar容器技术,实现日志采集、监控指标收集等功能扩展,且无需修改主应用代码。通过共享资源模式和独立资源模式,SAE平衡了资源灵活性与隔离性。同时,提供全链路运维能力,确保应用稳定性。未来,SAE将持续优化,支持更多场景,助力用户高效用云。

热门文章

最新文章

推荐镜像

更多