Prometheus+Grafana新手友好教程:从零开始搭建轻松掌握强大的警报系统

一、预警方案

Prometheus+Grafana 实现邮件报警的方案主要有以下几种:

方案一:使用 Prometheus 的 Alertmanager 组件

Prometheus 的 Alertmanager 组件是一个专门用于告警的组件,它可以将告警发送到多种通知渠道,包括邮件。要使用 Alertmanager 实现邮件报警,需要在 Alertmanager 的配置文件中添加邮件通知配置。以下是邮件通知配置的示例:

vbnet 复制代码
receivers:
- name: "mail"
  email_configs:
  - to: "user@example.com"
    from: "alertmanager@example.com"
    server: "smtp.example.com"
    port: 25
    username: "user"
    password: "password"

在 Grafana 中,可以创建告警规则,并将告警规则与 Alertmanager 的邮件通知配置关联起来。

方案二:使用 Grafana 的 Alert Notification

Grafana 的 Alert Notification 功能可以让您直接在 Grafana 中配置邮件通知。

要使用 Grafana 的 Alert Notification 实现邮件报警,需要在 Grafana 的配置文件中添加邮件通知配置。以下是邮件通知配置的示例:

yaml 复制代码
alerts:
- name: "CPU usage is too high"
  alert_rules:
  - alert_rule_id: "1"
  notification_channels:
  - name: "mail"
    email_configs:
    - to: "user@example.com"
      from: "alertmanager@example.com"
      server: "smtp.example.com"
      port: 25
      username: "user"
      password: "password"

在 Grafana 中,可以创建告警规则,并将告警规则与 Grafana 的邮件通知配置关联起来。

方案三:使用第三方告警组件

除了 Prometheus 和 Grafana 自带的告警功能外,还可以使用第三方告警组件来实现邮件报警。例如,OneAlert 是一个开源的告警组件,它可以将告警发送到多种通知渠道,包括邮件。要使用 OneAlert 实现邮件报警,需要在 OneAlert 的配置文件中添加邮件通知配置。以下是邮件通知配置的示例:

yaml 复制代码
alerts:
- name: "CPU usage is too high"
  alert_rules:
  - alert_rule_id: "1"
  notification_channels:
  - name: "mail"
    email_configs:
    - to: "user@example.com"
      from: "alertmanager@example.com"
      server: "smtp.example.com"
      port: 25
      username: "user"
      password: "password"

在 Grafana 中,可以创建告警规则,并将告警规则与 OneAlert 的邮件通知配置关联起来。

二、搭建预警

环境准备

以下是本文所需的环境:

  • 一台运行 Linux 的服务器(建议使用 CentOS 或 Ubuntu)
  • Docker环境
  • Prometheus
  • Node Exporter

Grafana安装

修改配置文件

bash 复制代码
vim /data/grafana/grafana.ini

复制以下内容

ini 复制代码
###SMTP / Emailing ###
[smtp]
enabled = true
host = smtp.exmail.qq.com:465	#这里换成自己的smtp及端口
user = xx.qq.com	#这里换成自己的邮箱地址
password = xx	#这里换成自己的邮箱密码
;cert_file =
;key_file =
;skip_verify = false
from_address = xx.qq.com #一般与上面的邮箱地址一致
from_name = Grafana
ehlo_identity = 
startTLS_policy = 

[emails]
welcome_email_on_sign_up = true
templates_pattern = emails/*.html, emails/*.txt
content_types = text/html

除了注明要改的其它的都可以不变,然后启动docker

bash 复制代码
docker  run -d --name=grafana  -p 3000:3000  \
-v /data/grafana/grafana.ini:/etc/grafana/grafana.ini \
grafana/grafana

基本设置

打开grafana的控制台:xx.xx.xx.xx:3000/ 用户名、密码:admin/admin

设置数据源,如果设置过的可以跳过。

保存就可以了,接下来我们来设置预警。

Contact points(创建告警渠道)

进入后选择Contact points->New contact points

设置完成后可以试试邮件是否设置成功,点击Test

弹出的窗体点击

这样就说明邮件设置成功,如果有异常这里也会红色的提示。

这是收到的测试邮件效果

没问题后就保存

Notification policies(创建告警通道匹配规则)

Alert rules(配置告警策略)

Folder下拉没有东西,可以随便填个名称:

填写时会在下拉列表出现Create:的效果

在这栏的最下面会多出一条

我们选择一个变量,并设置它的预警规则

当最近的F值(可用内存值)高于3时就会预警。

条件就是上面的G表达式不用变,下面的时间可以调整一下,每30秒进行一次规则检查,如果符合报警条件,延迟5分钟进行报警。

Add details for your alert,这里填写一个信息就可以保存。

等待 30s - 1min之后,观察是否可以接收到告警

如果发现这些按钮的地址都是localhost想修改的话

可以vim grafana.ini增加

ini 复制代码
[server]
protocol = http
http_port = 3000
domain = 10.9.2.50

然后docker restart grafana

相关推荐
weixin_462446238 分钟前
使用 Go 实现 SSE 流式推送 + 打字机效果(模拟 Coze Chat)
开发语言·后端·golang
JIngJaneIL27 分钟前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
小信啊啊1 小时前
Go语言切片slice
开发语言·后端·golang
Victor3563 小时前
Netty(20)如何实现基于Netty的WebSocket服务器?
后端
缘不易3 小时前
Springboot 整合JustAuth实现gitee授权登录
spring boot·后端·gitee
Kiri霧3 小时前
Range循环和切片
前端·后端·学习·golang
WizLC3 小时前
【Java】各种IO流知识详解
java·开发语言·后端·spring·intellij idea
Victor3563 小时前
Netty(19)Netty的性能优化手段有哪些?
后端
爬山算法3 小时前
Netty(15)Netty的线程模型是什么?它有哪些线程池类型?
java·后端
白宇横流学长4 小时前
基于SpringBoot实现的冬奥会科普平台设计与实现【源码+文档】
java·spring boot·后端