使用 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
启动:
组件配置
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
资源