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)

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。

- 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 创建仪表盘

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


记录仪表盘的ID:

填入在线仪表盘的ID:

instance 选择 redis-dev, datasource 选择 Prometheus

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