”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在 Galera 集群节点上设置 MariaDB/MySQL Exporter 以进行 Prometheus 监控

如何在 Galera 集群节点上设置 MariaDB/MySQL Exporter 以进行 Prometheus 监控

发布于2024-11-08
浏览:140

How to Set Up MariaDB/MySQL Exporter on Galera Cluster Nodes for Prometheus Monitoring

社区开发者您好! ?

在这篇文章中,我将引导您完成在 Galera Cluster 节点上设置 MariaDB/MySQL Exporter 以使用 Prometheus 进行监控所采取的步骤。就我而言,我在具有三个节点的云服务器提供商上运行 MariaDB Galera Cluster,并使用 Prometheus Grafana 来监控我的设置。 Galera Cluster 设置和监控工具非常有用,但从 MariaDB 获取正确的指标并不简单,因此我决定记录我的解决方案。

要监控 MariaDB 和 Galera Cluster 指标,例如每秒查询数、连接数、复制状态等,您需要结合使用 MySQL Exporter 和 Prometheus。该导出器将公开特定于数据库的指标,包括 Galera 和 MariaDB 统计数据。

在 Galera 集群节点上设置 MariaDB/MySQL Exporter 的步骤:

先决条件

  • A MariaDB Galera Cluster 具有多个节点。
  • A Prometheus服务器已启动并正在运行。
  • Grafana 用于可视化指标(可选但推荐)。
  • 访问节点以安装导出器。

注意:您已经可以在云服务器提供商的市场上使用 Prometheus Grafana 的机器。赫兹纳,数字海洋

第 1 步:安装 MySQL/MariaDB 导出器

在每个 Galera 节点上,我们需要安装 MySQL Exporter,它收集指标并将其公开给 Prometheus。具体方法如下:

从官方来源下载并安装导出器

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.1/mysqld_exporter-0.15.1.linux-amd64.tar.gz

提取文件

tar xvfz mysqld_exporter-0.15.1.linux-amd64.tar.gz

将二进制文件移动到系统路径

sudo cp mysqld_exporter-0.15.1.linux-amd64/mysqld_exporter /usr/local/bin/

为导出器添加系统用户

sudo useradd -rs /bin/false mysqld_exporter

第 2 步:使用 MySQL/MariaDB 凭证配置导出器

导出器需要访问 MariaDB 指标。在导出器的主目录中创建 .my.cnf 文件来存储连接凭据:

sudo mkdir /etc/.mysqld_exporter
sudo nano /etc/.mysqld_exporter/.my.cnf

将以下内容添加到文件中:


[client]
user=exporter
password=yourpassword


确保用户具有访问必要指标的适当权限:

访问使用 mysql -u root 或 mariadb -u root

创建由“yourpassword”标识的用户“exporter”@“localhost”;
授予进程,复制客户端,选择 *.* TO 'exporter'@'localhost';
同花顺特权;

第 3 步:将导出器设置为服务

为了确保 MySQL Exporter 在启动时启动,让我们将其配置为 systemd 服务:

sudo nano /etc/systemd/system/mysqld_exporter.service

将以下内容添加到文件中:


[Unit]
Description=Prometheus MySQL Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=mysqld_exporter
Group=mysqld_exporter
ExecStart=/usr/local/bin/mysqld_exporter \
  --config.my-cnf=/etc/.mysqld_exporter/.my.cnf

[Install]
WantedBy=multi-user.target


保存文件并重新加载systemd:

sudo systemctl daemon-reload
sudo systemctl 启动 mysqld_exporter
sudo systemctl 启用 mysqld_exporter

第 4 步:将导出器目标添加到 Prometheus

接下来,更新您的 Prometheus 配置以从节点中获取指标。将以下内容添加到您的 prometheus.yml 文件中:

在此之前,您可以通过访问以下命令来检查 MySQL Exporter 是否正在运行:

curl http://:9104/metrics

要访问此文件,例如 prometheus.yml,请使用:
sudo nano /opt/containers/prometheus-grafana/prometheus/prometheus.yml

添加到 scrape_configs::


- job_name: 'mariadb-galera'
  static_configs:
    - targets: ['node1-ip:9104', 'node2-ip:9104', 'node3-ip:9104']


请回复您数据库节点的IP

然后,重新加载 Prometheus:

sudo systemctl 重新加载普罗米修斯

第 5 步:在 Grafana 中可视化

如果您使用 Grafana,您可以导入预构建的仪表板以进行 MySQL/MariaDB 监控。 MySQL/MariaDB 指标的一种流行仪表板 ID 是 7362.

导入:

  1. 打开 Grafana。
  2. 导航到仪表板 > 导入。
  3. 在“Grafana.com Dashboard”字段中输入7362,然后单击加载

您现在应该在 Grafana 仪表板中看到来自 MariaDB Galera Cluster 节点的详细指标!

结论

通过在每个 Galera Cluster 节点上设置 MariaDB Exporter,Prometheus 现在可以抓取和监控关键数据库指标。此设置可以更好地了解集群的运行状况和性能,从而更轻松地根据需要进行故障排除和优化。

如果您正在设置类似的内容或有任何建议,请随时在下面留下任何问题或评论。感谢您的阅读!

