本文介绍如何使用可观测监控 Prometheus 版观测MySQL。

前提条件

步骤一:接入MySQL监控

  1. 登录Prometheus控制台
  2. 在左侧导航栏单击监控列表,进入可观测监控 Prometheus 版的实例列表页面。
  3. 单击目标Prometheus实例名称,进入集成中心页面。
  4. 接入MySQL组件。
    • 若您初次安装MySQL类型的组件:
      在集成中心页面单击未安装区域MySQL组件卡片的安装ri
    • 若您已安装MySQL类型的组件,需要再次添加该组件:

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

  5. STEP2区域的配置页签配置相关参数,并单击确定,完成组件接入。
    参数描述
    Exporter名称当前MySQL监控唯一命名。命名规范要求如下:
    • 仅可包含小写字母、数字和短划线(-),且短划线不可出现在开头或结尾。
    • 名称具有唯一性。
    说明 默认名称由组件类型及数字后缀组成。
    MySQL地址MySQL的连接地址。
    说明 支持部署在容器服务Kubernetes版、云服务器ECS、云数据库RDS的MySQL地址联想。
    MySQL端口MySQL的端口号,例如:3306。
    用户名MySQL的用户名称。
    密码MySQL的密码。
    说明STEP2区域的指标页签可查看监控指标。

    已接入的组件会显示在集成中心页面的已安装区域。单击该组件卡片,在弹出的面板中可以查看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_connectedMySQL实例请求已经连接的线程数。
mysql_global_status_threads_runningMySQL实例请求运行中的线程数。
mysql_global_status_max_used_connectionsMySQL实例最大连接记录统计。
mysql_global_variables_max_connectionsMySQL实例最大连接数,若超过该连接数之后有新的请求到来,就会拒绝连接。
mysql_global_status_aborted_connects异常中断的连接(尝试连接)。
mysql_global_status_aborted_clients异常中断的连接(超时)。
查询mysql_global_status_slow_queriesMySQL实例慢查询统计。
mysql_global_status_queriesMySQL实例当前查询QPS。
流量mysql_global_status_bytes_received入站流量。
mysql_global_status_bytes_sent出站流量。
文件mysql_global_status_opened_files正在打开的文件统计。
mysql_global_status_open_filesMySQL已经打开的文件统计。
mysql_global_variables_open_files_limit允许打开的文件统计。
mysql_global_status_innodb_num_open_filesInnodb打开的文件统计。

基于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])