本文介绍如何使用可观测监控 Prometheus 版观测MySQL。
前提条件
- 已创建Prometheus实例,具体操作,请参见:
- 已获取MySQL实例连接信息,包括MySQL地址、MySQL端口、用户名和密码。
步骤一:接入MySQL监控
- 登录Prometheus控制台。
- 在左侧导航栏单击监控列表,进入可观测监控 Prometheus 版的实例列表页面。
- 单击目标Prometheus实例名称,进入集成中心页面。
- 接入MySQL组件。
- 若您初次安装MySQL类型的组件:在集成中心页面单击未安装区域MySQL组件卡片的安装。
- 若您已安装MySQL类型的组件,需要再次添加该组件:
在集成中心页面单击已安装区域MySQL组件卡片的添加。
- 若您初次安装MySQL类型的组件:
- 在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热点指标的说明,请参见下文关键指标说明。
- 可观测监控 Prometheus 版针对MySQL热点指标预置的告警规则详情说明,请参见下文基于Prometheus的指标观测和告警体系搭建。
步骤三:查看MySQL监控大盘
通过监控大盘您可以查看可用性、数据库查询、网络流量、连接、内存等监控数据,具体步骤如下。
- 登录Prometheus控制台。
- 在左侧导航栏单击监控列表,进入可观测监控 Prometheus 版的实例列表页面。
- 单击目标Prometheus实例名称,进入集成中心页面。
- 单击已安装区域的MySQL卡片,并在弹出的面板中单击大盘页签,然后单击大盘缩略图,即可查看对应Grafana大盘。具体详情如下:
- 可用性、QPS和数据库连接。
- 数据库查询。
- 流量和内存使用情况。
- 文件监控数据。
- 可用性、QPS和数据库连接。
关键指标说明
类型 | 指标名称 | 说明 |
---|---|---|
可用性 | 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])