一文带你吃透MySQL性能监控解决方案:Prometheus+Grafana

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
可观测可视化 Grafana 版,10个用户账号 1个月
简介: MySQL性能监控解决方案:Prometheus+Grafana问题描述在对MySQL进行主从复制、分库分表等架构之后,MySQL的节点数量变得越来越多,无法实时监控到每一台MySQL节点,此时应当如何处理?问题分析与解决方案针对上面的问题,需要用Prometheus + Grafana对服务器进行统一监控、规划与报警,时刻关注服务器的响应情况。当出现宕机或异常时,Grafana可迅速通过短信、钉钉、邮件等方式通知相关人员,进而快速对生产环节进行补救。Prometheus概述与适用场景Prometheus 是 一 个 开 源 的 服 务 监 控 系 统 和 时 间 序 列 数 据

MySQL性能监控解决方案:Prometheus+Grafana问题描述

在对MySQL进行主从复制、分库分表等架构之后,MySQL的节点数量变得越来越多,无法实时监控到每一台MySQL节点,此时应当如何处理?

问题分析与解决方案

针对上面的问题,需要用Prometheus + Grafana对服务器进行统一监控、规划与报警,时刻关注服务器的响应情况。当出现宕机或异常时,Grafana可迅速通过短信、钉钉、邮件等方式通知相关人员,进而快速对生产环节进行补救。

Prometheus概述与适用场景

Prometheus 是 一 个 开 源 的 服 务 监 控 系 统 和 时 间 序 列 数 据 库 ,Kubernetes(k8s)内部使用的就是Prometheus数据库。Kubernetes的流行,带动了Prometheus社区的发展。Prometheus在大规模数据管理与读取上,比传统的NoSQL数据库要快很多。在数据压缩上,Prometheus具有高效压缩数据的算法,节省了存储空间,可有效减少服务器I/O的瓶颈。

Prometheus的适用场景如下:

(1)部署监控服务器,实现7×24实时监控。

(2)针对公司的业务及研发部门设计监控系统,对监控项和触发器给出合理意见。

(3)做好问题预警机制,对可能出现的问题及时告警并形成严格的处理机制。

(4)做好监控告警系统,要求可以实现告警分级(一级报警电话通知、二级报警微信通知、三级报警邮件通知)。

(5)处理好公司服务器异地集中监控的问题。

Prometheus的主要特征:

(1)多维度数据模型。

(2)灵活的查询语言。

(3)不依赖分布式存储,单个服务器节点是自主的。

(4)以HTTP方式通过pull模型拉取时间序列数据。

(5)通过中间网关支持push模型。

(6)通过服务发现或者静态配置发现目标服务对象。

(7)支持多种多样的图表和界面展示,例如Grafana。

时序数据库概述与适用场景

在工作中,时序数据库(TimeSeries DataBase,TSDB)主要记录按照时间顺序进行管理的数据。这些以时间为变化的数据被统称为时序数据。时序数据库对该类数据有更好的读取性能,其应用场景如下所示:

(1)Linux服务器每秒的CPU占用百分比、内存占用百分比、硬盘占用百分比等相关数据。

(2)无人汽车每秒的速度、油耗、方向、地理位置等相关数据。

(3)无人机每秒的经纬度、飞行高度、地理位置等相关数据。

(4)证券中心每秒开盘的行情数据、资金流数据。

(5)银行账号每天、每周的存款数据。

时序数据库并不要求数据实时更新,只是需要以时间作为变化单位而已,所以银行账号同样适用于时序数据库,但仅限于展示数据的可视化及数据的变化。时序数据库的安全性不如关系数据库。

Grafana概述与适用场景

Grafana是开源的可视化和分析软件,可以对数据进行可视化和报警,提供了把时序数据转换成漂亮图形并进行可视化的工具。

Grafana可独立部署,也就是说,Grafana、Prometheus和MySQL可被部署在3台不同的服务器上。除Prometheus外,Grafana还可集成InfluxDB、MySQL和Elasticsearch等数据源。

构建Prometheus + Grafana监控实战

1. 安装Prometheus

输入下面的命令,下载Prometheus:

