图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(下)

news2025/3/1 3:07:46

一、环境介绍

本文环境,以及本文所采用数据库为GreatSQL 8.0.32-24

$ cat /etc/system-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
$ uname -a
Linux gip 3.10.0-1160.el7.x86_64 #1 SMP Tue Aug 18 14:50:17 EDT 2020 x86_64 x86_64 x86_64 GNU/Linux
$ ldd --version
ldd (GNU libc) 2.17

在上篇[图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)]中介绍了如何搭建监控系统,本文将介绍如何使用Grafana平台以及AlertManager模块的告警功能

二、Grafana之邮件告警

这里我们以邮件告警并使用QQ邮箱为例

1.开启邮件服务

登录QQ邮箱后,点击设置->账号->开启POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

file

我已经开启了,若没有开启可以开启一下,接着点击生成授权码,记得保存好授权码,接下来修改grafana邮箱配置

$ vim /usr/local/prometheus/grafana-10.1.1/conf/defaults.ini 

使用/smtp找到邮件设置的区域,按下图示例修改

file

重启Grafana服务

$ systemctl restart grafana-server.service

接下来登录Grafana网页http://172.17.137.104:3000/,添加邮件告警

file

填写NameAddresses等信息后点击Test测试下

file

可以看到已经收到邮件,测试成功

file

2.添加告警规则

可以在Grafana中添加告警规则,例如我创建了一个GreatSQL连接情况,它监测是的mysql_up这个值,若为0则连接不上GreatSQL了

file

进入编辑面板,可以看到有一个Alert的告警选项,随后我们点击Create alert rule from this panel

file

这时候就会进入告警规则设置面板

首先我们来介绍下第一部分设置警报规则名称,就是设置告警的规则名字

file

(第一部分)

第二个部分就是我们在外面展示的数据情况,在Expressions往下就是设置告警条件

file

(第二部分)

第一项last()表示最新数据,还有很多其他选项如max()表示最大值,一般我们选择last()

file

第二项就是表示我们来自哪个查询,因为我们只有一个所以选择A

第三项则标识我们要监控的值达到多少触发,触发判断是前面的选项,如图中的IS ABOVE则表示在这之上,还有其他几个选项如IS BELOW在这之下、IS OUTSIDE RANGE超出范围、IS WITHIN RANGE在范围内、HAS NO VALPUE无值。此处我们选择IS ABOVE,表达式综合就是:当mysql_up值小于1则触发。

第三部分是创建要储存规则的文件夹Folder以及评估的组Evaluation group同一组中的规则将在同一时间间隔内按顺序进行评估

file

(第三部分)

其中Pending period表示触发告警后延迟多长时间

第四部分用于添加注释Summary摘要对发生的事情和原因的简短总结,Description说明警报规则功能的说明,Runbook URL运行手册网址用于保存警报运行手册的网页

file

第五部分配置通知,用于添加自定义标签以更改通知的路由方式,如果没有设置匹配策略的话,则所有警报实例都由默认策略处理

file

点击右上角保存规则后,可以在页面中看到刚刚设定的告警规则

file

3.测试邮件告警

现在模拟GreatSQL宕机,看看会不会触发告警规则从而发送邮件报警

$ systemctl stop greatsql

因为我们设置的是1分钟,所以要1分钟以后才会再次检测GreatSQL的连接状况

下图可以看到,已经检测到GreatSQL连接不上了,进入待定状态

file

过了设定的延迟时间,显示Firing表示已经发送邮件

file

可以看到QQ邮箱中已经收到了告警邮件

file

接着我们把GreatSQL再次启动起来

$ systemctl start greatsql

当你解决完成以后,还会收到一封已解决的邮件1 resolved instances

file

三、Grafana之钉钉告警

在之前的文章中已经提到了使用钉钉告警Prometheus+Grafana+钉钉部署一个单机的MySQL监控告警系统,但是使用的是Alertmanager是普米的告警模块,并不是Grafana,所以这里在介绍下如何用Grafana配置钉钉告警。

不过钉钉在2023年9月1日起,非内部群内部群均不再支持创建自定义机器人,你需要登录钉钉开发者后台,申请开发者权限后,创建企业内部应用机器人,具体方法这边就不介绍了,需要的可以去钉钉上看详细介绍

