使用 Redis 生态工具监控 Engula

概览

Engula 与 Redis/Valkey 7.2 协议完全兼容,因此可以直接复用成熟的 Redis 监控体系。本文以 Redis Exporter + Prometheus + Grafana 为例,说明如何快速搭建 Engula 监控,并复用社区中广泛使用的 Redis Dashboard 模板。

关键优势:无需定制

由于 Engula 实现了 Redis 协议,现有监控工具通常 无需修改 即可使用,包括:

  • 经过大量生产验证的监控方案与告警经验
  • 丰富的 Grafana Dashboard 模板与指标覆盖
  • 成熟的 Prometheus 采集与查询体系

架构

┌─────────────┐ ┌────────────────┐ ┌─────────────┐ ┌─────────────┐ │ Engula │───▶│ Redis Exporter │───▶│ Prometheus │───▶│ Grafana │ │ Server(s) │ │ (oliver006) │ │ Server │ │ Dashboard │ └─────────────┘ └────────────────┘ └─────────────┘ └─────────────┘ 6379 9121 9090 3000

快速开始(Docker Compose)

以下为快速部署示例(请将 engula-server:6379 替换为实际地址):

1# docker-compose.yml
2version: '3.8'
3
4services:
5  redis-exporter:
6    image: oliver006/redis_exporter:latest
7    container_name: engula-redis-exporter
8    restart: unless-stopped
9    ports:
10      - "9121:9121"
11    environment:
12      - REDIS_ADDR=redis://engula-server:6379
13    command:
14      - '-redis.addr=redis://engula-server:6379'
15    networks:
16      - monitoring
17
18  prometheus:
19    image: prom/prometheus:latest
20    container_name: engula-prometheus
21    restart: unless-stopped
22    ports:
23      - "9090:9090"
24    volumes:
25      - ./prometheus.yml:/etc/prometheus/prometheus.yml
26      - prometheus_data:/prometheus
27    command:
28      - '--config.file=/etc/prometheus/prometheus.yml'
29      - '--storage.tsdb.path=/prometheus'
30      - '--storage.tsdb.retention.time=200h'
31      - '--web.enable-lifecycle'
32    networks:
33      - monitoring
34
35  grafana:
36    image: grafana/grafana:latest
37    container_name: engula-grafana
38    restart: unless-stopped
39    ports:
40      - "3000:3000"
41    environment:
42      - GF_SECURITY_ADMIN_USER=admin
43      - GF_SECURITY_ADMIN_PASSWORD=admin123
44    volumes:
45      - grafana_data:/var/lib/grafana
46    networks:
47      - monitoring
48
49volumes:
50  prometheus_data:
51  grafana_data:
52
53networks:
54  monitoring:
55    driver: bridge

启动:

1docker-compose up -d

组件配置

1)Redis Exporter

Redis Exporter 通过 Redis 协议连接 Engula,并以 Prometheus 格式暴露指标。

1# 单实例
2docker run -d \
3  --name engula-redis-exporter \
4  -p 9121:9121 \
5  oliver006/redis_exporter:latest \
6  -redis.addr=redis://localhost:6379
7
8# 多实例
9docker run -d \
10  --name multi-redis-exporter \
11  -p 9121:9121 \
12  oliver006/redis_exporter:latest \
13  -redis.addr=redis://engula-1:6379,redis://engula-2:6379,redis://engula-3:6379
14
15# 带认证
16docker run -d \
17  --name secure-redis-exporter \
18  -p 9121:9121 \
19  oliver006/redis_exporter:latest \
20  -redis.addr=redis://engula-secure:6379 \
21  -redis.password=your-password

常用参数:

参数 说明 示例
-redis.addr Engula 地址 redis://localhost:6379
-redis.password 认证密码 -redis.password=mypass123
-namespace 指标命名空间 -namespace=engula
-web.listen-address Exporter 监听端口 -web.listen-address=:9121

验证 Exporter:

1curl http://localhost:9121/metrics

2)Prometheus

创建 prometheus.yml,从 Redis Exporter 采集指标:

1global:
2  scrape_interval: 15s
3  evaluation_interval: 15s
4
5scrape_configs:
6  - job_name: 'engula'
7    static_configs:
8      - targets: ['redis-exporter:9121']
9    scrape_interval: 15s
10    metrics_path: /metrics

验证 targets:

1curl http://localhost:9090/targets

3)Grafana

访问 http://localhost:3000(默认 admin/admin123),添加 Prometheus 数据源:

  • Name:Engula-Prometheus
  • URL:http://prometheus:9090(本地也可用 http://localhost:9090

推荐 Dashboard 模板

社区中最常用的 Redis Dashboard 模板之一:

  • Dashboard ID: 763
  • 作者: oliver006

导入路径:Grafana → Import → 输入 763 → 选择数据源 Engula-Prometheus

常用指标示例(PromQL)

1# 每秒命令数(QPS)
2rate(redis_commands_processed_total[5m])
3
4# 连接数
5redis_connected_clients
6
7# 内存使用
8redis_memory_used_bytes
9redis_memory_max_bytes
10
11# 命中率
12(redis_keyspace_hits_total / (redis_keyspace_hits_total + redis_keyspace_misses_total)) * 100

最佳实践

  • 采集间隔:大多数场景 15–30s 足够;高频场景按需缩短
  • 存储保留:生产环境通常 15–30 天
  • 安全性:生产环境建议启用认证、网络隔离,并为外部访问配置 TLS

资源