输入下面的命令,解压缩Prometheus安装包:

初次运行Prometheus程序:

启动之后,可以通过Prometheus内置的Web页面进行查看,地址为服务器IP:9090,如图9-1所示。

图9-1

在图9-1中可以输入想要查询的字段,并单击Execute按钮,使用Graph显示相应时间序列的折线图,如图9-2所示。

图9-2

单击Status下拉框中的Targets按钮,可查看当前Prometheus监控了哪些服务器。目前Prometheus只监控了本机,如图9-3所示。

图9-3

2. Prometheus的内部插件介绍

Prometheus的内部插件如表9-1所示。

表9-1

• prometheus是基本程序包,是必须下载的,后续插件可以在自身业务的基础上,酌情下载并集成到prometheus之上。

• alertmanager是一个独立的报警插件,可以接收Prometheus等客户端发来的警报,之后通过分组、删除重复警报等处理,将它们通过路由发送给正确的接收器。报警方式可以按照不同的规则发送给不同的模块负责人。

alertmanager既支持E-mail、Slack等报警方式,也可以通过Webhook接入钉钉等国内IM工具。在Prometheus+Grafana架构上,Grafana同样包含报警模块,警报可以推送给钉钉、邮箱等不同渠道,所以对alertmanager插件可以酌情下载与使用。

• blackbox_exporter是网络监控插件,可以提供HTTP、DNS、TCP、ICMP的监控数据采集,包括连接性状态、SSL状态、HTTP状态、HTTPS耗时、服务连通信统计、总耗时统计等。

• consul_exporter是用来监控Consul注册中心的插件,主要监控内容为Consul中的KV节点的健康状态与服务检查、集群有多少节点、提供的服务有多少节点、集群提供多少服务等。

• graphite_exporter是用来监控Graphite Metrics的插件。Graphite用来收集度量标准,通常采用Grafana+Prometheus+graphite_exporter插件+Spark的架构形式监控Spark上的数据。该架构首先需要配置Spark,将Metrics 报 告 传 入 graphite_exporter 插 件 的 Graphite 内 , 此 后 由graphite_exporter插件转化数据并交由Prometheus进行存储,Grafana负责读取Prometheus中的数据。与之类似的还有Grafana + .txt文件 + Telegraf+ InfluxDB架构,即由Telegraf读取.txt文件中的数据进行解析并传入InfluxDB中,Grafana负责读取InfluxDB中的数据。

注意:Telegraf是由Go语言编写的InfluxDB对外读取数据的数据驱动软件,该驱动内部设置了各种可插拔的插件。使用这些插件可以读取除.txt文件外的一系列数据,如HTTP接口、服务器CPU、服务器内存MEM、服务器I/O、服务器硬盘等。

• haproxy_exporter是使用Go语言编写的用来监控HAProxy负载均衡器的插件。它通过HTTP使用HAProxy所给出的URL地址读取相关数据。

• memcached_exporter是用来监控MemCache的插件,可以通过设置导出关于MemCache进程本身的指标及大量的统计信息数据。

• mysqld_exporter是用来监控MySQL的插件,可以收集InnoDB引擎状态、TokuDB引擎状态、心跳、InnoDB引擎缓冲池状态、数据库表相关的状态等一系列内容。

• node_exporter是用来监控主机CPU、内存、磁盘等相关硬件指标的插件。因为node_exporter是为了监控主机系统而设计的,所以不建议将其部署为Docker容器。如果必须将其部署为Docker容器,则需要增加一些额外的配置参数,以便node_exporter能够访问Linux的一些命名空间(文件)。例如,通过/proc/net/arp访问公开的ARP统计信息,通过/sys/fs/cache访问公开的bcache统计信息,通过/proc/net/ip_vs、/proc/net/ip_vs_stats访问公开的ipv状态信息,通过/proc/net/udp和/proc/net/udp6访问UPD队列的长度信息,通过/proc/net/netstat访问公开的netstat网络统计信息,等等。node_exporter在一台服务器上只能启动一个进程,不可多次重复启动,以免造成数据的失真与损坏。

