为了确保MySQL/MariaDB服务器正常运行,你需要对基础设施实施监控。这样可以优化性能、发现问题或瓶颈,并确保数据库健康。借助Prometheus和Grafana,你可以实现这些目标,并为MySQL服务器创建美观的监控仪表板。
在本教程中,你将学习如何使用Prometheus和Grafana监控MySQL/MariaDB服务器。你将设置prometheus-mysqld-exporter来生成指标,并将端点监控添加到Prometheus服务器。之后,你将创建一个新的Grafana仪表板用于MySQL监控。
前提条件
在开始之前,请确保你已经具备以下条件:
- 已安装MySQL/MariaDB服务器
- 拥有管理员权限的非root用户
- 服务器上已安装Prometheus和Grafana
创建MySQL/MariaDB用户
要监控MySQL/MariaDB服务器,你需要创建一个专用的MySQL用户。该用户将拥有最低权限,如PROCESS、REPLICATION CLIENT以及所有数据库的SELECT权限。
在本节中,你将创建一个新的MySQL用户用于监控MySQL服务器。
使用以下命令登录到MySQL/MariaDB服务器。出现提示时输入root密码。
sudo mysql -u root -p
现在运行以下查询,使用unix_socket认证创建一个名为prometheus的新MySQL用户。该用户将拥有查看进程、复制客户端以及MySQL服务器中所有数据库SELECT操作的权限。
CREATE USER IF NOT EXISTS 'prometheus'@'localhost' IDENTIFIED WITH unix_socket;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'prometheus'@'localhost';
FLUSH PRIVILEGES;

接下来,运行以下查询来检查MySQL用户prometheus@localhost。你将看到prometheus用户拥有SELECT、PROCESS和BINLOG MONITOR(作为复制客户端)权限。
SHOW GRANTS FOR 'prometheus'@'localhost';
输入quit退出MySQL/MariaDB服务器。

安装prometheus-mysqld-exporter
prometheus-mysqld-exporter是一个用于MySQL指标的导出器。它支持MySQL >= 5.6和MariaDB >= 10.3。要使用prometheus-mysqld-exporter,你需要将其安装在你的MySQL服务器上。
在本示例中,MySQL服务器运行在Debian 12上。默认情况下,prometheus-mysqld-exporter在官方Debian仓库中可用,因此我们将通过APT安装。如果你使用其他发行版,可以从GitHub手动下载安装。
首先运行以下命令更新Debian软件包索引。
sudo apt update

仓库更新完成后,使用以下命令安装prometheus-mysqld-exporter软件包。输入Y确认安装。
sudo apt install prometheus-mysqld-exporter

安装完成后,运行以下systemctl命令重新加载systemd管理器。
sudo systemctl daemon-reload
然后使用以下命令启动并启用prometheus-mysqld-exporter服务。这样,prometheus-mysqld-exporter服务将在你的系统上运行并设置为开机自启。
sudo systemctl enable --now prometheus-mysqld-exporter
将MySQL用户添加到prometheus-mysqld-exporter
现在你已经创建了MySQL用户并安装了prometheus-mysqld-exporter。下一步是将MySQL添加到prometheus-mysqld-exporter配置中。这样做可以生成MySQL服务器的指标,并在默认端口9104上暴露端点。
使用nano编辑器打开/etc/default/prometheus-mysqld-exporter文件。
sudo nano /etc/default/prometheus-mysqld-exporter
取消注释DATA_SOURCE_NAME环境变量,将MySQL集成到prometheus-mysqld-exporter。在本示例中,将使用prometheus MySQL用户通过mysqld.sock文件监控MySQL服务器。
DATA_SOURCE_NAME="prometheus@unix(/run/mysqld/mysqld.sock)/"
保存文件并退出编辑器。
现在运行以下systemctl命令重启prometheus-mysqld-exporter服务以应用更改。然后检查其状态以确保正在运行。
sudo systemctl restart prometheus-mysqld-exporter
sudo systemctl status prometheus-mysqld-exporter
你可以在下面看到prometheus-mysqld-exporter正在运行。

最后,打开浏览器访问 http://192.168.10.41:9104/。这是prometheus-mysqld-exporter的默认端点。如果你的配置成功,将生成指标并显示如下内容:

将prometheus-mysqld-exporter端点添加到Prometheus
现在prometheus-mysqld-exporter配置完成并生成了指标。你需要将prometheus-mysqld-exporter作为端点添加到Prometheus服务器。在本教程中,prometheus-mysqld-exporter端点地址为192.168.10.41:9104。
如果你还没有Prometheus服务器,可以参考如何在Debian 12上安装Prometheus和Node Exporter进行安装。
切换到Prometheus服务器,使用nano编辑器打开配置文件/etc/prometheus/prometheus.yml。
sudo nano /etc/prometheus/prometheus.yml
在scrape_configs部分中,按以下方式添加prometheus-mysqld-exporter的端点。在本示例中,prometheus-mysqld-exporter运行在server1上,IP地址和端口为192.168.10.41:9104。
scrape_configs:
- job_name: server1
static_configs:
- targets: ['192.168.10.41:9104']
labels:
alias: db1
保存文件并退出编辑器。
现在运行以下systemctl命令重启prometheus服务以应用更改。
sudo systemctl restart prometheus
最后,打开Prometheus服务器仪表板,选择Status > Targets菜单。确保你可以看到server1,即MySQL监控的端点。

设置Grafana MySQL服务器仪表板
将prometheus-mysqld-exporter端点添加到Prometheus服务器后,你现在可以为MySQL服务器监控构建Grafana仪表板了。在本节中,你将通过GrafanaLabs导入MySQL监控仪表板。
如果你还没有安装Grafana,可以参考如何在Ubuntu 24.04上安装Grafana和Prometheus进行安装。
在Grafana仪表板中,点击Dashboard > New > Import菜单。在本示例中,我们将使用GrafanaLabs的Grafana模板来监控MySQL服务器。
复制Grafana ID编号并粘贴,然后点击Load确认。

现在选择Prometheus作为数据源,点击Import。

如果成功,你将看到使用Prometheus和Grafana监控MySQL/MariaDB的仪表板。

总结
恭喜!你已经完成了使用Prometheus和Grafana监控MySQL/MariaDB服务器的配置。你使用prometheus-mysqld-exporter监控了MySQL服务器并生成了MySQL指标。你还将prometheus-mysqld-exporter作为端点添加到了Prometheus服务器。最后,你创建了一个Grafana仪表板来监控MySQL服务器。