Redis Exporter接入
操作场景
使用数据库Redis过程中需要对Redis运行状态进行监控,以便了解Redis服务是否运行正常,及时排查Redis故障等。Prometheus监控服务提供了CCE容器场景下基于Exporter的方式来监控Redis运行状态。本文为您介绍如何使用Prometheus监控Redis。
为了方便安装管理Exporter,推荐使用云容器引擎CCE进行统一管理。
前提条件
- CCE服务已拥有CCE集群,已安装Redis。
- 服务已接入可观测Prometheus监控并接入CCE集群,具体请参见Prometheus实例 for CCE。
- 已将redis_exporter镜像上传到SWR,具体操作请参见使用容器引擎客户端上传镜像。
Redis Exporter 部署
- 登录CCE控制台。
- 单击已接入的CCE集群名称,进入该集群的管理页面。
- 执行以下步骤完成Exporter部署。
- 在左侧导航栏中选择“配置与密钥”,选择“密钥”页签,单击页面右上角“YAML创建”,YAML配置示例如下:
apiVersion: v1 kind: Secret metadata: name: redis-secret-test namespace: default # 与Exporter部署的namespace相同 type: Opaque stringData: password: redis123 #对应 Redis 密码
- 密码已按照Opaque加密。
- 配置密钥的详细操作参见创建密钥。
- 部署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。
- 验证Redis Exporter是否部署成功。
- 在工作负载列表中“无状态负载”页签下,单击3.b创建的无状态工作负载的名称,在实例列表中单击操作列下的“更多 > 日志”,可以查看到Exporter成功启动并暴露访问地址。
图1 查看日志
- 验证。有以下三种方法进行验证:
- 登录集群节点执行如下任意一种命令:
curl http://{集群IP}:9121/metrics
curl http://{集群任意节点私有IP}:30378/metrics
- 访问地址:http://{集群任意节点的公网IP}:30378/metrics
- 在实例列表中单击操作列下的“更多 > 远程登录”,在弹出的控制台中执行如下命令。
curl http://localhost:9121/metrics
图3 执行命令
- 登录集群节点执行如下任意一种命令:
- 在工作负载列表中“无状态负载”页签下,单击3.b创建的无状态工作负载的名称,在实例列表中单击操作列下的“更多 > 日志”,可以查看到Exporter成功启动并暴露访问地址。
- 在左侧导航栏中选择“配置与密钥”,选择“密钥”页签,单击页面右上角“YAML创建”,YAML配置示例如下:
添加采集任务
如下指标采集的周期是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
- 登录AOM 2.0控制台。
- 在左侧菜单栏中选择“Prometheus监控 > 实例列表”。
- 单击接入了该CCE集群的“prometheus for CCE”实例名称,进入实例详情页面。
- 在“指标管理”页面的“指标”页签下,选择集群。
- 在搜索框输入redis,能够搜索出redis开头的指标,即可证明指标成功接入AOM。