Prometheus结合Consul采集多个MySQL实例的监控指标

本文主要介绍如何利用Prometheus官网提供的mysqld_exporter进行多MySQL实例的监控指标采集

建议安装最新版的mysqld_exporter, 因为从’2022-09-01’ 之后才支持多实例功能的。具体的官网说明详见
Support for scraping multiple mysqld hosts (#651)

ok,开始今天的教程~

1、下载安装 mysqld_exporter

# 参考 下载地址Release列表,选择适合的平台安装包# 进入运维规范 软件安装目录
cd /opt/app# 下载并解压
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.1/mysqld_exporter-0.15.1.linux-amd64.tar.gz
tar -zxvf mysqld_exporter-0.15.1.linux-amd64.tar.gz# 设置软连接
ln -s /opt/app/mysqld_exporter-0.15.1.linux-amd64 mysqld_exporter

2、进行配置

配置之前创建Prometheus exporter 账号并赋权

CREATE USER 'prometheus'@'192.168.%' IDENTIFIED BY 'XXXXXXXX' WITH MAX_USER_CONNECTIONS 10;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'prometheus'@'192.168.%';

配置连接MySQL的配置文件

# vim ./.my.cnf
[client]
user = prometheus
password = XXXXXXXX

其他的配置说明详见 https://github.com/prometheus/mysqld_exporter

为了方便管理,在每个MySQL实例初始化的时候,创建相同的账号 'prometheus'@'192.168.%' 和对应的密码, 这样在 mysql exporter中只用配置一个[client] 即可。

3、启动MySQL exporter并测试

注意可以通过 ./mysqld_exporter --help 查看以 --collect.xx 开头的参数,这个是该exporter支持的metrics

另外需要特殊说明几个参数

  • –config.my-cnf=“.my.cnf”

    配置exporter连接数据库时使用的认证信息(这里只要是配置用户和密码),默认是读取当前目录下的.my.cnf,可以修改指定

  • –web.listen-address=:9104

    exporter默认监听的端口,可以修改

启动 exporter 服务

nohup ./mysqld_exporter --config.my-cnf=./.my.cnf --collect.global_status --collect.global_variables --collect.mysql.user --collect.binlog_size --collect.slave_status &

当然还可以配置systemd 方式来管理该exporter服务

# vim /usr/lib/systemd/system/mysqld_exporter.service
[Unit]
Description=Prometheus MySQL exporter[Service]
ExecStart=/opt/app/mysqld_exporter/mysqld_exporter --config.my-cnf=/opt/app/mysqld_exporter/.my.cnf --collect.global_status --collect.global_variables --collect.mysql.user --collect.binlog_size --collect.slave_status
Restart=on-failure[Install]
WantedBy=multi-user.target

然后执行配置开机自启动

# 开启自启动
systemctl enable mysqld_exporter# 启动
systemctl start mysqld_exporter# 查看状态
systemctl status mysqld_exporter

4、测试验证

根据官网提示可以使用 /probe?target=foo:3306 的方式来验证

To use the multi-target functionality, send an http request to the endpoint /probe?target=foo:3306 where target is set to the DSN of the MySQL instance to scrape metrics from.

本次环境测试地址 http://192.168.3.100:9104/probe?target=xxxx:3306 然后在浏览器中打开如下,看到exporter部署成功

prometheus-mysql-expoter-probe-test

5、注册MySQL实例信息到Consul

备注: 关于Consul大家知道是目前比较常用的注册中心系统,常见的用法有

a)比如Java服务启动的时候注册到Consul,其他比如网关服务就可以自动发现服务进行请求转发

b)Nginx做服务动态转发时,可以借助于Consul中的KV功能实现在发布服务时,动态下线对应的服务节点,等服务节点重启成功之后再动态上线。可以实现后端服务的无损上线

具体Consul的服务安装和API用法详见官网文档即可,后者关于我博客中的相关文章说明

这里直接给出具体的注册代码

#!/usr/bin/env bash
# encoding: utf-8
# 批量初始化注册到Consulwhile read line
do# echo $lineinstance_id=$(echo $line|awk '{print $1}')instance_name=$(echo $line|awk '{print $2}')instance_address=$(echo $line|awk '{print $3}')suffix=$(echo $instance_name|awk -F"_" '{print $NF}')if [[ $suffix == 'slave' ]]thenrole="slave"elserole="master"fidata="{\"id\": \"rds-${instance_name}\",\"name\": \"mysql\",\"address\" : \"${instance_address}\",\"port\": 3306,\"tags\": [\"prod\", \"mysql_exporter\"],\"meta\": {\"env\": \"prod\",\"role\": \"${role}\",\"instance_id\": \"${instance_id}\",\"instance_name\": \"${instance_name}\"}}"# echo $datacurl -X PUT 'http://192.168.x.x:8500/v1/agent/service/register' -H 'Content-Type: application/json' -d "$data"
done < /opt/scripts/db-register-into-consul/db-list.txt

