{
  "schema_version": 2,
  "id": "integrate/uptrace-with-redis-enterprise",
  "title": "Uptrace with Redis Software",
  "url": "https://redis.io/docs/latest/integrate/uptrace-with-redis-enterprise/",
  "summary": "To collect, view, and monitor metrics data from your databases and other cluster components, you can connect Uptrace to your Redis Software cluster using OpenTelemetry Collector.",
  "tags": [
    "docs",
    "integrate",
    "rs"
  ],
  "last_updated": "2026-10-02T14:54:03+01:00",
  "children": [],
  "page_type": "content",
  "content_hash": "c51fe987147dc281b8d14480f7e092cda63be554674a2a392a2c886f674edb24",
  "sections": [
    {
      "id": "overview",
      "title": "Overview",
      "role": "overview",
      "text": "Uptrace is an [open source APM tool](https://uptrace.dev/get/open-source-apm.html) that supports distributed tracing, metrics, and logs. You can use it to monitor applications and set up automatic alerts to receive notifications.\n\nUptrace uses OpenTelemetry to collect and export telemetry data from software applications such as Redis. OpenTelemetry is an open source observability framework that aims to provide a single standard for all types of observability signals such as traces, metrics, and logs.\n\nWith OpenTelemetry Collector, you can receive, process, and export telemetry data to any [OpenTelemetry backend](https://uptrace.dev/blog/opentelemetry-backend.html). You can also use Collector to scrape Prometheus metrics provided by Redis and then export those metrics to Uptrace.\n\nYou can use Uptrace to:\n\n- Collect and display data metrics not available in the [admin console](https://redis.io/docs/latest/operate/rs/references/metrics).\n- Use prebuilt dashboard templates maintained by the Uptrace community.\n- Set up automatic alerts and receive notifications via email, Slack, Telegram, and others.\n- Monitor your app performance and logs using [OpenTelemetry tracing](https://uptrace.dev/opentelemetry/distributed-tracing.html).\n\n![](https://redis.io/docs/latest/images/rs/uptrace-redis-nodes.png)"
    },
    {
      "id": "install-collector-and-uptrace",
      "title": "Install Collector and Uptrace",
      "role": "setup",
      "text": "Because installing OpenTelemetry Collector and Uptrace can take some time, you can use the [docker-compose](https://github.com/uptrace/uptrace/tree/master/example/redis-enterprise) example that also comes with Redis Software cluster.\n\nAfter you download the Docker example, you can edit the following configuration files in the `uptrace/example/redis-enterprise` directory before you start the Docker containers:\n\n- `otel-collector.yaml` - Configures `/etc/otelcol-contrib/config.yaml` in the OpenTelemetry Collector container.\n- `uptrace.yml` - Configures`/etc/uptrace/uptrace.yml` in the Uptrace container.\n\nYou can also install OpenTelemetry and Uptrace from scratch using the following guides:\n\n- [Getting started with OpenTelemetry Collector](https://uptrace.dev/opentelemetry/collector.html)\n- [Getting started with Uptrace](https://uptrace.dev/get/get-started.html)\n\nAfter you install Uptrace, you can access the Uptrace UI at [http://localhost:14318/](http://localhost:14318/)."
    },
    {
      "id": "scrape-prometheus-metrics",
      "title": "Scrape Prometheus metrics",
      "role": "content",
      "text": "Redis Software cluster exposes a Prometheus scraping endpoint on `http://localhost:8070/`. You can scrape that endpoint by adding the following lines to the OpenTelemetry Collector config:\n\n[code example]\n\nNext, you can export the collected metrics to Uptrace using OpenTelemetry protocol (OTLP):\n\n[code example]\n\nDon't forget to restart the Collector and then check logs for any errors:\n\n[code example]\n\nYou can also check the full OpenTelemetry Collector config [here](https://github.com/uptrace/uptrace/blob/master/example/redis-enterprise/otel-collector.yaml)."
    },
    {
      "id": "view-metrics",
      "title": "View metrics",
      "role": "content",
      "text": "When metrics start arriving to Uptrace, you should see a couple of dashboards in the Metrics tab. In total, Uptrace should create 3 dashboards for Redis Software metrics:\n\n- \"Redis: Nodes\" dashboard displays a list of cluster nodes. You can select a node to view its metrics.\n\n- \"Redis: Databases\" displays a list of Redis databases in all cluster nodes. To find a specific database, you can use filters or sort the table by columns.\n\n- \"Redis: Shards\" contains a list of shards that you have in all cluster nodes. You can filter or sort shards and select a shard for more details."
    },
    {
      "id": "monitor-metrics",
      "title": "Monitor metrics",
      "role": "content",
      "text": "To start monitoring metrics, you need to create metrics monitors using Uptrace UI:\n\n- Open \"Alerts\" -> \"Monitors\".\n- Click \"Create monitor\" -> \"Create metrics monitor\".\n\nFor example, the following monitor uses the `group by node` expression to create an alert whenever an individual Redis shard is down:\n\n[code example]\n\nYou can also create queries with more complex expressions.\n\nFor example, the following monitors create an alert when the keyspace hit rate is lower than 75% or memory fragmentation is too high:\n\n[code example]\n\nYou can learn more about the query language [here](https://uptrace.dev/get/querying-metrics.html)."
    }
  ],
  "examples": [
    {
      "id": "scrape-prometheus-metrics-ex0",
      "language": "yaml",
      "code": "# /etc/otelcol-contrib/config.yaml\n\nprometheus_simple/cluster1:\n  collection_interval: 10s\n  endpoint: \"localhost:8070\" # Redis Cluster endpoint\n  metrics_path: \"/\"\n  tls:\n    insecure: false\n    insecure_skip_verify: true\n    min_version: \"1.0\"",
      "section_id": "scrape-prometheus-metrics"
    },
    {
      "id": "scrape-prometheus-metrics-ex1",
      "language": "yaml",
      "code": "# /etc/otelcol-contrib/config.yaml\n\nreceivers:\n  otlp:\n    protocols:\n      grpc:\n      http:\n\nexporters:\n  otlp/uptrace:\n    # Uptrace is accepting metrics on this port\n    endpoint: localhost:14317\n    headers: { \"uptrace-dsn\": \"http://project1_secret_token@localhost:14317/1\" }\n    tls: { insecure: true }\n\nservice:\n  pipelines:\n    traces:\n      receivers: [otlp]\n      processors: [batch]\n      exporters: [otlp/uptrace]\n    metrics:\n      receivers: [otlp, prometheus_simple/cluster1]\n      processors: [batch]\n      exporters: [otlp/uptrace]\n    logs:\n      receivers: [otlp]\n      processors: [batch]\n      exporters: [otlp/uptrace]",
      "section_id": "scrape-prometheus-metrics"
    },
    {
      "id": "scrape-prometheus-metrics-ex2",
      "language": "shell",
      "code": "docker-compose logs otel-collector\n\n# or\n\nsudo journalctl -u otelcol-contrib -f",
      "section_id": "scrape-prometheus-metrics"
    },
    {
      "id": "monitor-metrics-ex0",
      "language": "yaml",
      "code": "monitors:\n  - name: Redis shard is down\n    metrics:\n      - redis_up as $redis_up\n    query:\n      - group by cluster # monitor each cluster,\n      - group by bdb # each database,\n      - group by node # and each shard\n      - $redis_up\n    min_allowed_value: 1\n    # shard should be down for 5 minutes to trigger an alert\n    for_duration: 5m",
      "section_id": "monitor-metrics"
    },
    {
      "id": "monitor-metrics-ex1",
      "language": "yaml",
      "code": "monitors:\n  - name: Redis read hit rate < 75%\n    metrics:\n      - redis_keyspace_read_hits as $hits\n      - redis_keyspace_read_misses as $misses\n    query:\n      - group by cluster\n      - group by bdb\n      - group by node\n      - $hits / ($hits + $misses) as hit_rate\n    min_allowed_value: 0.75\n    for_duration: 5m\n\n  - name: Memory fragmentation is too high\n    metrics:\n      - redis_used_memory as $mem_used\n      - redis_mem_fragmentation_ratio as $fragmentation\n    query:\n      - group by cluster\n      - group by bdb\n      - group by node\n      - where $mem_used > 32mb\n      - $fragmentation\n    max_allowed_value: 3\n    for_duration: 5m",
      "section_id": "monitor-metrics"
    }
  ]
}
