更新时间:2024-11-14 GMT+08:00

Redis Exporter接入

操作场景

使用数据库Redis过程中需要对Redis运行状态进行监控,以便了解Redis服务是否运行正常,及时排查Redis故障等。Prometheus监控服务提供了CCE容器场景下基于Exporter的方式来监控Redis运行状态。本文为您介绍如何使用Prometheus监控Redis。

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

前提条件

Redis Exporter 部署

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

    1. 在左侧导航栏中选择“配置与密钥”,选择“密钥”页签,单击页面右上角“YAML创建”,YAML配置示例如下:
      apiVersion: v1
      kind: Secret
      metadata:
          name: redis-secret-test
          namespace: default # 与Exporter部署的namespace相同
      type: Opaque
      stringData:
          password: redis123  #对应 Redis 密码
      • 密码已按照Opaque加密。
      • 配置密钥的详细操作参见创建密钥
    2. 部署Redis Exporter。

      在左侧菜单栏中选择“工作负载”,选择“无状态负载”页签,单击页面右上角“YAML创建”,选择命名空间来进行部署服务。可以通过控制台的方式创建,如果以YAML的方式部署Exporter,YAML配置示例如下:

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        labels:
          k8s-app: redis-exporter # 根据业务需要调整,建议加上 Redis 实例的信息,如crs-66e112fp-redis-exporter
        name: redis-exporter # 根据业务需要调整,建议加上 Redis 实例的信息,如crs-66e112fp-redis-exporter
        namespace: default # 选择一个适合的 namespace 来部署 Exporter,如果没有需要新建一个 namespace
      spec:
        replicas: 1
        selector:
          matchLabels:
            k8s-app: redis-exporter # 根据业务需要调整成对应的名称,建议加上 Redis 实例的信息,如crs-66e112fp-redis-exporter
        template:
          metadata:
            labels:
              k8s-app: redis-exporter # 根据业务需要调整成对应的名称,建议加上 Redis 实例的信息,如crs-66e112fp-redis-exporter
          spec:
            containers:
            - env:
              - name: REDIS_ADDR
                value: 120.46.215.4:30379 # 对应 Redis 的 ip:port
              - name: REDIS_PASSWORD
                valueFrom:
                  secretKeyRef:
                    name: redis-secret-test # 对应上一步的 Secret 的名称
                    key: password # 对应上一步中的 Secret Key
              image: swr.cn-north-4.myhuaweicloud.com/mall-swarm-demo/redis-exporter:v1.32.0  # 替换为您上传到 SWR 的镜像地址
              imagePullPolicy: IfNotPresent
              name: redis-exporter
              ports:
              - containerPort: 9121
                name: metric-port  # 这个名称在配置采集任务的时候需要
              securityContext:
                privileged: false
              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: redis-exporter
        name-space: default # 与Exporter部署的namespace相同
      spec:
        type: NodePort
        selector:
          k8s-app: redis-exporter
        ports:
          - protocol: TCP
            nodePort: 30378
            port: 9121
            targetPort: 9121

      更多Exporter详细参数介绍请参见 redis_exporter

    3. 验证Redis Exporter是否部署成功。
      1. 在工作负载列表中“无状态负载”页签下,单击3.b创建的无状态工作负载的名称,在实例列表中单击操作列下的“更多 > 日志”,可以查看到Exporter成功启动并暴露访问地址。
      2. 验证。有以下三种方法进行验证:
        • 登录集群节点执行如下任意一种命令:
          curl http://{集群IP}:9121/metrics
          curl http://{集群任意节点私有IP}:30378/metrics 
        • 访问地址:http://{集群任意节点的公网IP}:30378/metrics
          如发现未能得到数据,请检查一下部署Redis Exporter时YAML中的REDIS_ADDRREDIS_PASSWORD是否正确,示例如下:
          图1 访问地址
        • 在实例列表中单击操作列下的“更多 > 远程登录”,在弹出的控制台中执行如下命令。
          curl http://localhost:9121/metrics
          图2 执行命令

添加采集任务

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

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

apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
  name: redis-exporter
  namespace: default
spec:
  namespaceSelector: #选择要监控 Exporter Pod 所在的namespace
    matchNames:
      - default # exporter所在的命名空间
  podMetricsEndpoints:
  - interval: 30s # 设置指标采集周期
    path: /metrics # 填写 Prometheus Exporter 对应的 path 的值,默认/metrics
    port: metric-port# 填写 Prometheus Exporter 对应的 YAML 的 ports 的 name
  selector: # 填写要监控 Exporter Pod 的 Label 标签,以定位目标 Exporter 
    matchLabels:
      k8s-app: redis-exporter

验证指标上报到AOM

  1. 登录AOM 2.0控制台。
  2. 在左侧菜单栏中选择“Prometheus监控 > 实例列表”。
  3. 单击接入了该CCE集群的“prometheus for CCE”实例名称,进入实例详情页面。
  4. 在“指标管理”页面的“指标”页签下,选择集群。
  5. 在搜索框输入redis,能够搜索出redis开头的指标,即可证明指标成功接入AOM。

在AOM上配置仪表盘和告警

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

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