文档

如何使用Prometheus监控MySQL

更新时间:

本文介绍如何使用Prometheus监控MySQL。

前提条件

步骤一:接入MySQL监控

  1. 登录Prometheus控制台

  2. 在左侧导航栏单击实例列表,进入可观测监控 Prometheus 版的实例列表页面。

  3. 单击目标Prometheus实例名称,进入集成中心页面。
  4. 接入MySQL组件。

    • 若您初次安装MySQL类型的组件:

      在集成中心页面单击未安装区域MySQL组件卡片的安装ri

    • 若您已安装MySQL类型的组件,需要再次添加该组件:

      在集成中心页面单击已安装区域MySQL组件卡片的增加

  5. STEP2区域的配置页签配置相关参数,并单击确定,完成组件接入。

    参数

    描述

    Exporter名称

    配置一个Exporter,拉取MySQL数据库性能指标。命名规范要求如下:

    • 仅可包含小写字母、数字和短划线(-),且短划线不可出现在开头或结尾。

    • 名称具有唯一性。

    说明

    默认名称由组件类型及数字后缀组成。

    MySQL地址

    MySQL的连接地址。

    说明

    支持部署在容器服务Kubernetes版、云服务器ECS、云数据库RDS的MySQL地址联想。

    MySQL端口

    MySQL的端口号,例如:3306。

    用户名

    MySQL的用户名称和密码。

    重要

    不建议使用管理员账号,以免存在数据泄露的风险。请创建一个供mysqld_exporter使用的MySQL账号,并最小化授权。具体操作,请参考mysqld_exporter访问MySQL数据库所需的权限说明

    密码

    说明

    STEP2区域的指标页签可查看监控指标。

    您还可以在高级配置区域设置Exporter资源限制,其中cpu(核数)默认100 m,memory默认50 Mi。

    已接入的组件会显示在集成中心页面的已安装区域。单击该组件卡片,在弹出的面板中可以查看Targets、指标、大盘、告警、服务发现配置、Exporter等信息。集成中心的更多信息,请参见集成中心

步骤二:配置MySQL监控告警

可观测监控 Prometheus 版控制台的集成中心页面单击已安装区域的MySQL卡片,并在弹出的面板中单击告警页签,查看MySQL的Prometheus告警。

可观测监控 Prometheus 版针对MySQL热点指标提供了多个默认的Prometheus告警规则,您还可以根据业务需求新增告警规则。创建Prometheus告警规则的具体操作,请参见Prometheus告警规则

说明

步骤三:查看MySQL监控大盘

通过监控大盘您可以查看可用性、数据库查询、网络流量、连接、内存等监控数据,具体步骤如下。

  1. 登录Prometheus控制台

  2. 在左侧导航栏单击实例列表,进入可观测监控 Prometheus 版的实例列表页面。

  3. 单击目标Prometheus实例名称,进入集成中心页面。
  4. 单击已安装区域的MySQL卡片,并在弹出的面板中单击大盘页签,然后单击大盘缩略图,即可查看对应Grafana大盘。具体详情如下:

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

    • 数据库查询。aj

    • 流量和内存使用情况。xq

    • 文件监控数据。qt

关键指标说明

类型

指标名称

说明

可用性

mysql_up

表示MySQL实例是否已停机。

mysql_global_status_uptime

表示数据库正常运行的时长,通常使用该指标配置告警,监控运行少于半小时的MySQL实例。

数据库连接

mysql_global_status_connection_errors_total

连接错误是数据库中的主要错误之一,通过该指标可以查看到具体连接错误信息以及错误连接次数。

mysql_global_status_threads_connected

MySQL实例请求已经连接的线程数。

mysql_global_status_threads_running

MySQL实例请求运行中的线程数。

mysql_global_status_max_used_connections

MySQL实例最大连接记录统计。

mysql_global_variables_max_connections

MySQL实例最大连接数,若超过该连接数之后有新的请求到来,就会拒绝连接。

mysql_global_status_aborted_connects

异常中断的连接(尝试连接)。

mysql_global_status_aborted_clients

异常中断的连接(超时)。

查询

mysql_global_status_slow_queries

MySQL实例慢查询统计。

mysql_global_status_queries

MySQL实例当前查询QPS。

流量

mysql_global_status_bytes_received

入站流量。

mysql_global_status_bytes_sent

出站流量。

文件

mysql_global_status_opened_files

正在打开的文件统计。

mysql_global_status_open_files

MySQL已经打开的文件统计。

mysql_global_variables_open_files_limit

允许打开的文件统计。

mysql_global_status_innodb_num_open_files

Innodb打开的文件统计。

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

自建Prometheus需要部署Exporter、传入MySQL实例的连接信息、配置服务发现,然后建立大盘的复杂搭建过程。可观测监控 Prometheus 版一键集成MySQL Exporter,并提供开箱即用的专属监控大盘、告警,将诸多配置与操作实现白屏化,尽可能简化配置服务接入工作量。

基于可观测监控 Prometheus 版自身实践,将常见的MySQL告警规则预置为模板,帮助运维团队快速搭建起指标看板与告警体系。预置的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])
  • 本页导读 (1)
文档反馈