戴志强1
Published on 2025-11-10 / 35 Visits
0
0

Redis监控部署文档

Redis监控部署文档

文档概述

本文档详细说明如何在 Kubernetes 环境中部署 Redis 监控系统,监控多个环境的Redis 实例(dev、uat 等)。

架构组件

  • Prometheus Operator: 管理 Prometheus 实例
  • redis_exporter: Redis 指标导出器
  • Grafana: 数据可视化
  • Kubernetes: 容器编排平台

前置条件

  • Kubernetes 集群(已安装 KubeSphere)
  • kubectl 命令行工具
  • 访问 Redis 实例的权限

第一部分:Redis 服务器配置

1.1 查看redis master的连接配置(其中haproxy永远指向redis哨兵集群的master)

image-wBjV.png

1.2 安装和配置 redis_exporter

创建 redis exporter 服务, 设置环境变量 REDIS_ADDR, REDIS_PASSWORD

kind: Deployment
apiVersion: apps/v1
metadata:
  name: redis-exporter
  namespace: common
  labels:
    app: redis-exporter
  annotations:
    deployment.kubernetes.io/revision: '2'
    kubesphere.io/creator: daizhiqiang
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis-exporter
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: redis-exporter
      annotations:
        kubesphere.io/creator: daizhiqiang
    spec:
      containers:
        - name: redis-exporter
          image: >-
            swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/oliver006/redis_exporter:v1.77.0
          ports:
            - containerPort: 9121
              protocol: TCP
          env:
            - name: REDIS_ADDR
              value: 'haproxy-svc.common:6379'
            - name: REDIS_PASSWORD
              value: Dme123456
          resources: {}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      securityContext: {}
      schedulerName: default-scheduler
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
  revisionHistoryLimit: 10
  progressDeadlineSeconds: 600

---
kind: Service
apiVersion: v1
metadata:
  name: redis-exporter
  namespace: common
  labels:
    app: redis-exporter
  annotations:
    kubesphere.io/creator: daizhiqiang
spec:
  ports:
    - protocol: TCP
      port: 9121
      targetPort: 9121
  selector:
    app: redis-exporter
  clusterIP: 10.233.62.240
  clusterIPs:
    - 10.233.62.240
  type: ClusterIP
  sessionAffinity: None
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  internalTrafficPolicy: Cluster




第二部分:Kubernetes 配置

编辑配置 additional-scrape-configs Secret, 在 mysql-scrape.yaml 配置中加入 redis-dev 的job。

image-rOEJ.png

- job_name: 'mysql-dev'
  static_configs:
    - targets: ['192.168.181.153:9104']
      labels:
        instance: 'mysql-dev'
        environment: 'dev'
  scrape_interval: 15s
  scrape_timeout: 10s

- job_name: 'mysql-uat'
  static_configs:
    - targets: ['192.168.181.121:9104']
      labels:
        instance: 'mysql-uat'
        environment: 'uat'
  scrape_interval: 15s
  scrape_timeout: 10s

- job_name: 'redis-dev'
  static_configs:
    - targets: ['redis-exporter.common:9121']
      labels:
        instance: 'redis-dev'
        environment: 'prod'
  scrape_interval: 15s
  scrape_timeout: 10s


验证配置生效


kubectl  get svc -A | grep prometheus-k8s
kubesphere-monitoring-system   prometheus-k8s                                 NodePort    10.233.13.146   <none>        9090:31379/TCP,8080:32511/TCP
# 查看 redis-dev job 是否已发布。
curl -s http://192.168.168.207:31379/api/v1/targets | grep redis-dev

第三部分:Grafana 配置

3.1 创建仪表盘

image-KFup.png

在官网上 https://grafana.com/grafana/dashboards/ 找到合适redis仪表盘,datasource 选择 Prometheus, 并记录仪表盘的ID.

image-LYzm.png

image-rpaG.png

记录仪表盘的ID:

image-BHFF.png

填入在线仪表盘的ID:

image-wWyC.png

instance 选择 redis-dev, datasource 选择 Prometheus

image-Cedp.png

至此,一个完整的redis仪表盘已出来:

image-HmGy.png


Comment