Prometheus Exporter系列-Mysql_Exporter一键部署

新项目旧项目都需要给研发配置mysql监控,这里mysql监控对应aws 阿里云 腾讯云 华为云的云mysql产品或开源自建mysql。
exporter安装虽然简单,经常手动操作不免让人心烦,一键完成省去繁琐的常规操作。
配置信息对的情况下测试多次都可以正常安装,支持一台机器上安装多个数据库exporter,安装时提供不同端口作为参数即可

指定exporter使用的用户名、密码和版本号。默认版本号为文档日期所在最新版本

root@exporter-agent:/data/mysql-exporter# cat  install_mysql_exporter.sh 
#!/bin/bash# MySQL Exporter 一键安装脚本(优化版)
# 使用方法: ./mysql_exporter_setup.sh <导出端口>set -e# 配置信息
MYSQL_HOST="db-host"
MYSQL_USER="monitor_user"
MYSQL_PASSWORD="bagayalu321"
MYSQL_PORT="3306"
VER=0.17.2# 获取导出端口,默认为9104
EXPORTER_PORT=${1:-9104}# 基础目录
BASE_DIR="/data/mysql-exporter"
# 特定端口的工作目录
WORK_DIR="${BASE_DIR}/${EXPORTER_PORT}"# 创建基础目录和端口特定目录
mkdir -p $WORK_DIRecho "===> 开始安装 MySQL Exporter 到 ${WORK_DIR}..."# 打印创建 MySQL 监控用户的语句(仅供参考,不执行)
echo "===> MySQL 监控用户授权语句(需手动执行):"
cat << EOF
-- 在 MySQL 中创建监控用户的 SQL 语句:
CREATE USER '${MYSQL_MONITOR_USER}'@'%' IDENTIFIED BY '${MYSQL_MONITOR_PASSWORD}';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO '${MYSQL_MONITOR_USER}'@'%';
FLUSH PRIVILEGES;
EOFcat > $WORK_DIR/create_mysql_user.sql << EOF
-- 在 MySQL 中创建监控用户的 SQL 语句:
CREATE USER '${MYSQL_MONITOR_USER}'@'%' IDENTIFIED BY '${MYSQL_MONITOR_PASSWORD}';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO '${MYSQL_MONITOR_USER}'@'%';
FLUSH PRIVILEGES;
EOFecho "===> 授权语句已保存到: ${WORK_DIR}/create_mysql_user.sql"
echo "===> 注意: 创建的监控用户为 '${MYSQL_MONITOR_USER}',密码为 '${MYSQL_MONITOR_PASSWORD}'"
echo "===> 如需修改,请编辑授权语句后手动执行"
# 清理旧的服务(如果存在)
if systemctl is-active --quiet mysql_exporter_${EXPORTER_PORT}; thenecho "===> 停止并禁用旧的 MySQL Exporter 服务..."systemctl stop mysql_exporter_${EXPORTER_PORT}systemctl disable mysql_exporter_${EXPORTER_PORT}
fi# 检查 MySQL Exporter 是否已安装
if [ -f "${BASE_DIR}/mysqld_exporter" ] && ${BASE_DIR}/mysqld_exporter --version &>/dev/null; thenecho "===> MySQL Exporter 已安装,跳过下载步骤..."# 确保二进制文件可执行chmod +x ${BASE_DIR}/mysqld_exporter
elseecho "===> 下载并安装 MySQL Exporter..."cd $BASE_DIRwget https://github.com/prometheus/mysqld_exporter/releases/download/v${VER}/mysqld_exporter-${VER}.linux-amd64.tar.gztar xvfz mysqld_exporter-${VER}.linux-amd64.tar.gzmv mysqld_exporter-${VER}.linux-amd64/mysqld_exporter .chmod +x mysqld_exporterrm -rf mysqld_exporter-${VER}.linux-amd64*
fi# 创建配置文件
echo "===> 创建 MySQL Exporter 配置文件..."
cat > $WORK_DIR/.my.cnf << EOF
[client]
host=$MYSQL_HOST
port=$MYSQL_PORT
user=$MYSQL_MONITOR_USER
password=$MYSQL_PASSWORD
EOFchmod 600 $WORK_DIR/.my.cnf# 保存配置信息
cat > $WORK_DIR/config.info << EOF
# MySQL Exporter 配置信息
MYSQL_HOST=$MYSQL_HOST
MYSQL_PORT=$MYSQL_PORT
MYSQL_USER=$MYSQL_USER
MYSQL_PASSWORD=$MYSQL_PASSWORD
EXPORTER_PORT=$EXPORTER_PORT
EOFchmod 600 $WORK_DIR/config.info# 创建 systemd 服务文件
echo "===> 配置 systemd 服务..."
cat > /etc/systemd/system/mysql_exporter_${EXPORTER_PORT}.service << EOF
[Unit]
Description=MySQL Exporter for Prometheus (Port ${EXPORTER_PORT})
After=network.target[Service]
User=root
Group=root
Type=simple
ExecStart=${BASE_DIR}/mysqld_exporter --config.my-cnf=${WORK_DIR}/.my.cnf --web.listen-address=:${EXPORTER_PORT}
Restart=always
RestartSec=10[Install]
WantedBy=multi-user.target
EOF# 重新加载 systemd 配置
systemctl daemon-reload# 启动 MySQL Exporter 服务
echo "===> 启动 MySQL Exporter 服务..."
systemctl enable mysql_exporter_${EXPORTER_PORT}
systemctl start mysql_exporter_${EXPORTER_PORT}# 等待服务启动
sleep 5# 检查服务状态
if systemctl is-active --quiet mysql_exporter_${EXPORTER_PORT}; thenecho "===> MySQL Exporter 安装成功!服务正在运行"echo "===> 监控端口: ${EXPORTER_PORT}"echo "===> 可通过访问 http://$(hostname -I | awk '{print $1}'):${EXPORTER_PORT}/metrics 测试"# 创建清理脚本cat > $WORK_DIR/uninstall.sh << EOF
#!/bin/bash
# 卸载此 MySQL Exporter 实例的脚本systemctl stop mysql_exporter_${EXPORTER_PORT}
systemctl disable mysql_exporter_${EXPORTER_PORT}
rm -f /etc/systemd/system/mysql_exporter_${EXPORTER_PORT}.service
systemctl daemon-reloadecho "MySQL Exporter (端口 ${EXPORTER_PORT}) 已停止并禁用"
echo "可以手动删除目录: ${WORK_DIR}"
EOFchmod +x $WORK_DIR/uninstall.shecho "===> 卸载脚本已创建: ${WORK_DIR}/uninstall.sh"
elseecho "===> 安装失败,服务未能正常启动"echo "===> 请检查日志: journalctl -u mysql_exporter_${EXPORTER_PORT}"exit 1
fiecho "===> 所有文件均存放在: ${WORK_DIR}"
echo "===> 二进制文件位置: ${BASE_DIR}/mysqld_exporter"
echo "===> 配置信息已保存到: ${WORK_DIR}/config.info"
echo "===> 监控用户创建脚本: ${WORK_DIR}/create_mysql_user.sql"
echo "===> 安装完成!"

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

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

