
MySQL 作为最流行的关系型数据库管理系统之一,非常多系统的后端存储都有着MySQL 的身影,可谓是广泛应用于各行各业。与此同时,数据库作为应用服务的核心组件,直接影响着应用服务运行。数据库的瓶颈往往也是整个系统的瓶颈,其重要性不言而喻,所以对于 MySQL 的监控必不可少,及时发现 MySQL 运行中的异常,可以有效提高系统的可用性和用户体验。因此,观测 MySQL 关键指标,实时关注数据库的可用性与性能,成为运维团队的重要任务。
在构建 MySQL 的指标观测体系前,我们需要梳理在日常运维过程中所关注的维度与指标,做到有的放矢。Google 提出系统监控的 Latency,Traffic,Saturation,Errors 作为黄金指标。而 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 控制台 https://common-buy.aliyun.com/?commodityCode=prometheus_pay_public_cn#/open
单击具体的 Prometheus 实例并进入到集成中心,选择安装 MySQL;

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

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


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

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

▧ MySQL 监控大盘
可用性、QPS 和数据库连接

数据库查询

流量和内存使用

文件



文章转载自阿里云云原生,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




