Prometheus 监控云Mysql和自建Mysql(多实例)
Posted 阿提说说
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prometheus 监控云Mysql和自建Mysql(多实例)相关的知识,希望对你有一定的参考价值。
本文您将了解到 Prometheus如何配置才能监控云mysql(包括阿里云、腾讯云、华为云)和自建Mysql。
Prometheus 提供了很多种Exporter,用于监控第三方系统指标,如果没有提供也可以根据Exporter规范自定义Exporter。
本文将通过MySQL server exporter 来监控Mysql指标,最新版的exporter 支持Mysql >= 5.6或者MariaDB >= 10.3
,如果是老的Mysql版本你可能需要选择较早版本,本文使用的版本为:v0.14.0
(不支持一个Exporter多Mysql实例),支持多实例见本文扩展部分
。
部署MySQL Exporter
1、从https://prometheus.io/download/
下载 最新版本的对应环境压缩包
2、Docker 部署
docker run -d -p 9104:9104 -e DATA_SOURCE_NAME="user:password@(mysql_address:3306)/database" prom/mysqld-exporter
配置文件
1、创建MySQL授权账号,用于Exporter连接MySQL
CREATE USER 'exporter'@'localhost' IDENTIFIED BY '密码' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
建议给账号设置最大连接数,防止监控连接对MySQL造成过高负载
2、修改prometheus.yml
,加入静态监控
- job_name: 'mysql'
scrape_interval: 5s
static_configs:
- targets: ['192.168.0.102:9104']
启动
1、启动MySQL Exporter
如果是压缩包,使用如下命令启动,如果用Docker 部署见上述说明
nohup ./mysqld_exporter --config.my-cnf=<path_to_cnf> &
启动后访问host:9104/metrics
地址,正常会出现如下很多的mysql开头的指标:
2、启动 Prometheus
使用命令 或者 Docker 重启 或者 项reload
地址发送POST请求重载配置文件(前提开启了--web.enable-lifecycle
)
检查targets
是否正确注册,如图:
导入Grafana
可以使用该开源面板https://grafana.com/grafana/dashboards/7362-mysql-overview/
,在Grafana中进行导入,有部分指标没数据,可以进行适当调整,如图所示:
扩展
同一个Exporter监控多个Mysql实例
官方最新的main分支已经支持了监控多实例,但由于过去1年了还没发布,我们需要自己编译源码,并且ReadMe也有一些错误,不过在这里我已经踩过坑了。
1、下载编译文件
从该地址下载编译文件,打包自己的Docker镜像,或者直接运行
https://download.csdn.net/download/weixin_40972073/87529490
2、创建mysql.my.cnf
文件
[client]
user = username
password = password
[client2]
user = username2
password = password2
3、配置prometheus
- job_name: mysql1
metrics_path: /probe
params:
auth_module: [client]
static_configs:
- targets:
- mysql_host:port
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: mysql_exporter_host:port
- job_name: mysql2
metrics_path: /probe
params:
auth_module: [client2]
static_configs:
- targets:
- mysql2_host:port
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: mysql_exporter_host:port
4、验证
查看是否正确注册,及指标是否正确读取
5、导入多实例Grafana面板
MySQL Exporter命令
v0.14.0
版本命令
Name | Description |
---|---|
config.my-cnf | MySQL认证信息配置路径 (default: ~/.my.cnf ) |
log.level | 日志记录级别 (default: info) |
exporter.lock_wait_timeout | 设置锁定超时等待时间,避免长时间锁定,秒为单位(default: 2) |
exporter.log_slow_filter | 添加log_slow_filter 以避免抓取时的慢查询日志记录。注意:Oracle MySQL不支持。 |
tls.insecure-skip-verify | 忽略tls的验证错误 |
web.config.file | web配置文件路径配置 |
web.listen-address | web页面监听地址 |
web.telemetry-path | 指标暴露地址 |
version | 打印的版本信息 |
总结
对于各大云厂商提供的MySQL,虽然云厂商已经自带了监控工具,如果有需要同样也可以通过该方式对MySQL监控。
Prometheus 系列文章
- Prometheus 的介绍和安装
- 直观感受PromQL及其数据类型
- PromQL之选择器和运算符
- PromQL之函数
- Prometheus 告警机制介绍及命令解读
- Prometheus 告警模块配置深度解析
- Prometheus 配置身份认证
- Prometheus 动态拉取监控服务
- Prometheus 监控云Mysql和自建Mysql
- Prometheus 监控服务器
- Prometheus 监控Redis
- Prometheus 监控消息队列
- Prometheus 监控ES
- Prometheus 自定义监控
- Prometheus 告警接入钉钉、邮箱、飞书
- Prometheus 高可用部署
以上是关于Prometheus 监控云Mysql和自建Mysql(多实例)的主要内容,如果未能解决你的问题,请参考以下文章