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)比直接传参更可靠。

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

相关推荐
七夜zippoe3 小时前
OpenClaw 日志与调试技巧:从入门到精通
grafana·日志·调试技巧·log·openclaw
布史1 天前
Prometheus Python Client 实操指南:从零实现自定义 Exporter
网络·python·prometheus
Yu_摆摆3 天前
windows部署prometheus+windows_exporter+grafana+alertmanager实现监控CPU、内存、磁盘并邮件告警
windows·grafana·prometheus
indexsunny5 天前
互联网大厂Java面试实战:从Spring Boot到微服务架构的深度解析
java·spring boot·spring cloud·kafka·prometheus·security·microservices
**蓝桉**5 天前
Prometheus的服务发现机制
服务发现·prometheus
qq_266348736 天前
Grafana+Loki+Alloy日志采集系统-2
grafana·loki
qq_266348736 天前
Grafana+Loki+Alloy日志采集系统-1
grafana
Triv20256 天前
太阳能船远程信息处理:CAN数据记录 + Grafana仪表板实战案例
grafana·数据可视化·influxdb·嵌入式系统·can总线·数据采集与监控·智能船舶
**蓝桉**6 天前
prometheus监控docker容器(Rocky9)
docker·容器·prometheus