• pushgateway 插 件 是 一 个 独 立 服 务 , 位 于 应 用 程 序 发 送 指 标 与Prometheus服务器之间。示例命令如下所示:

• statsd_exporter插件可以通过UDP接收StatsD风格的度量,并把它们作为Prometheus度量导出。StatsD是一个简单的网络守护进程,它基于Node.js平台,通过UDP或者TCP方式侦听各种统计信息,包括计数器和定时器,并发送聚合信息到后端服务,如Graphite。

3. 使用Prometheus远程监控Linux

从远程主机上下载node_exporter插件,命令如下所示:

解压缩下载的node_exporter插件,命令如下所示:

在node_exporter中只有一个执行程序,启动node_exporter的命令如下所示:

node_exporter的默认启动命令为9100,可通过netstat命令查看9100端口是否执行正常,命令如下所示:

在 Prometheus 所 在 的 服 务 器 上 更 改 prometheus.yml 文 件 , 对 接node_exporter插件所在服务器的9100接口。在prometheus.yml文件结尾处增加如下配置:

job_name的后面是自定义名称,可随意书写;在targets后面的方括号中可以输入多个TCP地址,并以逗号“,”进行分隔。更改prometheus.yml文件后,重启Prometheus程序,在Prometheus的Web页面处可以查看新增的监控地址和图表,如图9-4与图9-5所示。

图9-4

图9-5

4. 使用Prometheus远程监控MySQL

输入下面的命令下载mysqld_exporter插件:

输入下面的命令解压缩
mysqld_exporter-0.10.0.linux-amd64.tar.gz文件:

在MySQL控制台中添加用户名及角色权限。这里的mysqld_exporter插件与MySQL在同一台服务器上。mysqld_exporter插件通过新添加的用户名与MySQL 进 行 通 信 , 而 Prometheus 只 与 mysqld_exporter 插 件 进 行 通 信 ,Prometheus与MySQL并不直接关联。

编写mysqld_exporter插件的配置文件.my.config,在配置文件中输入MySQL对应的用户账号及密码,内容如下所示:

执行下面的命令启动mysqld_exporter插件:

mysqld_exporter插件的默认启动命令为9104。可以通过下面的命令查看9104端口是否执行正常,命令如下所示;

在 Prometheus 所 在 的 服 务 器 上 更 改 prometheus.yml 文 件 , 对 接mysqld_exporter插件所在服务器的9104端口。在prometheus.yml文件结尾处增加如下配置:

重启Prometheus,Web页面如图9-6和图9-7所示。

图9-6

图9-7

5. 安装Grafana

下载Grafana可视化工具,命令如下所示:

安装Grafana相关字库,命令如下所示:

安装rpm文件,命令如下所示:

也可以通过rpm方式安装Grafana,命令如下所示:

查看Grafana文件的相关地址,如图9-8所示。

图9-8

更改/etc/grafana/grafana.ini配置文件中的绑定IP地址(输入grafana服务器的IP即可),命令如下所示:

启动Grafana,命令如下所示:

打开Grafana页面,如图9-9所示。

图9-9

默认账号和密码均为admin,初次进入后需要填写新密码并确认。更改新密码后,展示页面如图9-10所示。

图9-10

6. 为Grafana配置Promtheus数据源

单击左侧任务栏中的Configuration→Data Sources选项,如图9-11所示。

图9-11

在 展 开 的 Configuration 页 面 中 单 击 Add data source 按 钮 , 输 入Promtheus相关的配置信息,如图9-12和图9-13所示。

图9-12


图9-13

再次单击Data Sources选项,可以看到刚刚配置的myPrometheus,如图9-14所示。

图9-14

7. Grafana图表Graph配置

单击左侧任务栏中的Create→Dashboard→Graph选项,如图9-15所示。

图9-15

单击Panel Title→Edit选项,配置图表,如图9-16所示。

图9-16

配置图表参数如图9-17所示,也可以单击Add Query按钮,选择查询多个参数,选择后,这些参数将在一个图表中展示。

图9-17

若想查询详细的地址或job,则可以在A查询处增加条件:

图形展示变化如图9-18所示。

图9-18