其中 db-list.txt 文件的内容格式如下

instance-id-xxx instance-name instance-address

或者可以手动单个实例的注册

curl -X PUT 'http://192.168.x.x:8500/v1/agent/service/register' -H 'Content-Type: application/json' \
-d '{"id": "rds-xxx","name": "mysql","address": "rm-xxxxxxxx.mysql.rds.aliyuncs.com","port": 3306,"tags": ["prod","mysql_exporter"],"meta": {"env": "prod","instance_id": "rm-xxxxxxxx.mysql.rds.aliyuncs.com:3306","role": "master","instance_name": "rds-xxx"}
}'

然后打开 Consul的 Web 控制台,在 Services 中搜索 mysql(这里定义的服务名称) 就可以看到有对应的实例注册到该服务下

6、配置Prometheus 自动发现多个MySQL实例

为了规范配置Prometheus的配置,建议按照如下把不同的Job配置到 scrape_configs 目录下单个文件存放管理

# cat scrape_configs/mysql_exporter.yml
scrape_configs:- job_name: 'consul_discovery_mysql'consul_sd_configs:# Consul的服务地址(这里配置的内网域名)- server: 'consul.xxx.local'# 这里是获取Consul中的服务,如上知道我们是把所有的MySQL实例注册到了`mysql`服务下services: ['mysql']relabel_configs:# 核心是获取 `__parm_target` 就是 上面第四步提到的probe抓取的target- source_labels: [__address__]target_label: __param_target- source_labels: [__meta_consul_service_id]target_label: instarnce_name- source_labels: [__param_target]target_label: instance- target_label: __address__# 注意这里: 该地址就是MySQL exporter服务的地址replacement: 192.168.3.100:9104

划重点

虽然在 mysql_exporter 的 config.file 对应的配置文件中可以配置多个 client 然后给配置不同的账号密码,且 prometheus也支持auth_module参数。

但是如果Prometheus配置auth_module参数时且每个job的账号密码不一样。那么就变成了手动配置多个Job的场景,那么基于Consul自动发现的多实例配置就失去了其意义。

所这里这里没有配置,且针对Prometheus监控猜忌,建议配置统一的账号密码就行

划重点

如果在进行relabel 配置的时候,不知道都有哪些原始的labels,可以后两种方案

1、就是Prometheus中先不进行relabel_configs的配置,然后配置生效之后打开 Prometheus Web控制台在 Status中找到 Targets ,然后鼠标放到对应job下endpoint 行 的Labels 列,就会有弹窗显示 Before relabeling 都有哪些

2、查看Prometheus官网介绍 Prometheus consul_sd_config relabel参数

但是个人建议第一种方式,因为笔者刚开始参考第二种方式在meta中存放了定制的参数,但是获取不到。最终分析定位发现是因为笔者的Consul版本太低,很多consul_sd_config参数不支持导致。

但是第一种方式,显示出来的参数就是当前版本支持的可用的参数。

当然具体使用自己更具自己的实际情况来判断就行。

7、验证Prometheus多实例采集

这里给实际的结果截图

prometheus-consul-mysql-targets

看到笔者这里已经采集到了36个实例数据,点击Endpoint就看到需要的结果,和上面第四步测试验证一致。

8、配置Grafana

配置Grafana 就相对很简单了。这里就不展开详细说明了。

大概的步骤就是

1)在grafana中添加该Prometheus数据源

2)然后新创建dashboard 在官网搜到需要的模板之后,按照模板id导致即可


如有疑问欢迎关注微信公众号或者QQ交流分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/442764.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C51 单片机学习(一):基础外设

参考 51单片机入门教程 1. 单片机简介 1.1 定义 单片机&#xff08;Micro Controller Unit&#xff0c;简称 MCU&#xff09; 内部集成了 CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能单片机的任务是信息采集&#xff08;依靠传感器&#xff09;、处…

【轮式平衡机器人】——TMS320F28069片内外设之ADC