相关文章

Java高频面试之集合-17

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;JDK 8 对 HashMap 主要做了哪些优化呢&#xff1f;为什么要这么做&#xff1f; JDK 8 对 HashMap 的主要优化及原因 JDK…

力扣DAY24 | 热100 | 回文链表

前言 简单 √ 是反转链表的衍生题&#xff0c;很快写完了。不过没考虑到恢复链表结构的问题。 题目 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输…

Unity跨平台构建快速回顾

知识点来源&#xff1a;人间自有韬哥在&#xff0c;豆包 目录 一、发布应用程序1. 修改发布必备设置1.1 打开设置面板1.2 修改公司名、游戏项目名、版本号和默认图标1.3 修改 Package Name 和 Minimum API Level 2. 发布应用程序2.1 配置 Build Settings2.2 选择发布选项2.3 构…

手敲NLP相关神经网络,熟悉神经网络的结构与实现!

一、NNLM 二、word2vec 三、TextCNN 四、TextRNN 五、TextLSTM 六、Bi-LSTM 七、seq2seq 八、seq2seq&#xff08;attention&#xff09;

Spring MVC 拦截器使用

javaweb过滤器和springmvc拦截器&#xff1a; 拦截器的概念 拦截器使用 1/创建拦截器类&#xff0c;类中实现 handler执行前&#xff0c;执行后与渲染视图后的具体实现方法 public class GlobalExceptionHandler implements HandlerInterceptor {// if( ! preHandler()){re…

数据库分类、存储引擎、介绍、Mysql、SQL分类

DAY17.1 Java核心基础 数据库 关系型数据库&#xff08;传统数据库&#xff0c;安全可靠&#xff0c;数据量大&#xff09;&#xff1a;Mysql、Oracle、SQLServer 非关系型数据库nosql&#xff08;缓存数据库&#xff0c;高并发项目中&#xff0c;存储热点数据&#xff0c;短信…

Extend module 01:Keyboard

目录 一、Keyboard &#xff08;1&#xff09;资源介绍 &#x1f505;原理图 &#x1f505;扫描原理 &#xff08;2&#xff09;STM32CubeMX 软件配置 &#xff08;3&#xff09;代码编写 &#xff08;4&#xff09;实验现象 二、Keyboard接口函数封装 三、踩坑日记 &a…

【机器人】复现 GrainGrasp 精细指导的灵巧手抓取

GrainGrasp为每个手指提供细粒度的接触指导&#xff0c;为灵巧手生成精细的抓取策略。 通过单独调整每个手指的接触来实现更稳定的抓取&#xff0c;从而提供了更接近人类能力的抓取指导。 论文地址&#xff1a;GrainGrasp: Dexterous Grasp Generation with Fine-grained Con…

解锁 AWX+Ansible 自动化运维新体验:快速部署实战