按Prometheus+Grafana+钉钉部署一个单机的MySQL监控告警系统中的方法,先创建好钉钉机器人,接着到Grafana中添加Contact points联络点

file

接下来填入NameIntegration下拉框中找到DingDingURL中填入钉钉机器人的Webhook:

file

Message Type有两个选项,一个是卡片的模式,一个是链接的模式,以及Title标题和Message消息,接着点击Test测试一下,看看是否可以发送告警信息,这时候钉钉机器人就会发送告警测试,没问题就点击下方蓝色的Save contact point

file

如果要选择钉钉告警,可以在选项Notification policies中选择Edit

file

Default contact point修改为钉钉告警的方式,修改好点击Update default policy

file

接下来测试下,我们把GreatSQL模拟关闭,看看是否会发送告警信息

$ systemctl stop greatsql

file

没问题,成功接收到了告警信息

四、Alertmanager之邮件告警

还记得我们上篇文章安装的Alertmanager吗,其实也具有告警功能。Prometheus 包含一个报警模块,就是我们的 AlertManager,Alertmanager 主要用于接收 Prometheus 发送的告警信息,它支持丰富的告警通知渠道,而且很容易做到告警信息进行去重,降噪,分组等。在上篇中我们也往这里面添加了一些规则,忘记的可以在复读一次上篇,Alertmanager也可以钉钉告警,在Prometheus+Grafana+钉钉部署一个单机的MySQL监控告警系统有介绍,这里就来介绍下Alertmanager之邮件告警

Prometheus触发一条告警的过程

file

1.配置AlertManager

AlertManager 默认配置文件为 alertmanager.yml,路径为 /usr/local/prometheus/alertmanager-0.26.0.linux-amd64/alertmanager.yml那么,我们就来配置一下使用 Email 方式通知报警信息,这里以 QQ 邮箱为例,配置如下:

global:
  resolve_timeout: 5m
  smtp_from: '填写邮箱@qq.com'
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_auth_username: '填写邮箱@qq.com'
  smtp_auth_password: '填写QQ邮箱授权码'
  smtp_require_tls: false
  smtp_hello: 'qq.com'
route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'email'
receivers:
- name: 'email'
  email_configs:
  - to: '填写邮箱@qq.com'
    send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

yml对缩进有要求,请仔细检查

对重点参数做详细介绍:

global

全局配置,主要配置告警方式,如邮件、webhook等。

  • resolve_timeout:超时,默认5min

  • smtp_auth_password:切记QQ邮箱的授权码,非QQ账户登录密码

  • smtp_require_tls:是否使用tls,根据环境不同,来选择开启和关闭。如果提示报错email.loginAuth failed: 530 Must issue a STARTTLS command first,那么就需要设置为 true。着重说明一下,如果开启了 tls,提示报错starttls failed: x509: certificate signed by unknown authority,需要在 email_configs 下配置 insecure_skip_verify: true 来跳过 tls 验证。

route

用来设置报警的分发策略

  • group_by:用于分组聚合,对告警通知按标签(label)进行分组,将具有相同标签或相同告警名称(alertname)的告警通知聚合在一个组,然后作为一个通知发送。如果想完全禁用聚合,可以设置为group_by: [...]
  • group_wait:当一个新的告警组被创建时,需要等待'group_wait'后才发送初始通知。这样可以确保在发送等待前能聚合更多具有相同标签的告警,最后合并为一个通知发送。
  • group_interval:当第一次告警通知发出后,在新的评估周期内又收到了该分组最新的告警,则需等待'group_interval'时间后,开始发送为该组触发的新告警,可以简单理解为,group就相当于一个通道(channel)。
  • repeat_interval:告警通知成功发送后,若问题一直未恢复,需再次重复发送的间隔。
  • receiver:配置告警消息接收者,与下面配置的对应。例如常用的 email、wechat、slack、webhook 等消息通知方式。

receivers

配置报警信息接收者信息

  • to:接收警报的Email
  • send_resolved:故障恢复后通知

inhibit_rules

抑制规则配置,当存在与另一组匹配的警报(源)时,抑制规则将禁用与一组匹配的警报(目标)

配置完成后重启即可systemctl restart alertmanager.service

若启动失败可自行排查journalctl -u alertmanager.service -f,注意检查缩进问题!

