在五分钟内用Prometheus监视MySQL/MariaDB
Prometheus是领先时间序列数据库和监视解决方案
那是开源的。 Prometheus从已配置的目标中收集指标
以给定的时间间隔,评估规则表达式,显示结果,
并可以在某些情况为真时触发警报。
其中我们将研究如何在以下位置配置Prometheus MySQL导出器
数据库服务器,包括MySQL MariaDB和使用Grafana可视化数据。
这将使我们能够很好地了解数据库性能以及
知道有问题时要去其中检查。的配置
警报规则不在本指南的范围内,但我会尝试涵盖
在接下来的指南中。
本指南将分为三个主要步骤
Prometheus服务器的安装和配置在数据库服务器上安装和配置MySQL Prometheus导出器创建/导入MySQL Grafana仪表盘我们将使用Percona随时提供的仪表盘。
安装和配置Prometheus服务器
我写了关于如何安装和配置的综合指南
Prometheus服务器。该指南的标题是Ubuntu和CentOS 7,但是它
应该适用于任何其他systemd服务器。
如何在CentOS/Ubuntu上安装Prometheus Server
按照指南进行操作,最后应该可以使用Prometheus服务器。
在Linux上安装和配置Prometheus MySQL Exporter
安装Prometheus服务器后,我们需要
用于MySQL服务器指标的installPrometheus导出程序。请注意
支持的MySQL版本为5.5及更高版本。
添加Prometheus系统用户和组:
sudo groupadd --system prometheus sudo useradd -s /sbin/nologin --system -g prometheus prometheus
该用户将管理导出器服务。
下载并安装Prometheus MySQL Exporter:
这应该在MySQL/MariaDB服务器(从服务器和主服务器)上完成。我们可能需要检查Prometheus MySQL导出器的发行页面以获取最新版本,然后将最新版本导出到VER
变量,如下所示:
下载最新版本的MySQL导出器:
curl -s https://api.github.com/repos/prometheus/mysqld_exporter/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4 | wget -qi tar xvf mysqld_exporter*.tar.gz sudo mv mysqld_exporter-*.linux-amd64/mysqld_exporter /usr/local/bin/ sudo chmod +x /usr/local/bin/mysqld_exporter
创建Prometheus导出器数据库用户
用户应具有"过程,选择,复制客户端"赠款:
CREATE USER 'mysqld_exporter'@'localhost' IDENTIFIED BY 'StrongPassword' WITH MAX_USER_CONNECTIONS 2; GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_exporter'@'localhost'; FLUSH PRIVILEGES; EXIT
如果我们具有主从数据库体系结构,请仅在主服务器上创建用户。
" WITH MAX_USER_CONNECTIONS 2"用于为用户设置最大连接限制,以避免在重负载下监视碎片而使服务器过载。
配置数据库凭证
创建数据库凭证文件:
sudo vim /etc/.mysqld_exporter.cnf
添加正确的用户名和密码以创建用户
[client] user=mysqld_exporter password=StrongPassword
设置所有权权限:
sudo chown root:prometheus /etc/.mysqld_exporter.cnf
创建系统单元文件(对于系统系统)
对于系统服务器,对于SysV初始化系统,请对SysV初始化系统使用Prometheus MySQL导出器初始化脚本
创建一个新的服务文件:
sudo vim /etc/systemd/system/mysql_exporter.service
添加以下内容
[Unit] Description=Prometheus MySQL Exporter After=network.target User=prometheus Group=prometheus [Service] Type=simple Restart=always ExecStart=/usr/local/bin/mysqld_exporter \ --config.my-cnf /etc/.mysqld_exporter.cnf \ --collect.global_status \ --collect.info_schema.innodb_metrics \ --collect.auto_increment.columns \ --collect.info_schema.processlist \ --collect.binlog_size \ --collect.info_schema.tablestats \ --collect.global_variables \ --collect.info_schema.query_response_time \ --collect.info_schema.userstats \ --collect.info_schema.tables \ --collect.perf_schema.tablelocks \ --collect.perf_schema.file_events \ --collect.perf_schema.eventswaits \ --collect.perf_schema.indexiowaits \ --collect.perf_schema.tableiowaits \ --collect.slave_status \ --web.listen-address=0.0.0.0:9104 [Install] WantedBy=multi-user.target
如果服务器具有公共和专用网络,则可能需要用专用IP替换" 0.0.0.0:9104",例如192.168.4.5:9104
完成后,重新加载systemd并启动mysql_exporter
服务。
sudo systemctl daemon-reload sudo systemctl enable mysql_exporter sudo systemctl start mysql_exporter
配置要由Prometheus Server抓取的MySQL端点
登录到Prometheus服务器,并将端点配置为抓取。以下是两个MySQL数据库服务器的示例。
scrape_configs: - job_name: server1_db static_configs: - targets: ['10.10.1.10:9104'] labels: alias: db1 - job_name: server2_db static_configs: - targets: ['10.10.1.11:9104'] labels: alias: db2
第一个服务器的IP地址为" 10.10.1.10",第二个服务器为" 10.10.1.11"。使用类似的格式添加其他目标。作业名称对于每个目标应该是唯一的。
注意:Prometheus Server应该能够达到
网络上的目标。确保我们具有正确的网络/防火墙
配置。
建立/汇入MySQL Grafana资讯主页
现在我们已经配置了目标并要监视代理,
我们应该将Prometheus数据源添加到Grafana,以便我们
可以进行指标可视化。如果我们没有现成的Grafana服务器,
使用以下任何指南来安装Grafana:
在CentOS 7上安装Grafana和InfluxDB
如何在Ubuntu和Debian上安装Grafana
安装后,登录到管理仪表板并通过导航到"配置>数据源"来添加数据源。
Name: Prometheus Type: Prometheus URL: http://localhost:9090
如果Prometheus服务器与Grafana不在同一主机上,请提供服务器的IP地址。
为MySQL Prometheus导出器创建/导入Grafana仪表板
如果我们没有足够的时间来创建自己的仪表板,则可以使用Percona创建的仪表板,它们是开源的。
让我们下载" MySQL_Overview"控制面板,它可以很好地概述数据库性能。
$mkdir ~/grafana-dashboards $cd ~/grafana-dashboards $wget https://raw.githubusercontent.com/percona/grafana-dashboards/master/dashboards/MySQL_Overview.json
将Prometheus MySQL仪表板上传到grafana
转到"信息中心>导入>上传.json文件"
使用仪表板文件找到目录并导入。
收集的指标应开始显示。
如果要导入Prometheus的所有Percona仪表板,请在Grafana服务器上安装它们。
git clone https://github.com/percona/grafana-dashboards.git cp -r grafana-dashboards/dashboards /var/lib/grafana/
我们需要重新启动Grafana服务器才能导入这些仪表板。
sudo systemctl restart grafana-server sudo service grafana-server restart
然后,我们可以开始使用Grafana上的仪表板。