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:

1docker-compose up -d

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)

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