Ansible 和 AWX 是自动化运维领域的强大工具组合。Ansible 是一个简单高效的 IT 自动化工具&#xff0c;而 AWX 则是 Ansible 的开源 Web 管理平台&#xff0c;提供图形化界面来管理 Ansible 任务。本指南将带你一步步在 Ubuntu 22.04 上安装 Ansible 和 AWX&#xff0c;使用 M…

Vulhub-jangow-01-1.0.1通关攻略

第0步&#xff1a; 打开靶机&#xff0c;按下shift&#xff0c;出现下图界面 在此页面按下e键&#xff0c;进入如下界面&#xff0c; 将ro 替换为 rw signie init/bin/bash 替换完毕后&#xff0c;按下Ctrl键X键&#xff0c;进入如下页面 ip a查看网卡信息 编辑配置文件网卡信…

默克生命科学 | ProClin™安全、高效防腐剂

ProClin™防腐剂是水溶性抗菌剂&#xff0c;是体外诊断(IVD)行业中最有效的抗菌剂之一&#xff0c;广泛应用于行业领先的诊断生产商的1,000多种FAD注册IVD试剂盒。低工作浓度下&#xff0c;ProClin™产品有效快速地抑制广谱微生物&#xff0c;有助于延长IVD试剂的保质期。 有别…

const应用

最近学校的花开了&#xff0c;选了一张三号楼窗前的白玉兰&#xff0c;(#^.^#) 1.修饰普通变量 当 const 用于修饰普通变量时&#xff0c;该变量的值在初始化之后就不能再改变。 #include <stdio.h>int main() {const int num 10;// num 20; // 错误&#xff0c;不…

FastStoneCapture下载安装教程(附安装包)专业截图工具

文章目录 前言FastStoneCapture下载FastStoneCapture安装步骤FastStoneCapture使用步骤 前言 在日常工作与学习里&#xff0c;高效截图工具至关重要。本教程将为你呈现FastStoneCapture下载安装教程&#xff0c;助你轻松拥有。 FastStoneCapture下载 FastStone Capture 是一款…

3. 轴指令(omron 机器自动化控制器)——>MC_ResetFollowingError

机器自动化控制器——第三章 轴指令 13 MC_ResetFollowingError变量▶输入变量▶输出变量▶输入输出变量 功能说明▶指令详情▶时序图▶重启动运动指令▶多重启运动指令▶异常 MC_ResetFollowingError 对指令当前位置和反馈当前位置的偏差进行复位。 指令名称FB/FUN图形表现S…

【HTML5游戏开发教程】零基础入门合成大西瓜游戏实战 | JS物理引擎+Canvas动画+完整源码详解

《从咖啡杯到财务自由&#xff1a;一个程序员的合成之旅——当代码遇上物理引擎的匠心之作》 &#x1f31f; 这是小游戏开发系列的第四篇送福利文章&#xff0c;感谢一路以来支持和关注这个项目的每一位朋友&#xff01; &#x1f4a1; 文章力求严谨&#xff0c;但难免有疏漏之…

举例说明自然语言处理(NLP)技术

当我们使用智能助手或社交媒体平台时&#xff0c;就会接触到自然语言处理&#xff08;NLP&#xff09;技术的应用。以下是一些常见的例子&#xff1a; 语音识别&#xff1a;当我们与智能助手如Siri、Alexa或Google Assistant交互时&#xff0c;我们说出语音命令&#xff0c;系统…

ResNet与注意力机制:深度学习中的强强联合

引言 在深度学习领域&#xff0c;卷积神经网络&#xff08;CNN&#xff09;一直是图像处理任务的主流架构。然而&#xff0c;随着网络深度的增加&#xff0c;梯度消失和梯度爆炸问题逐渐显现&#xff0c;限制了网络的性能。为了解决这一问题&#xff0c;ResNet&#xff08;残差…

【设计模式】组合模式

第11章 组合模式 11.1 一个基本的目录内容遍历范例 组合模式用于处理树形结构数据&#xff0c;如操作系统目录。以下是目录遍历的非组合模式实现&#xff1a; 文件类定义 class File { public:File(string name) : m_sname(name) {}void ShowName(string lvlstr) {cout <…

DSP28335 eCAN(增强型控制器局域网)

一、概述 1.1 特征 can协议2.0 ,高达1Mbps32个邮箱 1)—可配置接收或发送—可配置标准或扩展标识符—接收标识符屏蔽功能—支持数据和远程帧—支持0到8字节的数据帧—在接收和发送的消息上使用32位时间戳(发送接收计时器)—接收新消息保护—允许动态可编程的发送消息优先…

现代控制原理

一、在状态空间中&#xff0c;建立控制系统的数学模型 如&#xff1a;有单输入&#xff08;U)--单输出&#xff08;Y)控制系统&#xff0c;其状态方程和输出方程如下图&#xff1a; 二、画状态结构图 将上述状态方程转化为状态结构图有&#xff1a; 三、高阶控制系统的状态方…