在五分钟内用Prometheus监视MySQL/MariaDB

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

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上的仪表板。