Prometheus mysql-exporter
Posted
技术标签:
【中文标题】Prometheus mysql-exporter【英文标题】: 【发布时间】:2020-06-18 00:40:43 【问题描述】:我正在尝试使用 Prometheus 从 MariaDB 获取数据。尤其是 Userstat 表。
我有三台机器。在第一个上,我安装了 MariaDB 数据库,在第二个上我安装了 Prometheus,第三个上安装了 Grafana。
我在 MariaDB SET GLOBAL userstat=1;
上设置了用户状态功能
并创建了 mysql_exporter 用户
MariaDB [(none)]> CREATE USER 'exporter'@'444.333.22.111' IDENTIFIED BY 'password';
MariaDB [(none)]> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'444.333.22.111';
MariaDB [(none)]> FLUSH PRIVILEGES;
接下来我在第二台机器上安装了 Prometheus 和 mysql exporter。我也从存储库和 mysql_exporter 获得了 Prometheus。
我的导出器的路径是:/etc/default/prometheus-mysqld-exporter
,看起来像:
# By default the connection string will be read from
# $HOME/my.cnf or -config.my-cnf.
# To set a connection string from the environment instead, uncomment the
# following line.
export DATA_SOURCE_NAME="exporter:password@(444.333.22.111:3306)/mysql"
# Set the command-line arguments to pass to the exporter.
# ARGS='-config.my-cnf /etc/mysql/debian.cnf'
-collect.auto_increment.columns
-collect.binlog_size
-collect.info_schema.userstats
-config.my-cnf string
-web.listen-address=0.0.0.0:9104
普罗米修斯.yml:
# Sample config for Prometheus.
global:
scrape_interval: 1s # By default, scrape targets every 15 seconds.
evaluation_interval: 15s # By default, scrape targets every 15 seconds.
# scrape_timeout is set to the global default (10s).
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: 'example'
# Load and evaluate rules in this file every 'evaluation_interval' seconds.
rule_files:
# - "first.rules"
# - "second.rules"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
scrape_timeout: 5s
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090', 'localhost:9104']
- job_name: node
# If prometheus-node-exporter is installed, grab stats about the local
# machine by default.
static_configs:
- targets: ['localhost:9100']
不幸的是,它没有做我想做的事,并继续监控我安装了 Prometheus 的机器。任何想法可能是问题所在? 提前致谢!
【问题讨论】:
我不知道是否需要 - 但根据我的经验,您通常希望在运行服务的机器上安装导出器 - 即在 MariaDB 服务器上安装 mysqld-exporter。 感谢您的回复!我在想一个出口商可以从远程服务器上报废数据库数据。他们是否有任何文档,我在哪里可以找到有关该主题的一些提示? 有可能将 mysqld-exporter 安装在与 MariaDB 不同的服务器上——但我从未见过有人这样做的例子。也许尝试在 MariaDB 服务器上本地安装 mysqld-exporter,如果问题仍然存在,那么您可以从那里继续进行故障排除。 请注意,您应该将 mysql 导出器放在自己的工作上。工作标签通常用于识别度量领域。我不知道您的期望,但您的节点导出器只有一个静态配置。您的描述中有很多动人的部分没有加起来。这令人困惑。 “继续监控我安装了 Prometheus 的机器”是什么意思? 我的问题基本上是我是否可以通过 prometheus mysql exporter 远程抓取数据?我有两台机器,第一台有 Prometheus 和 mysql 导出器,第二台有 MariaDB。 【参考方案1】:让我们首先尝试理解这一点,Exporter需要监控来自远程服务器的指标,因此exporter的配置应该是正确的,因为它正在尝试向IP请求MariaDB 服务器即444.333.22.111
(远程服务器IP)。
MariaDB 服务器应将 Exporter 服务器的 IP 列入白名单,以允许来自那里的任何请求。
解决方案:
当您在 MariaDB 中创建用户时,在您的情况下是 'exporter'@'444.333.22.111'
,因此这意味着您将 444.333.22.111
列入用户 exporter
的白名单。
但是您应该将服务器的 IP 列入白名单,其中设置了 prometheus-mysqld-exporter
。但在你的情况下,它是不同的服务器。所以应该是这样的
MariaDB [(none)]> CREATE USER 'exporter'@'exporter server 的 IP' IDENTIFIED BY 'password'; MariaDB [(none)]> GRANT PROCESS, REPLICATION CLIENT, SELECT ON . TO 'exporter'@'exporter server IP'; MariaDB [(none)]> 刷新权限;
试试这个,如果您遇到任何错误,请告诉我,同时尝试查看 prometheus-mysqld-exporter
日志。
【讨论】:
以上是关于Prometheus mysql-exporter的主要内容,如果未能解决你的问题,请参考以下文章
Prometheus监控运维实战六: Node_exporter监控主机