接下来就可以配置AlertManager的告警规则,这个我们也在上篇提到,并且也创建rules文件夹存放规则,所以按上篇方法做即可

2.测试邮件告警

接下来我们登录到http://172.17.137.104:9090/rulesPrometheus的Rules中查看,是不是有添加完成几个告警

file

这里说明一下 Prometheus Alert 告警状态有三种状态:InactivePendingFiring

  • Inactive:非活动状态,表示正在监控,但是还未有任何警报触发。
  • Pending:表示这个警报必须被触发。由于警报可以被分组、压抑/抑制或静默/静音,所以等待验证,一旦所有的验证都通过,则将转到 Firing 状态。
  • Firing:将警报发送到 AlertManager,它将按照配置将警报的发送给所有接收者。一旦警报解除,则将状态转到 Inactive,如此循环。

file

接下来我们关闭GreatSQL,使得mysql_up = 0触发告警规则,看看是否会发送告警邮件

$ systemctl stop greatsql

停止服务后,alert 页面由绿色 Inactive 状态变成了黄色 Pending 状态继续等待变成红色 Firing状态,从而向 AlertManager 发送报警信息,此时 AlertManager 则按照配置规则向接受者发送邮件告警

file

黄色 Pending

file

红色 Firing

然后我们就收到了告警邮件

file

从上图可以看到,默认邮件模板 Title 及 Body 会将之前配置的 Labels 及 Annotations 信息均包含在内,而且每隔 5m 会自动发送,直到服务恢复正常,报警解除为止,同时会发送一封报警解除邮件。

file

报警触发后,每隔 5m 会自动发送报警邮件(服务未恢复正常期间),是因为 alertmanager.ymlroute -> repeat_interval: 5m 配置决定的

3.更改AlertManager邮件内容

此步骤非必要,想要邮件内容更优雅直观的可以参考

虽然所有核心的信息已经包含了,但是邮件格式内容可以更优雅直观一些,AlertManager也是支持修改自定义邮件模板配置的

我们需要新建一个模板文件,就叫做email.tmpl

$ vim /usr/local/prometheus/alertmanager-0.26.0.linux-amd64/email.tmp

写入以下内容

{{ define "email.from" }}填入邮箱@qq.com{{ end }}
{{ define "email.to" }}填入邮箱@qq.com{{ end }}
{{ define "email.to.html" }}
{{- if gt (len .Alerts.Firing) 0 -}}{{ range .Alerts }}
<h2>@告警通知</h2>
告警程序: prometheus_alert <br>
告警级别: {{ .Labels.severity }} 级 <br>
告警类型: {{ .Labels.alertname }} <br>
故障主机: {{ .Labels.instance }} <br>
告警主题: {{ .Annotations.summary }} <br>
告警详情: {{ .Annotations.description }} <br>
触发时间: {{ .StartsAt.Local.Format "2006-01-02 15:04:05" }} <br>
{{ end }}{{ end -}}
{{- if gt (len .Alerts.Resolved) 0 -}}{{ range .Alerts }}
<h2>@告警恢复</h2>
告警程序: prometheus_alert <br>
故障主机: {{ .Labels.instance }}<br>
故障主题: {{ .Annotations.summary }}<br>
告警详情: {{ .Annotations.description }}<br>
告警时间: {{ .StartsAt.Local.Format "2006-01-02 15:04:05" }}<br>
恢复时间: {{ .EndsAt.Local.Format "2006-01-02 15:04:05" }}<br>
{{ end }}{{ end -}}
{{- end }}

上边模板文件配置了 email.fromemail.toemail.to.html 三种模板变量,可以在 alertmanager.yml 文件中直接配置引用。

这里 email.to.html 就是要发送的邮件内容,支持 Html 和 Text 格式,这里为了显示好看,采用 Html 格式简单显示信息。下边{{ range .Alerts }}是个循环语法,用于循环获取匹配的 Alerts 的信息,下边的告警信息跟上边默认邮件显示信息一样,只是提取了部分核心值来展示。然后,需要增加 alertmanager.yml 文件 templates 配置如下:

$ vim /usr/local/prometheus/alertmanager-0.26.0.linux-amd64/alertmanager.yml

global:
  resolve_timeout: 5m
  smtp_from: '填入邮箱@qq.com'
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_auth_username: '填入邮箱@qq.com'
  smtp_auth_password: '填写QQ邮箱授权码'
  smtp_require_tls: false
  smtp_hello: 'qq.com'