一、ADC概述 这一部分不是我们的重点&#xff0c;原理分类啥的这里简要说明&#xff01; 步骤&#xff1a;采样、保持、量化、编码 将采样电平&#xff08;模拟值&#xff09;转换为数字值的方法&#xff1a;直接比较型&#xff08;并行ADC、逐次逼近型ADC&#xff09;&…

常用抓包软件集合(Fiddler、Charles)

1. Fiddler 介绍&#xff1a;Fiddler是一个免费的HTTP和HTTPS调试工具&#xff0c;支持Windows平台。它可以捕获HTTP和HTTPS流量&#xff0c;并提供了丰富的调试和分析功能。优点&#xff1a;易于安装、易于使用、支持多种扩展、可以提高开发效率。缺点&#xff1a;只支持Wind…

小白水平理解面试经典题目Leetcode 412. Fizz Buzz【Java实现】

412 FizzBuzz 小白渣翻译&#xff1a; 给定一个整数 n &#xff0c;返回一个字符串数组 answer &#xff08;从 1 开始索引&#xff09;&#xff0c;其中&#xff1a; answer[i] “FizzBuzz” 如果 i 能被 3 和 5 整除。answer[i] “Fizz” 如果 i 能被 3 整除。answer[i]…

安泰高压放大器电路设计方案是什么

高压放大器是电子设备中常用的一种放大器类型&#xff0c;用于将低电压信号放大到高电压输出。本文将介绍高压放大器电路设计的基本原理和方案&#xff0c;涵盖关键设计考虑因素以及常用的电路拓扑结构。 一、设计考虑因素 放大倍数&#xff1a;高压放大器的设计首要考虑因素是…

互联网创业这么热,为何个人站长消失了?

有没有发现&#xff0c;这几年互联网创业的人突然冒出来很多&#xff0c;正是互联网创业热的时候&#xff0c;有一批人却在这个时代消失不见了。不错&#xff0c;就是站长&#xff0c;这到底是为什么呢&#xff1f;是站长转型不力&#xff0c;还是时代的必然呢&#xff1f;甚至…

cad设计绘图工具:AutoCAD 2024 for Mac中文激活版

AutoCAD 2024 for Mac是一款专业的CAD设计绘图工具&#xff0c;适用于各种类型的建筑、机械、电子和图形设计项目。 软件下载&#xff1a;AutoCAD 2024 for Mac中文激活版下载 以下是该软件的一些主要功能和特点&#xff1a; 强大的绘图和编辑工具&#xff1a;AutoCAD提供了丰富…

sketchup草图大师模型网怎么样?

SketchUp草图大师模型网是一个提供SketchUp模型下载和分享的平台&#xff0c;如建e网等&#xff0c;用户可以在上面找到大量的SU模型&#xff0c;并学习一些SketchUp的使用技巧。该网站模型种类丰富&#xff0c;涵盖了建筑、景观、室内等不同领域&#xff0c;同时也有一些教程&…

Linux——安装MySQL

1、安装mysql8.0.35 1.1、安装步骤 1.更新包列表&#xff0c;首先&#xff0c;确保您的系统已更新到最新状态。运行以下命令来更新包列表和安装最新的软件包&#xff1a; sudo apt update sudo apt upgrade2.安装MySQL服务器&#xff1a;运行以下命令来安装MySQL服务器&…

RISC-V指令格式

RISC-V指令格式 1 RISC-V指令集命名规范2 RISC-V指令集组成2.1 基础整数指令集2.2 扩展指令集 3 RISC-V指令格式3.1 指令表述3.2 指令格式 本文属于《 RISC-V指令集基础系列教程》之一&#xff0c;欢迎查看其它文章。 1 RISC-V指令集命名规范 前面提到过RV32I&#xff0c;这是…

ONLYOFFICE | 免费开源办公神器新选择

目录 前言&#xff1a; 1、什么是ONLYOFFICE&#xff1f; 2、ONLYOFFICE下载使用 3、ONLYOFFICE团队协作云办公功能 4、ONLYOFFICE 8.0新版本的亮点功能 4.1、显示协作者头像 4.2、插件 UI 界面更新 4.3、可填写的 PDF 表单 5、最后 前言&#xff1a; 一个好的开发工具…

【伪类·HTML】

伪类 在 CSS 中&#xff0c;伪类是添加到选择器的关键字&#xff0c;给指定元素设置一些特殊状态&#xff0c;以 : 开头。 链接有以下四个状态。这四种状态也称之为超链接的伪类。 对于超链接的伪类&#xff0c;推荐的使用顺序是&#xff1a; :link - :visited - :hover - :a…