MySQL容器部署Prometheus+Granfana全流程

第一阶段:MySQL 监控账号准备

为了安全,在 MySQL 中创建一个专门用于监控的账号:

复制代码
CREATE USER 'exporter'@'%' IDENTIFIED BY 'YourPassword123!';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';
FLUSH PRIVILEGES;

第二阶段:部署 mysqld-exporter (数据采集层)

这是最关键的一步。由于密码包含特殊字符且为了稳定,我们采用了 配置文件挂载 的方式。

  1. 创建配置文件 /opt/prometheus/my.cnf:

    复制代码
    [client]
    user=root
    password=AppPass123!
    host=127.0.0.1
    port=3306
  2. 启动容器 (使用 --network host 模式直接访问宿主机网络):

    复制代码
    docker run -d \
      --name mysqld-exporter \
      --network host \
      -v /opt/prometheus/my.cnf:/etc/.my.cnf \
      prom/mysqld-exporter \
      --config.my-cnf=/etc/.my.cnf
  3. 验证 :访问 http://192.168.211.136:9104/metrics,看到 mysql_ 开头的文字即为成功。


第三阶段:部署 Prometheus (存储层)

  1. 准备配置文件 /opt/prometheus/prometheus.yml:

    复制代码
    global:
      scrape_interval: 15s
    ​
    scrape_configs:
      - job_name: 'mysql-monitor'
        static_configs:
          - targets: ['192.168.211.136:9104']
  2. 启动容器

    复制代码
    docker run -d \
      --name prometheus \
      -p 9090:9090 \
      -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
      prom/prometheus
  3. 验证 :访问 http://192.168.211.136:9090/targets,看到 mysql-monitor 状态为 UP


第四阶段:部署 Grafana (展示与告警层)

  1. 获取邮件授权码 :在 163 邮箱设置中开启 SMTP 服务并获取 16 位授权码

  2. 启动容器 (带邮件配置参数):

    复制代码
    docker run -d \
      --name grafana \
      --network host \
      -e "GF_SMTP_ENABLED=true" \
      -e "GF_SMTP_HOST=smtp.163.com:465" \
      -e "GF_SMTP_USER=15320239818@163.com" \
      -e "GF_SMTP_PASSWORD=UMt7XXsHMtQ4XSRi" \
      -e "GF_SMTP_FROM_ADDRESS=15320239818@163.com" \
      -e "GF_SMTP_FROM_NAME=MySQL监控告警" \
      -e "GF_SMTP_SKIP_VERIFY=true" \
      grafana/grafana

第五阶段:Grafana 图表可视化

  1. 添加数据源

    • 登录 http://192.168.211.136:3000 (admin/admin)。

    • Connections -> Data Sources -> Add Prometheus。

    • URL 填入:http://192.168.211.136:9090

  2. 导入面板

    • Dashboards -> New -> Import。

    • 输入 ID:12442,选择 Prometheus 数据源。

    • 效果:看到 QPS、连接数、缓存利用率等精美图表。


第六阶段:邮件告警配置 (闭环)

  1. 设置联系人 (Contact Point)

    • Alerting -> Contact points -> Add contact point。

    • 选择 Email,填入收件地址。

    • 点击 Test 确认收到测试邮件。

  2. 创建告警规则 (Alert Rule)

    • 设置查询语句(如 mysql_global_status_threads_connected)。

    • 设置阈值(如 IS ABOVE 10)。

    • 设置持续时间(如 Pending 1m)。

    • 选择邮件联系人。


💡 核心排错经验 (RHEL 特有)

  • 防火墙策略:RHEL 必须开放 9090, 3000, 9104 端口。

    复制代码
    sudo firewall-cmd --permanent --add-port={9090,3000,9104}/tcp
    sudo firewall-cmd --reload
  • SELinux 限制 :如果挂载文件权限报错,可以临时使用 setenforce 0

  • 特殊字符 :环境变量中包含 ! 等符号时,使用配置文件挂载(.my.cnf)比直接传参更可靠。

  • 授权码:第三方发信必须使用邮箱生成的专用授权码,而非登录密码。

相关推荐
lee_curry1 天前
kube-prometheus-stack 87.21.0 部署
prometheus
扶疏5252 天前
Prometheus+Prometheus Adapter+metrics-server+Ingress实现k8s水平自动扩缩容(HPA)
容器·kubernetes·prometheus
奔跑中的小象2 天前
UOS V2500 沐曦mx-exporter监控加速卡(非K8S)
grafana·prometheus·uos·vllm·沐曦
Wang's Blog3 天前
Go-Zero 项目开发45: Prometheus + Grafana 安装部署与服务监控实战
golang·grafana·prometheus
Wang's Blog3 天前
Go-Zero 项目开发44:集成 Kibana 日志可视化与 Prometheus 性能监控
golang·prometheus·go-zero
Gauss松鼠会4 天前
Prometheus 实现 openGauss 的指标监控(二)Prometheus 中添加 openGauss指标
网络·数据库·oracle·prometheus·opengauss·经验总结
小尘要自信4 天前
让Prometheus跨网络抓取指标:Node Exporter公网监控实战
网络·prometheus
想你依然心痛5 天前
从监控数据到告警管理:Prometheus与Alertmanager部署实战
ubuntu·prometheus·内网穿透·系统监控·cpolar·告警管理
码农阿豪5 天前
Prometheus怎么监控另一台Linux服务器?Node Exporter配置教程
linux·服务器·prometheus
溜达的大象5 天前
Prometheus怎么监控MySQL?mysqld_exporter部署与告警教程
mysql·adb·prometheus