templates:
  - '/usr/local/prometheus/alertmanager-0.26.0.linux-amd64/email.tmp'
route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'email'
receivers:
- name: 'email'
  email_configs:
  - to: '{{ template "email.to" . }}'
    html: '{{ template "email.to.html" . }}'
    send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

接着我们模拟GreatSQL宕机,使其触发告警规则,看看是否发送告警邮件

file

没问题已经成功收到了告警邮件

好啦,Prometheus+Grafana+GreatSQL性能监控系统搭建指南就到此结束,快动手搭建操作下吧~


Enjoy GreatSQL :)

关于 GreatSQL

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

image

社区有奖建议反馈: https://greatsql.cn/thread-54-1-1.html

社区博客有奖征稿详情: https://greatsql.cn/thread-100-1-1.html

(对文章有疑问或者有独到见解都可以去社区官网提出或分享哦~)

技术交流群:

微信&QQ群:

QQ群:533341697

微信群:添加GreatSQL社区助手(微信号:wanlidbc )好友,待社区助手拉您进群。

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

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

相关文章

单电源、轨到轨输入输出、高精度运放MS8551/8552/8554,可替代ADI的8551/8552/8554

MS8551/8552/8554 是输入输出轨到轨的高精度运算放大器&#xff0c;它 有极低的输入失调电压和偏置电流&#xff0c;单电源电压范围为 1.8V 到 5V 。 轨到轨的输入输出范围使 MS8551/8552/8554 可以轻松地放大高 电平和低电平的传感信号。所有特性使得 MS8551/8552/8…

C# 快速简单反射操作

文章目录 前言新反射使用BindingFlags以公有属性使用举例运行结果 前言 我之前写过一篇博客&#xff0c;是关于C# 反射的&#xff0c;我那时候使用的C# 反射写起来还是比较麻烦&#xff0c;需要获取Properies,再遍历Property&#xff0c;再找到对应Property&#xff0c;再使用…

Apache DolphinScheduler 官方发布3.2.0版本!大数据调度【重磅更新】

今天&#xff0c;Apache DolphinScheduler 3.2.0 版本在万众期待中终于发布了&#xff01;在之前的预告中&#xff0c;包括《重磅预告&#xff01;Apache DolphinScheduler 3.2.0 新功能“剧透”》、《3.2.0 版本预告&#xff01;Apache DolphinScheduler API 增强相关功能》、…

抖音电商商品卡实时免佣进入正式期!订单佣金实时返还,你拿到了吗?

“卖更多免更多”&#xff0c;抖音电商商品卡免佣政策落地至今&#xff0c;因其操作简单、门槛低&#xff0c;流量渠道丰富以及能够实实在在为商家降低经营成本的优势&#xff0c;迎来超百万商家踊跃参与。在政策持续进行过程中&#xff0c;切切实实助力新商家从0到1快速打开生…

Day17|110.平衡二叉树

一、110.平衡二叉树 题目链接&#xff1a;https://leetcode.cn/problems/balanced-binary-tree/ 文章链接&#xff1a;https://programmercarl.com/0110.%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE 视频链接&#xff…

安卓系统如何在WIFI里设置s5静态IP

在 Android 设备上使用 Wi-Fi Settings 设置s5的详细教程&#xff1a; 1、首先&#xff0c;打开您的 Android 设备的 “设置” 应用。 2、在设置菜单中&#xff0c;点击 “Wi-Fi” 选项。 3、确保您已经连接到一个 Wi-Fi 网络。如果没有连接&#xff0c;请点击 “添加网络” …

小程序技术在信创操作系统中的应用趋势:适配能力有哪些?

小程序技术在信创操作系统中的应用前景非常广阔&#xff0c;但也面临着一些挑战和问题。开发者需要积极应对这些挑战和问题&#xff0c;为信创操作系统的发展和推广做出贡献。同时&#xff0c;开发者也需要关注小程序技术在信创操作系统中的应用趋势&#xff0c;积极探索新的应…

Web安全系列——越权访问(权限控制失效)

一、前言 越权访问是当前Web应用中最常见的安全风险之一。 本文将介绍越权访问的原理、风险以及典型攻击场景&#xff0c;并为开发者提供有效的防范措施&#xff0c;帮助构建安全的Web应用。 二、什么是越权访问 越权访问&#xff0c;是指用户在不具备相应权限&#xff08;…

