本文介绍如何使用Prometheus监控MySQL。
前提条件
已获取MySQL实例连接信息,包括MySQL地址、MySQL端口、用户名和密码。
接入MySQL监控
登录ARMS控制台。
在左侧导航栏,单击接入中心。
在接入中心页面的数据库区域,单击MySQL。
在MySQL面板的开始接入页签完成接入,然后单击确定。
参数
说明
选择所属环境类型
可以接入以下三种服务环境:
容器服务环境
ECS(VPC)
云服务
选择集群
选择目标集群。
选择ECS(VPC)
选择目标ECS。
选择数据存储地域
如果您选择所属环境类型为云服务,您需要选择目标存储的地域。
MySQL 服务地址
MySQL的连接地址。
说明支持部署在容器服务Kubernetes版、云服务器ECS、云数据库RDS的MySQL地址。
MySQL 服务端口
MySQL的端口号。例如:3306。
MySQL 账号和MySQL 密码
MySQL的用户名称和密码。
重要不建议使用管理员账号,以免存在数据泄露的风险。请创建一个供mysqld_exporter使用的MySQL账号,并最小化授权。具体操作,请参见为Prometheus创建MySQL访问账号。
配置MySQL监控告警
登录ARMS控制台。
在左侧导航栏选择 ,进入可观测监控 Prometheus 版的实例列表页面。
在页面顶部选择目标地域,然后单击目标集群名称。
在左侧导航栏,单击告警规则,即可查看MySQL的Prometheus告警规则。
可观测监控 Prometheus 版针对MySQL热点指标提供了多个默认的Prometheus告警规则,您还可以根据业务需求新增告警规则。创建Prometheus告警规则的具体操作,请参见Prometheus告警规则。
说明关于MySQL热点指标的说明,请参见下文关键指标说明。
可观测监控 Prometheus 版针对MySQL热点指标预置的告警规则详情说明,请参见下文基于Prometheus的指标观测和告警体系搭建。
查看MySQL监控大盘
通过监控大盘您可以查看可用性、数据库查询、网络流量、连接、内存等监控数据,具体步骤如下。
登录ARMS控制台。
在左侧导航栏,单击接入管理。
在接入管理页面的已接入环境页签中,选择目标环境,在目标环境列表中,单击目标环境名称进入详情页面。
在组件管理页签下的组件类型区域,单击MySQL,然后单击大盘,即可查看所有的大盘名称。
单击目标大盘名称,查看对应的Grafana大盘。
可用性、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 慢查询次数:该指标可以作为判断当前数据库是否存在需要优化的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 InnoDB 日志等待时间:您自行设置的日志等待时间。
rate(mysql_global_status_innodb_log_waits{${instance}}[5m])