前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >官方mysqld_exporter支持抓取多MySQL实例

官方mysqld_exporter支持抓取多MySQL实例

作者头像
公众号: 云原生生态圈
发布2023-01-09 15:05:15
2.1K0
发布2023-01-09 15:05:15
举报
文章被收录于专栏:云原生生态圈

目前官方代码仓库已经支持了 1 个 mysqld_exporter 监控多个 mysql 实例(1:n),详细的可以去看官方的代码仓库,但是目前尚未发现官方发布 release,可等待官方发布

以下是在针对官方代码仓库的代码自己进行编译的,有兴趣的可以参考

部署

说在前面

遇到问题,记得多看日志、多检查文件配置、检查网络问题

授权

代码语言:javascript
复制
#注意修改授权的网段
CREATE USER 'mysqld_exporter'@'192.168.1.%' IDENTIFIED BY 'cccc' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_exporter'@'192.168.1.%';
flush privileges;

此处可以在所有环境的实例中创建「相同」的 mysqld_exporter 监控账号和密码,也可以使用不同,当认证的密码不一样的时候,可以通过官方提示的配置文件配置即可。

准备配置文件

  • config.my-cnf

此文件遵循.ini格式,如果配置了不同的监控账号,你可以在该配置文件中增加不同项

代码语言:javascript
复制
[client]
user=mysqld_exporter
password=***************
[client-hb2]
user=monitor
password=***************
[client-hd]
user=monitor_hd
password=***************

注意,如果有不同的监控账号,记得在向 consul 中注册 mysql 实例的时候,记得修改auth_module的元数据的值

  • docker-compose.yaml
代码语言:javascript
复制
version: '3'
services:
  mysqld_exporter:
    image: xx/mysqld_exporter:v1
    restart: always
    hostname: mysqld_exporter
    ports:
      - 10002:9104
    volumes:
      - ${PWD}/config.my-cnf:/config.my-cnf
      - /usr/share/zoneinfo/PRC:/etc/localtime
    command:
      - "--config.my-cnf=/config.my-cnf"
      - "--collect.binlog_size"
      - "--collect.info_schema.replica_host"
    container_name: mysqld-exporter

因为官方没有发布 release,因此需要自己拉取代码仓库,进行编译即可

  • 编译 mysqld_exporter 二进制
代码语言:javascript
复制
git clone https://github.com/prometheus/mysqld_exporter.git && cd mysqld_exporter
go mod download && GOOS=linux CGO_ENABLED=0 go build -ldflags="-s -w" -installsuffix cgo -o mysqld_exporter .
# 测试
./mysqld_exporter --config.my-cnf=./config.my-cnf --collect.binlog_size --collect.info_schema.replica_host --web.listen-address=192.168.20.161:10002
  • 封装镜像 Dockerfile

可以采用官方的 Dockerfile 修改一下即可

代码语言:javascript
复制
ARG ARCH="amd64"
ARG OS="linux"
FROM quay.io/prometheus/busybox-${OS}-${ARCH}:latest
LABEL maintainer="marionxue@qq.com"

COPY ./mysqld_exporter /bin/mysqld_exporter

EXPOSE      9104
USER        nobody
ENTRYPOINT  [ "/bin/mysqld_exporter" ]

构建

代码语言:javascript
复制
docker build -t xx/mysqld_exporter:v1 -f ./Dockerfile .
  • 运行测试即可
代码语言:javascript
复制
docker-compose up -d

写入 consul

代码语言:javascript
复制
curl --location --request PUT 'http://$CONSUL_HOST:$CONSUL_PORT/v1/agent/service/register' \
--header 'x-consul-token: $CONSUL_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
  "id": "$MYSQLHOST:$MYSQLPORT",
  "name": "mysql",
  "tags": [
      "prod",
      "mysql_exporter"
  ],
  "meta": {
    "company": "company",
    "env": "prod",
    "instance": "$MYSQLHOST:$MYSQLPORT",
    "auth_module": "client",
    "role": "master",
    "name": "prod-1-1-master"
  }
}'

再次提醒,如果你使用了不同的监控账号,记得修改auth_moduleconfig.my-cnf文件中设置的配置项名称,否则会出现认证失败

配置 prometheus

代码语言:javascript
复制
  - job_name: 'consul_mysql'
    metrics_path: /probe
    consul_sd_configs:
      - server: '$CONSUL_HOST:$CONSUL_PORT'
        token: '$CONSUL_TOKEN'
        services: ['mysql']
        tags: ['prod']
    relabel_configs:
      - source_labels: ["__meta_consul_service_metadata_instance"]
        target_label: __param_target
      - source_labels: ["__meta_consul_service_metadata_company"]
        target_label: company
      - source_labels: ["__meta_consul_service_metadata_env"]
        target_label: env
      - source_labels: ["__meta_consul_service_metadata_auth_module"]
        target_label: auth_module
      - source_labels: ["__meta_consul_service_metadata_auth_module"]
        target_label: __param_auth_module
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: $MYSQLD_EXPORTER_HOST:$MYSQLD_EXPORTER_PORT

重载 Prometheus 配置文件

代码语言:javascript
复制
curl -XPUT http://localhost:9090/-/reload

最后效果:「升级完成,总共废弃了 19 个 mysqld_exporter 容器!」

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生生态圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 部署
    • 说在前面
      • 授权
        • 准备配置文件
          • 写入 consul
            • 配置 prometheus
            相关产品与服务
            访问管理
            访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档