DevOps2023现状报告|注重文化、以用户为中心是成功的关键

Google Cloud DORA 团队的一份新研究报告强调了企业文化和关注用户作为成功软件交付支柱的重要性。 2023 DevOps 状况报告分析了过去 9 年来通过此类最大规模调查收集的全球 36,000 多名 IT 专业人员的数据。今年的报告是继 2022 年调查之后发布的&#xff0c;该调查发现越来…

使用RCurl和R来爬虫视频

以下是一个使用RCurl和R来爬虫视频的示例代码&#xff0c;代码中使用了https://www.duoip.cn/get_proxy来获取代理IP&#xff1a; # 引入必要的库 library(RCurl) library(rjson)# 获取代理IP proxy_url <- "https://www.duoip.cn/get_proxy" proxy <- getURL…

【Pycharm中python调用另一个文件类或者函数】

Pycharm中python调用另一个文件类或者函数 本文主要介绍了Pycharm中python调用另一个文件类或者函数&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧 文章目录 Pycha…

云HIS-医院信息化的核心

基于云计算技术的 B/S 架构的 HIS 系统&#xff0c;为基层医疗机构提供标准化的、信息化的、可共享的医疗信息管理系统&#xff0c;实现医患事务管理和临床诊疗管理等标准医疗管理信息系统的功能。系统利用云计算平台的技术优势&#xff0c;建立统一的健康档案存储平台&#xf…

纽交所上市公司埃森哲宣布已收购英国创意管理咨询公司

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;纽交所上市公司埃森哲(ACN)今日宣布已收购英国创意管理咨询公司The Storytellers。 这笔交易的金额没有披露。 此次收购将增强埃森哲在转型变革方面的能力&#xff0c;并进一步帮助客户阐明和激活…

请求转发和重定向区别

两者区别&#xff1a; 1.转发在一次请求中完成&#xff0c;重定向是两次请求 2.转发操作发生在服务器内部&#xff0c;重定向是在浏览器执行操作 3.转发地址栏不变&#xff0c;重定向地址栏变化&#xff08;两次请求&#xff0c;两个地址&#xff09; 4.转发可以在一次请求中共…

如何实现前端懒加载图像?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

SAP FICO案例教程简介

内容简介 本教程内容包括&#xff0c;erplabs编写的MTS、MTO 1、MTO 2案例教程FICO模块内容&#xff0c;案例业务在虚拟机全部实现&#xff0c;还包括若干案例专题。案例内容实用全面、图文表丰富&#xff0c;数据严谨前后关联衔接&#xff0c;可作为实际工作参考资料。本书适合…

基础课4——语音识别技术

ASR 是自动语音识别&#xff08;Automatic Speech Recognition&#xff09;的缩写&#xff0c;是一种将人类语音转换为文本的技术。ASR 系统可以处理实时音频流或已录制的音频文件&#xff0c;并将其转换为文本。它是一种自然语言处理技术&#xff0c;广泛应用于许多领域&#…

SPI总线及其demo

SPI总线是微处理器和外设之间进行数据交互的常用串行总线接口。本文主要介绍了SPI的接口类型、数据传输&#xff08;时钟极性、时钟相位&#xff09;、读、写操作的具体代码&#xff0c;最后是一个完整的xpt2046实现ADC的代码实现及注意事项。 1 、接口简介 串行外设接口&…

全流程TOUGH系列软件实践技术应用

TOUGH系列软件是由美国劳伦斯伯克利实验室开发的&#xff0c;旨在解决非饱和带中地下水、热运移的通用模拟软件。和传统地下水模拟软件Feflow和Modflow不同&#xff0c;TOUGH系列软件采用模块化设计和有限积分差网格剖分方法&#xff0c;通过配合不同状态方程&#xff08;EOS模…

c/c++语言算法技巧汇总/大复习[未完结]

目录 最简单的hash表子串变位词 排序最简单的桶排序字典序快排练习1 &#xff1a;0-1交换练习2&#xff1a;交换星号 最简单的去重最简单的队列template模版双端队列vector or listvector 队列结构存在于两种算法广度优先搜索贝尔曼福特算法&#xff08;Bellman-Ford&#xff0…