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

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
可观测监控 Prometheus 版,每月50GB免费额度
简介: 今天我们就来聊聊 基于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])
目录
相关文章
|
1月前
|
运维 监控 自动驾驶
低代码运维平台:是“运维福音”,还是“甩手掌柜”?
低代码运维平台:是“运维福音”,还是“甩手掌柜”?
95 29
|
4月前
|
运维 监控 Linux
WGCLOUD运维平台的分布式计划任务功能介绍
WGCLOUD是一款免费开源的运维监控平台,支持主机与服务器性能监控,具备实时告警和自愈功能。本文重点介绍其计划任务功能模块,可统一管理Linux和Windows主机的定时任务。相比手动配置crontab或Windows任务计划,WGCLOUD提供直观界面,通过添加cron表达式、执行指令或脚本并选择主机,即可轻松完成任务设置,大幅提升多主机任务管理效率。
|
7月前
|
Prometheus Kubernetes 监控
Kubernetes监控:Prometheus与AlertManager结合,配置邮件告警。
完成这些步骤之后,您就拥有了一个可以用邮件通知你的Kubernetes监控解决方案了。当然,所有的这些配置都需要相互照应,还要对你的Kubernetes集群状况有深入的了解。希望这份指南能帮助你创建出适合自己场景的监控系统,让你在首次发现问题时就能做出响应。
347 22
|
7月前
|
存储 人工智能 运维
阿里云操作系统控制台评测:国产AI+运维 一站式运维管理平台
本文详细评测了阿里云操作系统控制台,作为一款集运维管理、智能助手和系统诊断于一体的工具,它为企业提供了高效管理云资源的解决方案。文章涵盖登录与服务开通、系统管理与实例纳管、组件管理与扩展功能、系统诊断与问题排查以及实时热点分析与性能优化等内容。通过实际操作展示,该平台显著提升了运维效率,并借助AI智能助手简化了复杂操作。建议进一步完善组件库并增强第三方兼容性,以满足更多高级运维需求。
455 2
|
7月前
|
Prometheus 运维 监控
运维实战来了!如何构建适用于YashanDB的Prometheus Exporter
今天分享的是构建YashanDB Exporter的核心设计理念和关键方法,希望也能为你的运维实战加分!
|
10月前
|
存储 数据采集 Prometheus
Grafana Prometheus Altermanager 监控系统
Grafana、Prometheus 和 Alertmanager 是一套强大的开源监控系统组合。Prometheus 负责数据采集与存储,Alertmanager 处理告警通知,Grafana 提供可视化界面。本文简要介绍了这套系统的安装配置流程,包括各组件的下载、安装、服务配置及开机自启设置,并提供了访问地址和重启命令。适用于希望快速搭建高效监控平台的用户。
526 20
|
9月前
|
运维 监控 Cloud Native
构建深度可观测、可集成的网络智能运维平台
本文介绍了构建深度可观测、可集成的网络智能运维平台(简称NIS),旨在解决云上网络运维面临的复杂挑战。内容涵盖云网络运维的三大难题、打造云原生AIOps工具集的解决思路、可观测性对业务稳定的重要性,以及产品发布的亮点,包括流量分析NPM、网络架构巡检和自动化运维OpenAPI,助力客户实现自助运维与优化。
|
10月前
|
Prometheus 监控 Cloud Native
Prometheus+Grafana监控Linux主机
通过本文的步骤,我们成功地在 Linux 主机上使用 Prometheus 和 Grafana 进行了监控配置。具体包括安装 Prometheus 和 Node Exporter,配置 Grafana 数据源,并导入预设的仪表盘来展示监控数据。通过这种方式,可以轻松实现对 Linux 主机的系统指标监控,帮助及时发现和处理潜在问题。
825 7
|
4月前
|
Prometheus 监控 Cloud Native
云原生监控实战:Prometheus+Grafana快速搭建指南
云原生监控实战:Prometheus+Grafana快速搭建指南
|
4月前
|
存储 Prometheus 监控
OSS监控体系搭建:Prometheus+Grafana实时监控流量、错误码、存储量(开源方案替代云监控自定义视图)
本方案基于Prometheus构建OSS监控系统,涵盖架构设计、指标采集、可视化、告警及性能优化,助力企业实现高可用、低成本的自建监控体系。
448 1

热门文章

最新文章

推荐镜像

更多