You need to enable JavaScript to run this app.
导航
MySQL Exporter 接入
最近更新时间:2024.03.01 11:23:08首次发布时间:2023.05.15 15:53:27

托管 Prometheus 服务提供基于 exporter 的方式来监控 MySQL 运行状态,本文为您介绍如何在集群中部署 mysqld-exporter,并实现对 MySQL 的监控。

前提条件

配置步骤

步骤一:数据库授权

mysqld-exporter 是通过查询数据库中状态数据来对其进行监控,所以需要为对应的数据库实例进行授权。您可以执行以下命令,为用户进行授权。

CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'XXXXXXXX' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';

说明

建议为该用户设置最大连接数限制,以避免因监控数据抓取对数据库带来影响。但并非所有版本的数据库中都可以生效,例如 MariaDB 10.1 版本不支持最大连接数设置。

步骤二:使用 Secret 配置 MySQL 连接串

  1. 登录 容器服务控制台
  2. 单击左侧导航栏中的 集群
  3. 在集群列表页面,单击需要配置的目标集群。
  4. 在集群管理页面的左侧导航栏中,选择 配置管理 > 保密字典,单击 使用 Yaml 创建,配置保密字典。
apiVersion: v1
kind: Secret
metadata:
  name: mysql-secret-demo # 配置保密字典的名称
  namespace: volcano-metrics # 配置保密字典的命名空间
type: Opaque
stringData:
  datasource: "user:password@tcp(ip:port)/" # 配置 MySQL 实例的连接串信息,包括用户名、密码、地址和端口号

步骤三:部署 mysql-exporter

  1. 在左侧菜单栏中选择 工作负载 > 无状态负载
  2. 单击 使用 Yaml 创建 ,部署 mysql-exporter。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-exporter # 配置 exporter 的名称
  namespace: volcano-metrics # 配置 exporter 的命名空间
  labels: 
    app-name: mysql-exporter # 配置 exporter 的标签
spec: 
  replicas: 1
  selector:
    matchLabels:
      app-name: mysql-exporter # 根据业务需要调整成对应的名称,可以使用 MySQL 的实例信息
  template:
    metadata:
      labels:
        app-name: mysql-exporter # 根据业务需要调整成对应的名称,可以使用 MySQL 的实例信息
    spec:
      containers:
      - env:
        - name: DATA_SOURCE_NAME
          valueForm: 
            secretKeyRef:
              name: mysql-secret-demo
              key: datasource
        image: prom/mysqld-exporter:latest # 拉取 Docker Hub 中的 exporter 镜像
        imagePullPolicy: IfNotPresent
        name: mysql-exporter # 配置容器名称
        ports:
        - containerPort: 9104 # 配置容器端口号
          name: metric-port # 配置容器端口名称
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      terminationGracePeriodSeconds: 30

步骤四:配置采集规则

  1. 在左侧菜单栏中选择 工作负载 > 对象浏览器
  2. 单击 使用 Yaml 创建 ,通过 PodMonitor 配置采集规则。
    • 类型 下拉菜单中选择 自定义
    • Yaml 配置框内输入 Yaml 配置。
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
  name: mysql-exporter # 配置 PodMonitor 的名称
  namespace: volcano-metrics # 配置 PodMonitor 的命名空间
  labels: 
    volcengine.vmp: "true" # 配置 PodMonitor 的标签,允许被 Prometheus-agent 发现
spec:
  podMetricsEndpoints:
  - interval: 30s
    port: metric-port # 填写 exporter 的容器端口名称
    path: /metrics # 填写指标暴露的 URI 路径,不填默认为 /metrics
    relabelings: # 配置指标的 relabel。如没有该需求,可省略。
    - action: replace
      sourceLabels:
      - instance
      regex: (.*)
      targetLabel: instance
      replacement: 'mysql-xxxxxx' # 配置为对应 mysql 实例的 ID 值
  namespaceSelector:
    matchNames: 
    - volcano-metrics # 配置为 exporter 所在的命名空间
  selector: 
    matchLabels:
      app-name: mysql-exporter # 配置 exporter 的 Label 值,以定位和选择目标 Pod

结果验证

  1. 执行以下命令,配置 Grafana 端口映射。
kubectl port-forward service/grafana 3000:3000 -n volcano-metrics
  1. 在本地环境(Linux/Mac)中打开浏览器,在地址栏中输入 localhost:3000,进入 Grafana 登录界面,使用默认用户名admin密码admin登录。
    alt
  2. 创建 MySQL 大盘,即可查看 MySQL 的监控指标。

说明

mysql-exporter 的详细参数,请参见 mysqld-exporter