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

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

相关推荐
数据雕塑家1 天前
数据库 + Grafana 可视化配置指南:从数据源连接到第一个仪表盘
数据库·grafana
yunson_Liu1 天前
记一次logrotate.service处理过程
prometheus
TechWJ2 天前
Ansible 跨千台机器批量部署,Node Exporter 监控实现 Prometheus 统一采集
ansible·prometheus
却话巴山夜雨时i2 天前
互联网大厂Java面试:从Spring Boot到Kafka的业务场景深度剖析
spring boot·redis·spring cloud·微服务·kafka·prometheus·java面试
洒满阳光的午后3 天前
我做了一个“能理解业务语义”的可观测性 MCP Server:统一接入 Prometheus、OpenObserve 和 SkyWalking
人工智能·ai·prometheus·skywalking·openobserve·mcp
凉云生烟3 天前
我在旅途中看监控:用 Grafana + 内网穿透把数据看板装进手机里
grafana
梵得儿SHI3 天前
SpringCloud 实战落地:可观测性建设(SkyWalking + Prometheus + Grafana)从 0 到 1 生产级部署
grafana·prometheus·springcloud·skywalking·微服务可观测性·线上问题排查
却话巴山夜雨时i4 天前
互联网大厂Java面试场景:Spring Boot、微服务与Redis实战解析
spring boot·redis·微服务·kafka·prometheus·java面试·电商场景
程序员老邢4 天前
【技术底稿 12】内网统一日志系统 Loki + Promtail 全流程部署(对接 Grafana,监控日志一体化)
java·运维·程序人生·grafana·devops
是店小二呀4 天前
Prometheus自定义指标实现方案:技术选型与实战评估
prometheus