版本声明 本文转载于:https://dev.to/alighaemia/how-to-set-up-mariadbmysql-exporter-on-galera-cluster-nodes-for-prometheus-monitoring-4b3l?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 编译器报错“usr/bin/ld: cannot find -l”解决方法
    编译器报错“usr/bin/ld: cannot find -l”解决方法
    错误:“ usr/bin/ld:找不到-l “ 此错误表明链接器在链接您的可执行文件时无法找到指定的库。为了解决此问题,我们将深入研究如何指定库路径并将链接引导到正确位置的详细信息。添加库搜索路径的一个可能的原因是,此错误是您的makefile中缺少库搜索路径。要解决它,您可以在链接器命令中添加...
    编程 发布于2025-07-03
  • 查找当前执行JavaScript的脚本元素方法
    查找当前执行JavaScript的脚本元素方法
    如何引用当前执行脚本的脚本元素在某些方案中理解问题在某些方案中,开发人员可能需要将其他脚本动态加载其他脚本。但是,如果Head Element尚未完全渲染,则使用document.getElementsbytagname('head')[0] .appendChild(v)的常规方...
    编程 发布于2025-07-03
  • 为什么尽管有效代码,为什么在PHP中捕获输入?
    为什么尽管有效代码,为什么在PHP中捕获输入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,输出...
    编程 发布于2025-07-03
  • 如何使用node-mysql在单个查询中执行多个SQL语句?
    如何使用node-mysql在单个查询中执行多个SQL语句?
    Multi-Statement Query Support in Node-MySQLIn Node.js, the question arises when executing multiple SQL statements in a single query using the node-mys...
    编程 发布于2025-07-03
  • 如何干净地删除匿名JavaScript事件处理程序?
    如何干净地删除匿名JavaScript事件处理程序?
    删除匿名事件侦听器将匿名事件侦听器添加到元素中会提供灵活性和简单性,但是当要删除它们时,可以构成挑战,而无需替换元素本身就可以替换一个问题。 element? element.addeventlistener(event,function(){/在这里工作/},false); 要解决此问题,请考虑...
    编程 发布于2025-07-03
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案: args)抛出异常{ 日历cal = calendar.getInstance(); SimpleDateFormat SDF =新的SimpleDateFormat(“...
    编程 发布于2025-07-03
  • 如何在Chrome中居中选择框文本?
    如何在Chrome中居中选择框文本?
    选择框的文本对齐:局部chrome-inly-ly-ly-lyly solument 您可能希望将文本中心集中在选择框中,以获取优化的原因或提高可访问性。但是,在CSS中的选择元素中手动添加一个文本 - 对属性可能无法正常工作。初始尝试 state)</option> < op...
    编程 发布于2025-07-03
  • 在GO中构造SQL查询时,如何安全地加入文本和值?
    在GO中构造SQL查询时,如何安全地加入文本和值?
    在go中构造文本sql查询时,在go sql queries 中,在使用conting and contement和contement consem per时,尤其是在使用integer per当per当per时,per per per当per. [&​​&&&&&&&&&&&&&&&默元组方法在...
    编程 发布于2025-07-03
  • 为什么HTML无法打印页码及解决方案
    为什么HTML无法打印页码及解决方案
    无法在html页面上打印页码? @page规则在@Media内部和外部都无济于事。 HTML:Customization:@page { margin: 10%; @top-center { font-family: sans-serif; font-weight: bo...
    编程 发布于2025-07-03
  • Java中假唤醒真的会发生吗?
    Java中假唤醒真的会发生吗?
    在Java中的浪费唤醒:真实性或神话?在Java同步中伪装唤醒的概念已经是讨论的主题。尽管存在这种行为的潜力,但问题仍然存在:它们实际上是在实践中发生的吗? Linux的唤醒机制根据Wikipedia关于伪造唤醒的文章,linux实现了pthread_cond_wait()功能的Linux实现,利用...
    编程 发布于2025-07-03
  • 左连接为何在右表WHERE子句过滤时像内连接?
    左连接为何在右表WHERE子句过滤时像内连接?
    左JOIN CONUNDRUM:WITCHING小时在数据库Wizard的领域中变成内在的加入很有趣,当将c.foobar条件放置在上面的Where子句中时,据说左联接似乎会转换为内部连接。仅当满足A.Foo和C.Foobar标准时,才会返回结果。为什么要变形?关键在于其中的子句。当左联接的右侧值...
    编程 发布于2025-07-03
  • 用户本地时间格式及时区偏移显示指南
    用户本地时间格式及时区偏移显示指南
    在用户的语言环境格式中显示日期/时间,并使用时间偏移在向最终用户展示日期和时间时,以其localzone and格式显示它们至关重要。这确保了不同地理位置的清晰度和无缝用户体验。以下是使用JavaScript实现此目的的方法。方法:推荐方法是处理客户端的Javascript中的日期/时间格式化和时...
    编程 发布于2025-07-03
  • 表单刷新后如何防止重复提交?
    表单刷新后如何防止重复提交?
    在Web开发中预防重复提交 在表格提交后刷新页面时,遇到重复提交的问题是常见的。要解决这个问题,请考虑以下方法: 想象一下具有这样的代码段,看起来像这样的代码段:)){ //数据库操作... 回声“操作完成”; 死(); } ?> ...
    编程 发布于2025-07-03
  • 如何有效地转换PHP中的时区?
    如何有效地转换PHP中的时区?
    在PHP 利用dateTime对象和functions DateTime对象及其相应的功能别名为时区转换提供方便的方法。例如: //定义用户的时区 date_default_timezone_set('欧洲/伦敦'); //创建DateTime对象 $ dateTime = ne...
    编程 发布于2025-07-03
  • Go web应用何时关闭数据库连接?
    Go web应用何时关闭数据库连接?
    在GO Web Applications中管理数据库连接很少,考虑以下简化的web应用程序代码:出现的问题:何时应在DB连接上调用Close()方法?,该特定方案将自动关闭程序时,该程序将在EXITS EXITS EXITS出现时自动关闭。但是,其他考虑因素可能保证手动处理。选项1:隐式关闭终止数...
    编程 发布于2025-07-03

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3