统一观测丨如何使用 Prometheus 监控 MySQL

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
可观测监控 Prometheus 版,每月50GB免费额度
简介: 简介: 数据库的瓶颈往往也是整个系统的瓶颈,其重要性不言而喻,所以对于 MySQL 的监控必不可少,及时发现 MySQL 运行中的异常,可以有效提高系统的可用性和用户体验。因此,观测 MySQL 关键指标,实时关注数据库的可用性与性能,成为运维团队的重要任务。

简介: 数据库的瓶颈往往也是整个系统的瓶颈,其重要性不言而喻,所以对于 MySQL 的监控必不可少,及时发现 MySQL 运行中的异常,可以有效提高系统的可用性和用户体验。因此,观测 MySQL 关键指标,实时关注数据库的可用性与性能,成为运维团队的重要任务。

作者:在峰

MySQL 作为最流行的关系型数据库管理系统之一,非常多系统的后端存储都有着MySQL 的身影,可谓是广泛应用于各行各业。与此同时,数据库作为应用服务的核心组件,直接影响着应用服务运行。数据库的瓶颈往往也是整个系统的瓶颈,其重要性不言而喻,所以对于 MySQL 的监控必不可少,及时发现 MySQL 运行中的异常,可以有效提高系统的可用性和用户体验。因此,观测 MySQL 关键指标,实时关注数据库的可用性与性能,成为运维团队的重要任务。

关键指标解读

在构建 MySQL 的指标观测体系前,我们需要梳理在日常运维过程中所关注的维度与指标,做到有的放矢。Google 提出系统监控的 Latency,Traffic,Saturation,Errors 作为黄金指标。而 MySQL 作为资源类服务系统出现,我们将之进行细化,从可用性、数据库连接、查询、流量、文件五大维度入手。

1.png

基于 Prometheus 的指标观测&告警体系搭建

在设计好所需观测指标后,我们就可以选择相应的观测工具。作为最流行的数据库, MySQL 有着非常丰富的监控工具选择,比如 MySQL Enterprise Monitor、Prometheus等数据库自带、商业、开源不同属性的工具。

而云原生时代,为了开源友好、避免厂商锁定、构建多云全栈可观测体系等企业级诉求,Prometheus 成为了 MySQL 指标监控的最佳选择,并拥有社区专门为采集 MySQL 数据库监控指标而设计开发的 MySQL Exporter 。

相较于自建 Prometheus,需要部署 Exporter、传入 MySQL 实例的连接信息,配置服务发现,再建立大盘。阿里云 Prometheus监控一键集成 MySQL Exporter,并提供开箱即用的专属监控大盘、告警,将诸多配置与操作实现白屏化,尽可能简化配置服务接入工作量。

并基于阿里云自身实践,将常见的 MySQL 告警规则制作成预置模板,帮助运维团队快速搭建起指标看板与告警体系,不用再苦恼于提炼自身经验或告警指标的选择上。

  • MySQL 停机:如果该指标值是 0 表示当前数据库未在正常运行,为 1 表示正常,可以通过 ${instance} 针对具体的实例告警;

mysql_up{${instance}} != 1

  • MySQL 实例运行时长:Prometheus 监控服务提供了默认的告警阈值,监控运行少于半小时的 MySQL 实例,用户可以根据自己的需要修改阈值;

mysql_global_status_uptime{${instance}} < 1800

  • MySQL 实例慢查询:该指标可以作为判断当前数据库是否存在 sql 语句需要优化等问题;

rate(mysql_global_status_slow_queries{${instance}}[5m]) > 0

  • MySQL 错误连接数:连接错误是数据库中的主要错误之一,通过 Prometheus 监控服务提供的告警规则,当触发告警时,用户能够接受错误类型、查询次数等告警信息;

rate(mysql_global_status_connection_errors_total{${instance}}[5m]) > 0

  • MySQL 连接使用率:当出现时连接错误告警时,大部分原因是因为连接数不足,可以通过查看 MySQL 连接使用率进一步排查问题。

100 * mysql_global_status_threads_connected{${instance}} 
      / mysql_global_variables_max_connections{${instance}} > 90

注:当使用率达到一定的阈值时,MySQL 实例开始拒绝连接,可以通过扩大连接数来解决问题。但在提高连接数之前,请务必通过以下语句检查当前系统可打开的文件数:

mysql_global_variables_open_files_limit - mysql_global_variables_innodb_open_files

  • MySQL 日志等待时间

rate(mysql_global_status_innodb_log_waits{${instance}}[5m])

最佳实践

前置条件

  • 开通阿里云 Prometheus 监控服务;

  • 安装阿里云 Prometheus 实例(Prometheus for 容器服务、Prometheus for ECS),详情参见:创建 Prometheus 实例;

  • 准备 MySQL 实例连接信息,包括 Mysql 地址、MySQL 端口、用户名和密码;

