为了确保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;

Debian 12使用Prometheus和Grafana监控MySQL教程

接下来,运行以下查询来检查MySQL用户prometheus@localhost。你将看到prometheus用户拥有SELECT、PROCESS和BINLOG MONITOR(作为复制客户端)权限。

SHOW GRANTS FOR 'prometheus'@'localhost';

输入quit退出MySQL/MariaDB服务器。

Debian 12使用Prometheus和Grafana监控MySQL教程

安装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

Debian 12使用Prometheus和Grafana监控MySQL教程

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

sudo apt install prometheus-mysqld-exporter

Debian 12使用Prometheus和Grafana监控MySQL教程

安装完成后,运行以下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正在运行。

Debian 12使用Prometheus和Grafana监控MySQL教程

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

Debian 12使用Prometheus和Grafana监控MySQL教程

将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监控的端点。

Debian 12使用Prometheus和Grafana监控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确认。

Debian 12使用Prometheus和Grafana监控MySQL教程

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

Debian 12使用Prometheus和Grafana监控MySQL教程

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

Debian 12使用Prometheus和Grafana监控MySQL教程

总结

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