配置完之后,单击右上角的Save dashboard按钮,在Grafana内部进行保存。也可以单击Settings按钮保存为JSON文件,以免Grafana崩溃而直接丢失图表配置。JSON文件的内容如图9-19所示。

图9-19

8. 使用Grafana的图表模板

虽然Grafana提供了极多的图表规划体验,例如,线条的颜色、条件展示位置、上升和下降箭头、折线图、饼状图、线条图等,但是每次设置未免过于复杂,通常使用Grafana官方的图表模板即可。其中,大部分所包含的内容都在图表模板上,不需一一配置,如图9-20所示。

图9-20

单击图9-15中的“Create”→“Import”选项,导入模板。在第1个输入框中输入Dashboard官网的编号例如1010,或者在第2个输入框中粘贴整个Grafana图表的JSON数据,如图9-21所示。

图9-21

单击Load按钮之后,更改Import页面中的Name(即Dashboard的名称),以及VictoriaMetrics处的数据源,如图9-22所示。

图9-22

node_exporter数据导入模板的结果如图9-23所示(导入的模板不同,展示的结果也不同)。

图9-23

mysql_exporter数据导入模板的结果如图9-24所示。

图9-24

导入图表后,在右上角可选择时间的跨度及刷新频率等参数,如图9-25所示。

图9-25

9. 使用Grafana的报警功能

更改Grafana的配置文件default.ini,如图9-26所示。

图9-26

单击Alerting→Notification channels选项,配置Grafana账号绑定的邮箱,如图9-27所示。

图9-27

设置邮箱地址,如图9-28所示。

图9-28

配置Grafana图表报警条件,如图9-29所示。

在Grafana的图表里选择Alert,配置相关的Alert报警。这里可以配置的是报警的阈值和报警条件。

• Conditions中的WHEN avg() OF query(A, 5m,now) IS ABOVE 3000:

A指的是之前写的A语句,now和5m指的是从现在起往回五分钟。

• Evaluate every:指多久检测一次。

• If execution error or timeout:如果出现大于3000次的error,则发送邮件。在邮件标题开头写上【Alerting】。

• If no data all values are null:当所有的数据为空时发送邮件,在邮件标题开头写上【No Data】。

当然,上面条件中的IS ABOVE和WHEN也可以更改。

Test Rule尤其重要。这里可以用Java接收返回的JSON,也可以用来测试当前预警是否成功。当state为ok时,表示该监控没有问题。当state为Alerting时,表示该监控有问题,需要发送邮件。alert表示当数据达到发送监控要求时,哪怕目前数值持续性达到发送监控要求,也只会发送一封邮件。但是若在发送邮件之后,该数据又达到ok范围内,则Grafana会发送以

【OK】为标题开头的邮件,表示该监控已经正常。

Test Rule的conditionEvals会判断当前数据是否处于监控语句标准,若为true,则表示需要发送邮件。

另外,Grafana支持多个监控语句判定。可以单击+按钮,此时Grafana会让你选择and或or。如果选择and,则必须所有语句都达到监控范围才发送邮件;如果选择or,则只需有一条语句达到监控范围就会发送邮件。而在TestRule的conditionEvals处,会出现[true or false]=true。

图9-29

Grafana的报警结果如图9-30所示。

图9-30

本文给大家讲解的内容是MySQL性能监控解决方案:Prometheus+Grafana

  • 下文给大家讲解的是堆内缓存解决方案:Java堆内缓存与GuavaCache
