更新时间:2024-05-27 GMT+08:00

MySQL Exporter接入

操作场景

MySQL Exporter专门为采集MySQL数据库监控指标而设计开发,通过Exporter上报核心的数据库指标,用于异常报警和监控大盘展示。目前,Exporter支持5.6版本或以上版本的MySQL。在MySQL低于5.6版本时,部分监控指标可能无法被采集。

为了方便安装管理Exporter,推荐使用CCE进行统一管理。

前提条件

数据库授权

  1. 登录集群执行以下命令:

    kubectl exec -it ${mysql_podname} bash
    mysql -u root -p
    图1 执行命令

  2. 登录数据库,执行以下命令:

    CREATE USER 'exporter'@'x.x.x.x(hostip)' IDENTIFIED BY 'xxxx(password)' WITH MAX_USER_CONNECTIONS 3;
    GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'x.x.x.x(hostip)';

  3. 验证授权是否成功。

    输入以下命令查询sql,查看是否有exporter的数据,host为mysql所在节点的IP。

    select user,host from mysql.user;
    图2 查询sql

MySQL Exporter部署

  1. 登录CCE控制台。
  2. 单击已接入的集群名称,进入该集群的管理页面。
  3. 执行以下操作完成Exporter部署。

    1. 使用Secret管理MySQL连接串:

      在左侧导航栏中选择“配置与密钥”,在右上角单击“YAML创建”,输入以下yml文件,密码是按照Opaque加密过的。

      apiVersion: v1
      kind: Secret
      metadata:
          name: mysql-secret
          namespace: default
      type: Opaque
      stringData:
          datasource: "user:password@tcp(ip:port)/"  #对应 MySQL 连接串信息,需要加密

      配置密钥的详细操作参见创建密钥

    2. 部署MySQL Exporter。

      在左侧导航栏中选择“工作负载”,在右上角单击“创建负载”,选择“负载类型”为无状态工作负载Deployment,选择需要的命名空间部署MySQL Exporter。如果以YAML的方式部署Exporter,YAML配置示例如下:

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        labels:
          k8s-app: mysql-exporter # 根据业务需要调整成对应的名称,建议加上MySQL实例的信息, 如 ckafka-2vrgx9fd-mysql-exporter
        name: mysql-exporter # 根据业务需要调整成对应的名称,建议加上MySQL实例的信息, 如 ckafka-2vrgx9fd-mysql-exporter
        namespace: default #需要和CCE集群中安装的MySQL命名空间一致
      spec:
        replicas: 1
        selector:
          matchLabels:
            k8s-app: mysql-exporter # 根据业务需要调整成对应的名称,建议加上MySQL实例的信息, 如 ckafka-2vrgx9fd-mysql-exporter
        template:
          metadata:
            labels:
              k8s-app: mysql-exporter # 根据业务需要调整成对应的名称,建议加上MySQL实例的信息, 如 ckafka-2vrgx9fd-mysql-exporter
          spec:
            containers:
            - env:
              - name: DATA_SOURCE_NAME
                valueFrom:
                  secretKeyRef:
                    name: mysql-secret
                    key: datasource	
              image: swr.cn-north-4.myhuaweicloud.com/aom-exporter/mysqld-exporter:v0.12.1
              imagePullPolicy: IfNotPresent
              name: mysql-exporter
              ports:
              - containerPort: 9104
                name: metric-port 
              terminationMessagePath: /dev/termination-log
              terminationMessagePolicy: File
          dnsPolicy: ClusterFirst
          imagePullSecrets:
          - name: default-secret
          restartPolicy: Always
          schedulerName: default-scheduler
          securityContext: {}
          terminationGracePeriodSeconds: 30
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: mysql-exporter
      spec:
        type: NodePort
        selector:
          k8s-app: mysql-exporter
        ports:
          - protocol: TCP
            nodePort: 30337
            port: 9104
            targetPort: 9104

      更多Exporter详细参数介绍请参见mysql-exporter

    3. 验证MySQL Exporter是否部署成功。
      1. 在工作负载列表中“无状态负载”页签下,单击3.b创建的无状态工作负载的名称,在实例列表中单击操作列下的“更多 > 日志”,可以查看到Exporter成功启动并暴露对应的访问地址。
        图3 查看日志
      1. 验证。有以下三种方法进行验证:
        • 登录集群节点执行如下任意一种命令:
          curl http://{集群IP}:9104/metrics
          curl http://{集群任意节点私有IP}:30337/metrics 
        • 在实例列表中单击操作列下的“更多 > 远程登录”,执行如下命令:
          curl http://localhost:9104/metric
        • 访问:http://{集群任意节点的公网IP}:30337/metrics。
          图4 访问地址

采集CCE集群的业务数据

通过新增PodMonitor方式为应用配置可观测监控Prometheus版的采集规则,监控部署在CCE集群内的应用的业务数据。

配置信息如下:
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
  name: mysql-exporter
  namespace: default
spec:
  namespaceSelector:
    matchNames:
      - default # exporter 所在的命名空间
  podMetricsEndpoints:
  - interval: 30s
    path: /metrics
    port: metric-port
  selector:
    matchLabels:
      k8s-app: mysql-exporter

指标采集的周期是30秒,所以等待大概30秒后才能在AOM的界面上查看到上报的指标。

验证指标上报到AOM

  1. 登录AOM 2.0控制台。
  2. 在左侧菜单栏中选择“Prometheus监控 > 实例列表”。
  3. 单击接入了该CCE集群的“prometheus for CCE”实例名称,进入实例详情页面。
  4. 在“服务发现”页面的“指标”页签下,选择对应集群。
  5. 选择Job:{namespace}/mysql-exporter,可以查询到mysql开头的自定义指标。

在AOM上配置仪表盘和告警

通过仪表盘功能可视化监控CCE集群数据,通过告警规则功能,在集群发生故障时能够及时发现并预警。

  • 配置仪表盘图表
    1. 登录AOM 2.0控制台。
    2. 在左侧菜单栏中选择“仪表盘”,单击“创建仪表盘”新建一个仪表盘,详情可参见创建仪表盘
    3. 在仪表盘页面选择实例类型为“Prometheus for CCE”的实例并单击“添加图表”,详情请参见添加图表至仪表盘
  • 配置告警
    1. 登录AOM 2.0控制台。
    2. 在左侧菜单栏中选择“告警管理 > 告警规则”。
    3. 单击“创建告警规则”配置告警,详情请参见创建指标告警规则