mysqlrouter_exporter 与 Router 注册

本文说明如何使用 router_exporter_install.yml 部署 mysqlrouter_exporter,并把 Router 指标注册到 Prometheus。

如果你想先了解这个独立项目本身,再看接入步骤,可以先读:mysqlrouter_exporter 项目简介

mysqlrouter_exporter 现在已拆分为独立项目:

1. 依赖链

项目内容
前置依赖已完成 monitoring_prometheus_deployment.yml;已完成 innodb_cluster_router.yml;Router REST API 可访问
必填变量mysqlrouter_exporter_api_base_urlmysqlrouter_exporter_api_usermysqlrouter_exporter_api_passwordmysqlrouter_exporter_port
条件变量router_rest_api_auth_mode: file,请确保 router_rest_api_file_user / router_rest_api_file_password 与 exporter 配置一致
安装模式mysqlrouter_exporter_install_type: dbbot 使用发行包内置二进制;package 使用独立项目 release 包
后续依赖注册完成后,在 Prometheus Targets 页面和 Grafana Router 面板中验证;如果 Router 主机还要采集主机指标,额外执行 node_exporter_install.yml

2. 默认变量

默认变量位于 mysql_ansible/playbooks/vars/var_router_exporter_install.yml

mysqlrouter_exporter_install: true
mysqlrouter_exporter_install_type: dbbot
mysqlrouter_exporter_version: "0.0.1"
mysqlrouter_exporter_package: "mysqlrouter_exporter_0.0.1_linux_amd64.tar.gz"
mysqlrouter_exporter_url: "https://github.com/fanderchan/mysqlrouter_exporter/releases/download/v0.0.1/mysqlrouter_exporter_0.0.1_linux_amd64.tar.gz"
mysqlrouter_exporter_port: 9165
mysqlrouter_exporter_api_base_url: "https://127.0.0.1:8443/api/20190715"
mysqlrouter_exporter_api_user: router_api_user
mysqlrouter_exporter_api_password: "Dbbot_router_api_user@8888"
mysqlrouter_exporter_insecure_skip_verify: true

说明:

  • mysqlrouter_exporter_api_base_url 默认读取本机 Router 的 REST API。
  • 如果你改了 Router 的 http 端口,或把 REST API 绑定到其他地址,这里也要同步修改。
  • 默认账号和密码与 Router 的 router_rest_api_file_user / router_rest_api_file_password 保持一致。
  • mysqlrouter_exporter_install_type: dbbot 会使用 dbbot 发行包中内置的兼容二进制。
  • mysqlrouter_exporter_install_type: package 会按 mysqlrouter_exporter_url 下载独立项目 release 包;你也可以直接覆盖这个 URL 指向指定版本。

3. 执行部署

cd /usr/local/dbbot/mysql_ansible/playbooks
ansible-playbook router_exporter_install.yml

补充说明:

  • dbbot 模式直接分发仓内内置的 mysqlrouter_exporter 二进制。
  • package 模式会在控制节点准备好 mysqlrouter_exporter_*.tar.gz,再下发到目标机解压安装。
  • 如果你想锁定独立项目的某个指定 release,直接覆盖 mysqlrouter_exporter_url 即可。

4. 注册到 Prometheus

推荐优先使用 dbbotctl

dbbotctl exporter register -t router -H 192.0.2.151 -s 192.0.2.161 -p ${prometheus_server_root_password}
dbbotctl exporter register -t router -H 192.0.2.152 -s 192.0.2.161 -p ${prometheus_server_root_password}

补充说明:

  • 如果你改了 mysqlrouter_exporter_port,注册时追加 -P
  • 如果 Router REST API 不是默认 8443,注册时追加 --router-api-port <port>,确保 instance / service_name 标签正确。
  • 如果要写入额外标签,可继续使用 --region--cluster--replication-set--node-name--topology

直接调用底层二进制也可以:

  • 发布二进制:/usr/local/dbbot/libexec/dbbotctl/exporterregistrar
  • 源码目录:/usr/local/dbbot/mysql_ansible/exporterregistrar

5. 验证

Router 节点本机可先检查:

curl -k -u "${router_rest_api_file_user}:${router_rest_api_file_password}" https://127.0.0.1:8443/api/20190715/swagger.json
curl http://127.0.0.1:9165/metrics

Prometheus 侧重点检查:

  • Status -> Targets 中能看到 mysqlrouter_exporter
  • mysqlrouter_up 指标正常返回
  • Router 仪表盘能看到 route、metadata refresh、listener 状态