相关实践学习
通过可观测可视化Grafana版进行数据可视化展示与分析
使用可观测可视化Grafana版进行数据可视化展示与分析。
相关文章
|
3月前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
368 3
|
2月前
|
存储 数据采集 Prometheus
Grafana Prometheus Altermanager 监控系统
Grafana、Prometheus 和 Alertmanager 是一套强大的开源监控系统组合。Prometheus 负责数据采集与存储,Alertmanager 处理告警通知,Grafana 提供可视化界面。本文简要介绍了这套系统的安装配置流程,包括各组件的下载、安装、服务配置及开机自启设置,并提供了访问地址和重启命令。适用于希望快速搭建高效监控平台的用户。
119 20
|
2月前
|
Prometheus 监控 Cloud Native
Prometheus+Grafana监控Linux主机
通过本文的步骤,我们成功地在 Linux 主机上使用 Prometheus 和 Grafana 进行了监控配置。具体包括安装 Prometheus 和 Node Exporter,配置 Grafana 数据源,并导入预设的仪表盘来展示监控数据。通过这种方式,可以轻松实现对 Linux 主机的系统指标监控,帮助及时发现和处理潜在问题。
152 7
|
2月前
|
Prometheus 运维 监控
Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松
本文介绍如何使用 Prometheus + Grafana + Node Exporter 搭建 Linux 主机监控系统。Prometheus 负责收集和存储指标数据,Grafana 用于可视化展示,Node Exporter 则采集主机的性能数据。通过 Docker 容器化部署,简化安装配置过程。完成安装后,配置 Prometheus 抓取节点数据,并在 Grafana 中添加数据源及导入仪表盘模板,实现对 Linux 主机的全面监控。整个过程简单易行,帮助运维人员轻松掌握系统状态。
236 3
|
2月前
|
Prometheus 监控 前端开发
Grafana 安装配置教程,让你的 Prometheus 监控数据变得更美观
《Grafana安装配置教程,让你的Prometheus监控数据变得更美观》简介: Grafana是一个开源的度量分析与可视化工具,支持多种数据源(如Prometheus),提供丰富的可视化功能和警报机制。本文详细介绍了Grafana的安装、汉化方法及模板使用,帮助用户轻松创建美观、灵活的数据面板,并实现数据的协作与共享。通过Docker镜像、配置文件修改或替换前端页面等方式实现汉化,让用户更便捷地使用中文界面。此外,还提供了导入JSON格式模板的具体步骤,方便快速搭建仪表盘。
70 2
|
2月前
|
Prometheus Cloud Native Linux
Prometheus+Grafana新手友好教程:从零开始搭建轻松掌握强大的警报系统
本文介绍了使用 Prometheus 和 Grafana 实现邮件报警的方案,包括三种主要方法:1) 使用 Prometheus 的 Alertmanager 组件;2) 使用 Grafana 的内置告警通知功能;3) 使用第三方告警组件如 OneAlert。同时,详细描述了环境准备、Grafana 安装配置及预警设置的步骤,确保用户能够成功搭建并测试邮件报警功能。通过这些配置,用户可以在系统或应用出现异常时及时收到邮件通知,保障系统的稳定运行。
125 1
|
3月前
|
存储 Prometheus 运维
在云原生环境中,阿里云ARMS与Prometheus的集成提供了强大的应用实时监控解决方案
在云原生环境中,阿里云ARMS与Prometheus的集成提供了强大的应用实时监控解决方案。该集成结合了ARMS的基础设施监控能力和Prometheus的灵活配置及社区支持,实现了全面、精准的系统状态、性能和错误监控,提升了应用的稳定性和管理效率。通过统一的数据视图和高级查询功能,帮助企业有效应对云原生挑战,促进业务的持续发展。
78 3
|
3月前
|
Prometheus 监控 Cloud Native
基于Docker安装Grafana和Prometheus
Grafana 是一款用 Go 语言开发的开源数据可视化工具,支持数据监控和统计,并具备告警功能。通过 Docker 部署 Grafana 和 Prometheus,可实现系统数据的采集、展示和告警。默认登录用户名和密码均为 admin。配置 Prometheus 数据源后,可导入主机监控模板(ID 8919)进行数据展示。
140 2
|
3月前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第27天】在智能运维中,Prometheus和Grafana的组合已成为监控和告警体系的事实标准。Prometheus负责数据收集和存储,支持灵活的查询语言PromQL;Grafana提供数据的可视化展示和告警功能。本文介绍如何配置Prometheus监控目标、Grafana数据源及告警规则,帮助运维团队实时监控系统状态,确保稳定性和可靠性。
351 0
|
6月前
|
Prometheus 监控 Cloud Native
prometheus学习笔记之Grafana安装与配置
prometheus学习笔记之Grafana安装与配置

热门文章

最新文章