集成中心安装 MySQL 监控

  • 单击具体的 Prometheus 实例并进入到集成中心,选择安装 MySQL;

2.png

  • 输入 Mysql 地址、MySQL 端口、用户名和密码;

3.png

注:可以通过连接测试检查连通性

  • 安装成功后,可以查看大盘、指标、target 等信息,并且配置相关告警;

4.png 5.png

MySQL 监控告警配置

阿里云 Prometheus 监控服务针对 MySQL 集成,围绕着热点指标提供了若干项默认的 Prometheus 告警规则。

  • 安装 MySQL 监控之后,可以通过 MySQL 集成 - 告警 - 创建告警规则进行创建;

6.png

  • 填写告警名称、选择告警分组、所需的告警指标以及筛选条件。

7.png

MySQL 监控大盘

Prometheus 监控服务围绕热点指标创建了 MySQL 监控大盘,通过监控大盘用户可以查看可用性、数据库查询、网络流量、连接、内存等监控数据;

  • 可用性、QPS 和数据库连接

8.png

  • 数据库查询

9.png

  • 流量和内存使用

10.png

  • 文件

11.png

关于阿里云 Prometheus 监控

阿里云 Prometheus 服务是基于云原生可观测事实标准 - Prometheus 开源项目构建的全托管观测服务。默认集成常见云服务,兼容主流开源组件,全面覆盖业务观测/应用层观测/中间件观测/系统层观测。通过开箱即用的 Grafana 看板与智能告警功能,并全面优化探针性能与系统可用性,帮助企业快速搭建一站式指标可观测体系。助业务快速发现和定位问题,减轻故障给业务带来的影响,并免去系统搭建与日常维护工作量,有效提升运维观测效率。

12.png

与此同时,阿里云 Prometheus 作为阿里云可观测套件的重要组成部分,与 Grafana 服务、链路追踪服务,形成指标存储分析、链路存储分析、异构构数据源集成的可观测数据层,同时通过标准的 PromQL 和 SQL,提供数据大盘展示,告警和数据探索能力。为IT成本管理、企业风险治理、智能运维、业务连续性保障等不同场景赋予数据价值,让可观测数据真正做到不止于观测。

13.png

点击此处查看 Prometheus 监控服务

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9天前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
65 3
|
3月前
|
Prometheus 监控 Cloud Native
【监控】prometheus传统环境监控告警常用配置
【监控】prometheus传统环境监控告警常用配置
【监控】prometheus传统环境监控告警常用配置
|
7天前
|
缓存 监控 关系型数据库
如何根据监控结果调整 MySQL 数据库的参数以提高性能?
【10月更文挑战第28天】根据MySQL数据库的监控结果来调整参数以提高性能,需要综合考虑多个方面的因素
41 1
|
7天前
|
监控 关系型数据库 MySQL
如何监控和诊断 MySQL 数据库的性能问题?
【10月更文挑战第28天】监控和诊断MySQL数据库的性能问题是确保数据库高效稳定运行的关键
19 1
|
8天前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第27天】在智能运维中,Prometheus和Grafana的组合已成为监控和告警体系的事实标准。Prometheus负责数据收集和存储,支持灵活的查询语言PromQL;Grafana提供数据的可视化展示和告警功能。本文介绍如何配置Prometheus监控目标、Grafana数据源及告警规则,帮助运维团队实时监控系统状态,确保稳定性和可靠性。
47 0
|
2月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
48 2
zabbix agent集成percona监控MySQL的插件实战案例
|
2月前
|
Prometheus 监控 Cloud Native
介绍如何使用Prometheus进行监控
介绍如何使用Prometheus进行监控
190 3
|
2月前
|
Prometheus 监控 Cloud Native
docker安装prometheus+Granfan并监控容器
【9月更文挑战第14天】本文介绍了在Docker中安装Prometheus与Grafana并监控容器的步骤,包括创建配置文件、运行Prometheus与Grafana容器,以及在Grafana中配置数据源和创建监控仪表盘,展示了如何通过Prometheus抓取数据并利用Grafana展示容器的CPU使用率等关键指标。
|
3月前
|
存储 Prometheus 监控
Grafana 与 Prometheus 集成:打造高效监控系统
【8月更文第29天】在现代软件开发和运维领域,监控系统已成为不可或缺的一部分。Prometheus 和 Grafana 作为两个非常流行且互补的开源工具,可以协同工作来构建强大的实时监控解决方案。Prometheus 负责收集和存储时间序列数据,而 Grafana 则提供直观的数据可视化功能。本文将详细介绍如何集成这两个工具,构建一个高效、灵活的监控系统。
370 1
|
3月前
|
Prometheus 监控 Cloud Native
使用Prometheus搞定微服务监控
使用Prometheus搞定微服务监控
使用Prometheus搞定微服务监控