使用Prometheus在五分钟内监测MySQL/MariaDB

时间:2020-02-23 14:32:21  来源:igfitidea点击:

Prometheus是一个领先的时间序列数据库和监控解决方案,即开源。
Prometheus在给定的时间间隔收集来自已配置的目标的指标,评估规则表达式,显示结果,如果观察到某些条件是真的,则可以触发警报。

其中我们将研究如何在数据库服务器上配置Prometheus MySQL导出商,MySQL MariaDB和Grafana可视化数据。
这将使我们能够对数据库性能进行良好的看法,并知道我们有问题的位置。

第1步:安装和配置Prometheus Server

我已经写了关于如何安装和配置Prometheus Server的全面教程。
该教程标题为Ubuntu和CentOS 7,但它应该适用于任何其他系统服务器。

如何在CentOS/Ubuntu上安装Prometheus Server

按照教程,最后我们应该有一个工作Prometheus服务器。

第2步:在Linux上安装和配置Prometheus MySQL导出商

安装ProMetheus Server后,需要为MySQL Server指标安装ProMetheus Exporter。
请注意,支持的MySQL版本为5.5和Up。

添加Prometheus系统用户和组:

sudo groupadd --system prometheus
sudo useradd -s /sbin/nologin --system -g prometheus prometheus

此用户将管理出口商服务。

下载并安装Prometheus MySQL出口商:

这应该是在MySQL/Mariadb服务器上进行的,包括从站和主服务器。
我们可能需要检查最新版本的Prometheus MySQL Exporter发布页面,然后导出最新版本 VER变量如下所示:

下载最新发布MySQL Exporter:

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 Exporter数据库用户

用户应该有 PROCESS, SELECT, REPLICATION CLIENT权限:

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

创建Systemd单元文件(适用于Systemd Systems)

这对于系统服务器,对于Sysv Init系统,使用Prometheus MySQL Exporter Init脚本进行Sysv Init系统

创建新的服务文件:

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

如果服务器有公共网络,则可能需要更换 0.0.0.0:9104私人IP,例如 192.168.4.5:9104完成后,重新加载系统并开始 mysql_exporter服务。

sudo systemctl daemon-reload
sudo systemctl enable mysql_exporter
sudo systemctl start mysql_exporter

配置MySQL端点将由Prometheus Server刮擦

登录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应该能够通过网络到达目标。
确保我们有正确的网络/防火墙配置。

第3步:创建/导入MySQL Grafana仪表板

既然我们拥有配置的目标和要监控的代理,我们应该很好地添加Prometheus数据源到Grafana,以便我们可以进行指标可视化。
如果我们没有READY GRAFANA服务器,请使用下面的任何引导才能安装Grafana:

在CentOS 7上安装Grafana和FlowuxDB

如何在ubuntu和debian上安装grafana

安装后,通过导航到admin仪表板登录并添加数据源 Configuration > Data Sources

Name: Prometheus
Type: Prometheus
URL: http://localhost:9090

如果Prometheus Server不在同一主机中作为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

Dashboards > Import > Upload .json file

使用仪表板文件和导入查找目录。

收集的指标应该开始显示。

如果我们希望为Prometheus导入所有Percona仪表板,请在Grafana服务器上安装它们。

git clone https://github.com/percona/grafana-dashboards.git
cp -r grafana-dashboards/dashboards /var/lib/grafana/

我们需要重新启动Grafana Server以导入这些仪表板。

sudo systemctl restart grafana-server
sudo service grafana-server restart

然后,我们可以在Grafana上使用仪表板开始。