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

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

相关推荐
龙腾-虎跃27 分钟前
Docker 一键启动服务合集:Redis、MySQL、Kafka、MinIO、Prometheus 等(网盘转存防失效)
redis·mysql·docker·kafka·prometheus·小龙虾·miniio
Duang007_20 小时前
生产可观测性:从“系统慢“到“根因“的完整链路(Go / TypeScript)
后端·python·golang·typescript·prometheus
JWASX1 天前
go 学习 - prometheus 指标学习
学习·golang·prometheus
JWASX1 天前
go 学习 - prometheus 指标协程池监控
学习·golang·prometheus
爱琴孩3 天前
记一次Prometheus的WAL异常,导致服务器磁盘占用过高
prometheus·wal
Cheney Pan4 天前
第12篇 Prometheus 高可用与长期存储
prometheus
飞鸟真人4 天前
应用性能监测(APM)之 (五)Prometheus与OpenMetrics协议
prometheus·apm·open telemetry·openmetrics
Cheney Pan4 天前
第13篇 监控安全与权限治理
安全·prometheus
蓝胖的四次元口袋6 天前
Prometheus+Grafana知识梳理(2)
grafana·prometheus
Cheney Pan6 天前
第8篇 关键指标分析方法:RED/USE 与黄金信号
prometheus