Monitoring Engula
Overview
Engula maintains a high degree of consistency with Redis/Valkey 7.2 on the monitoring-related protocol surface, so you can reuse the mature Redis monitoring ecosystem. This article uses Redis Exporter + Prometheus + Grafana as an example to explain how to quickly set up Engula monitoring and reuse the widely adopted Redis Dashboard templates from the community.
Key Advantage: No Customization Required
Because Engula implements the Redis protocol, existing monitoring tools can typically be used without modification, including:
- Production-proven monitoring solutions and alerting experience
- A rich set of Grafana Dashboard templates and metric coverage
- A mature Prometheus collection and querying system
Architecture
┌─────────────┐ ┌────────────────┐ ┌─────────────┐ ┌─────────────┐
│ Engula │───▶│ Redis Exporter │───▶│ Prometheus │───▶│ Grafana │
│ Server(s) │ │ (oliver006) │ │ Server │ │ Dashboard │
└─────────────┘ └────────────────┘ └─────────────┘ └─────────────┘
6379 9121 9090 3000
Quick Start (Docker Compose)
The following is a quick deployment example (replace engula-server:6379 with your actual address):
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
Start:
Component Configuration
1) Redis Exporter
Redis Exporter connects to Engula via the Redis protocol and exposes metrics in Prometheus format.
1# Single instance
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# Multiple instances
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# With authentication
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
Common parameters:
| Parameter |
Description |
Example |
-redis.addr |
Engula address |
redis://localhost:6379 |
-redis.password |
Authentication password |
-redis.password=mypass123 |
-namespace |
Metric namespace |
-namespace=engula |
-web.listen-address |
Exporter listening port |
-web.listen-address=:9121 |
Verify the Exporter:
1curl http://localhost:9121/metrics
2) Prometheus
Create prometheus.yml to collect metrics from 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
Verify targets:
1curl http://localhost:9090/targets
3) Grafana
Visit http://localhost:3000 (default admin/admin123) and add a Prometheus data source:
- Name:
Engula-Prometheus
- URL:
http://prometheus:9090 (locally you can also use http://localhost:9090)
Recommended Dashboard Template
One of the most commonly used Redis Dashboard templates in the community:
- Dashboard ID: 763
- Author: oliver006
Import path: Grafana → Import → enter 763 → select data source Engula-Prometheus.
Common Metric Examples (PromQL)
1# Commands per second (QPS)
2rate(redis_commands_processed_total[5m])
3
4# Connection count
5redis_connected_clients
6
7# Memory usage
8redis_memory_used_bytes
9redis_memory_max_bytes
10
11# Hit rate
12(redis_keyspace_hits_total / (redis_keyspace_hits_total + redis_keyspace_misses_total)) * 100
Best Practices
- Scrape interval: 15–30s is sufficient for most scenarios; shorten as needed for high-frequency scenarios
- Storage retention: typically 15–30 days in production environments
- Security: in production, it is recommended to enable authentication, network isolation, and configure TLS for external access
Resources