{
  "id": "get-started",
  "title": "Get started with monitoring Redis Software",
  "url": "https://redis.io/docs/latest/operate/rs/8.0/monitoring/get-started/",
  "summary": "Collect and visualize Redis Software metrics.",
  "content": "\nYou can use Prometheus and compatible integrations to collect and visualize your Redis Software metrics.\n\nMetrics are exposed at the cluster, node, database, shard, and proxy levels.\n\n- [Prometheus](https://prometheus.io/) is an open source systems monitoring and alerting toolkit that aggregates metrics from different sources.\n\nYou can use Prometheus integrations to:\n- Collect and display metrics not available in the Cluster Manager UI\n\n- Set up automatic alerts for all resources\n\n- Display Redis Software metrics alongside data from other systems\n\n## Prometheus integrations\n\nYou can integrate Redis Software with Prometheus and one of the following tools to collect and visualize your deployment's metrics:\n\n- [Grafana](https://redis.io/docs/latest/integrate/prometheus-with-redis-enterprise)\n\n- [Datadog](https://redis.io/docs/latest/integrate/datadog-with-redis-enterprise)\n\n- [Dynatrace](https://redis.io/docs/latest/integrate/dynatrace-with-redis-enterprise)\n\n- [New Relic](https://redis.io/docs/latest/integrate/new-relic-with-redis-enterprise)\n\n## Best practices for monitoring\n\nFollow these best practices when monitoring your Redis Software cluster using the metrics stream engine.\n\n### Monitor host-level metrics\n\nFor cluster health, resources, and node stability, monitor these metrics:\n\n| Group | Metric | Why monitor | Unit |\n|-------|--------|-------------|------|\n| CPU utilization | `node_cpu_user`,\u003cbr /\u003e`node_cpu_system` | Detect CPU saturation from Redis or the OS that results in higher latency and queueing. | Seconds (counter) |\n| Memory (freeable) | \u003cspan class=\"break-all\"\u003e`node_memory_MemTotal_bytes`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`node_memory_MemFree_bytes`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`node_memory_Buffers_bytes`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`node_memory_Cached_bytes`\u003c/span\u003e | Detect memory pressure early. Low free memory or cache can precede swapping or out-of-memory errors. | Bytes (gauge) |\n| Swap usage | \u003cspan class=\"break-all\"\u003e`node_ephemeral_storage_free`\u003c/span\u003e | Monitor memory and disk pressure in your setup. Sustained pressure leads to latency spikes. | Bytes (gauge) |\n| Network traffic | \u003cspan class=\"break-all\"\u003e`node_ingress_bytes`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`node_egress_bytes`\u003c/span\u003e | Ensure the network interface is not saturated. Protects replication and client responsiveness. | Bytes (counter) |\n| Disk space | \u003cspan class=\"break-all\"\u003e`node_filesystem_avail_bytes`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`node_filesystem_size_bytes`\u003c/span\u003e | Prevent persistence and logging outages from low disk space. | Bytes (gauge) |\n| Cluster state | `has_quorum{…}` | Monitor whether quorum is maintained (1) or lost (0). | Boolean |\n| | `node_metrics_up` | Monitor whether the node is connected and reporting to the cluster. | Gauge |\n| Licensing | `license_shards_limit` | Track shard capacity limits by type (RAM or flash). | Count |\n| Certificates | \u003cspan class=\"break-all\"\u003e`node_cert_expires_in_seconds`\u003c/span\u003e | Avoid downtime from expired node certificates. | Seconds (gauge) |\n| Services – CPU | \u003cspan class=\"break-all\"\u003e`namedprocess_namegroup_cpu_seconds_total`\u003c/span\u003e | Identify abnormal CPU usage by platform services that can starve Redis, such as `alert_mgr`, `redis_mgr`, `dmc_proxy`. | Seconds (counter) |\n| Services – memory | \u003cspan class=\"break-all\"\u003e`namedprocess_namegroup_memory_bytes`\u003c/span\u003e | Detect memory leaks or outliers in platform services, such as `alert_mgr`, `redis_mgr`, `dmc_proxy`. | Bytes (gauge) |\n\n### Monitor database-level metrics\n\nFor database performance, availability, and efficiency, monitor the following metrics:\n\n| Group | Metric | Why monitor | Unit |\n|-------|--------|-------------|------|\n| Memory | \u003cspan class=\"break-all\"\u003e`redis_server_used_memory`\u003c/span\u003e | Track actual data memory to prevent out-of-memory errors and evictions. | Bytes |\n| Memory | \u003cspan class=\"break-all\"\u003e`redis_server_allocator_allocated`\u003c/span\u003e | Monitor bytes allocated by allocator (includes internal fragmentation). | Bytes |\n| Memory | \u003cspan class=\"break-all\"\u003e`redis_server_allocator_active`\u003c/span\u003e | Monitor bytes in active pages (includes external fragmentation). Use delta/ratio versus allocated to infer defraggable memory. | Bytes |\n| Memory | \u003cspan class=\"break-all\"\u003e`redis_server_active_defrag_running`\u003c/span\u003e | Monitor if defragmentation is active and the intended CPU %. High values can affect performance. | % (gauge) |\n| Latency | \u003cspan class=\"break-all\"\u003e`endpoint_read_requests_latency_histogram`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`endpoint_write_requests_latency_histogram`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`endpoint_other_requests_latency_histogram`\u003c/span\u003e | Monitor server-side command latency. | Microseconds |\n| High availability | \u003cspan class=\"break-all\"\u003e`redis_server_master_repl_offset`\u003c/span\u003e | Compute replica throughput and lag using deltas over time. | Bytes (counter) |\n| High availability | \u003cspan class=\"break-all\"\u003e`redis_server_master_link_status`\u003c/span\u003e | Monitor replica link status (up or down) for early warning of high availability risk. | Status |\n| Active-Active | \u003cspan class=\"break-all\"\u003e`database_syncer_dst_lag`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`database_syncer_lag_ms`\u003c/span\u003e | Detect cross-region synchronization delays that impact consistency and SLAs. | Milliseconds (gauge) |\n| Active-Active | \u003cspan class=\"break-all\"\u003e`database_syncer_state`\u003c/span\u003e | Monitor operational state for troubleshooting synchronization issues. | Gauge |\n| Traffic – requests | \u003cspan class=\"break-all\"\u003e`endpoint_read_requests`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`endpoint_write_requests`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`endpoint_other_requests`\u003c/span\u003e | Monitor workload mix and spikes that drive capacity and latency. Total equals the sum of all three. | Counter |\n| Traffic – responses | \u003cspan class=\"break-all\"\u003e`endpoint_read_responses`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`endpoint_write_responses`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`endpoint_other_responses`\u003c/span\u003e | Validate service responsiveness and symmetry with requests. | Counter |\n| Traffic – bytes | \u003cspan class=\"break-all\"\u003e`endpoint_ingress`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`endpoint_egress`\u003c/span\u003e | Monitor size trends and watch for sudden growth that impacts egress costs or bandwidth. | Bytes (counter) |\n| Egress queue | \u003cspan class=\"break-all\"\u003e`endpoint_egress_pending`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`endpoint_egress_pending_discarded`\u003c/span\u003e | Monitor back-pressure and drops that indicate network or client issues. | Bytes (counter) |\n| Connections | \u003cspan class=\"break-all\"\u003e`endpoint_client_connection`\u003c/span\u003e | Monitor accepted connections over time and match against client rollouts or spikes. | Counter |\n| Connections | \u003cspan class=\"break-all\"\u003e`endpoint_client_connection_expired`\u003c/span\u003e | Monitor connections closed due to TTL expiry, which can indicate idle policy or client issues. | Counter |\n| Connections | \u003cspan class=\"break-all\"\u003e`endpoint_longest_pipeline_histogram`\u003c/span\u003e | Monitor long pipelines that can amplify latency bursts and detect misbehaving clients. | Histogram (count) |\n| Connections | \u003cspan class=\"break-all\"\u003e`endpoint_client_connections`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`endpoint_client_disconnections`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`endpoint_proxy_disconnections`\u003c/span\u003e | Monitor connection churn and identify who closed the socket (client versus proxy). Current connections ≈ connections − disconnections. | Counter |\n| Cache efficiency | \u003cspan class=\"break-all\"\u003e`redis_server_db_keys`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`redis_server_db_avg_ttl`\u003c/span\u003e | Monitor key inventory and TTL coverage to inform eviction strategy. | Counter |\n| Cache efficiency | \u003cspan class=\"break-all\"\u003e`redis_server_evicted_keys\t`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`redis_server_expired_keys`\u003c/span\u003e | Monitor eviction and expiry rates. Frequent evictions indicate memory pressure or poor sizing. | Counter |\n| Cache efficiency | `cache_hits`,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`cache_hit_rate`\u003c/span\u003e | Monitor hit rate, which drives read latency and cost. Cache hit rate equals \u003cspan class=\"break-all\"\u003ecache_hits/(cache_hits+cache_misses)\u003c/span\u003e. | Count / Ratio (%) |\n| Cache efficiency | \u003cspan class=\"break-all\"\u003e`endpoint_client_tracking_on_requests`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`endpoint_client_tracking_off_requests`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`endpoint_disposed_commands_after_client_caching`\u003c/span\u003e | Track client-side caching usage and misuse. | Counter |\n| Big / complex keys | \u003cspan class=\"break-all\"\u003e`redis_server_\u003cdata_type\u003e_\u003csize_or_items\u003e_\u003cbucket\u003e`\u003c/span\u003e | Monitor oversized keys and cardinality that cause fragmentation, slow replication, and CPU spikes. Track to prevent incidents. Examples:\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`strings_sizes_over_512M`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`zsets_items_over_8M`\u003c/span\u003e | Gauge |\n| Security – clients | \u003cspan class=\"break-all\"\u003e`endpoint_client_expiration_refresh`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`endpoint_client_establishment_failures`\u003c/span\u003e | Monitor unstable clients or problems with authentication or setup. | Counter |\n| Security – LDAP | \u003cspan class=\"break-all\"\u003e`endpoint_successful_ldap_authentication`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`endpoint_failed_ldap_authentication`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`endpoint_disconnected_ldap_client`\u003c/span\u003e | Monitor authentication health and detect brute-force attacks or misconfigurations. | Counter |\n| Security – cert-based | \u003cspan class=\"break-all\"\u003e`endpoint_successful_cba_authentication`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`endpoint_failed_cba_authentication`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`endpoint_disconnected_cba_client`\u003c/span\u003e | Monitor certificate authentication status and failures. | Counter |\n| Security – password | \u003cspan class=\"break-all\"\u003e`endpoint_disconnected_user_password_client`\u003c/span\u003e | Monitor password-authentication client disconnects and correlate with policy changes. | Counter |\n| Security – ACL | \u003cspan class=\"break-all\"\u003e`redis_server_acl_access_denied_auth`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`redis_server_acl_access_denied_cmd`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`redis_server_acl_access_denied_key`\u003c/span\u003e,\u003cbr /\u003e\u003cspan class=\"break-all\"\u003e`redis_server_acl_access_denied_channel`\u003c/span\u003e | Monitor unauthorized access attempts and incorrectly scoped ACLs. | Counter |\n| Configuration | \u003cspan class=\"break-all\"\u003e`db_config`\u003c/span\u003e| This is an information metric that holds database configuration within labels such as: db_name, db_version, db_port, tls_mode. | counter |\n\n\n## Prometheus quick start\n\nTo get started with Prometheus:\n\n1. Create a directory called `prometheus` on your local machine.\n\n1. Within that directory, create a configuration file called `prometheus.yml`.\n\n1. Add the following contents to the configuration file and replace `\u003ccluster_name\u003e` with your Redis Software cluster's FQDN:\n\n    **v2 (metrics stream engine):**\n\n```yml\nglobal:\n  scrape_interval: 15s\n  evaluation_interval: 15s\n\n# Attach these labels to any time series or alerts when communicating with\n# external systems (federation, remote storage, Alertmanager).\n  external_labels:\n    monitor: \"prometheus-stack-monitor\"\n\n# Load and evaluate rules in this file every 'evaluation_interval' seconds.\n#rule_files:\n# - \"first.rules\"\n# - \"second.rules\"\n\nscrape_configs:\n# scrape Prometheus itself\n  - job_name: prometheus\n    scrape_interval: 10s\n    scrape_timeout: 5s\n    static_configs:\n      - targets: [\"localhost:9090\"]\n\n# scrape Redis Software\n  - job_name: redis-enterprise\n    scrape_interval: 30s\n    scrape_timeout: 30s\n    metrics_path: /v2\n    scheme: https\n    tls_config:\n      insecure_skip_verify: true\n    static_configs:\n      - targets: [\"\u003ccluster_name\u003e:8070\"]\n```\n\n**v1:**\n\n```yml\nglobal:\n  scrape_interval: 15s\n  evaluation_interval: 15s\n\n# Attach these labels to any time series or alerts when communicating with\n# external systems (federation, remote storage, Alertmanager).\n  external_labels:\n    monitor: \"prometheus-stack-monitor\"\n\n# Load and evaluate rules in this file every 'evaluation_interval' seconds.\n#rule_files:\n# - \"first.rules\"\n# - \"second.rules\"\n\nscrape_configs:\n# scrape Prometheus itself\n  - job_name: prometheus\n    scrape_interval: 10s\n    scrape_timeout: 5s\n    static_configs:\n      - targets: [\"localhost:9090\"]\n\n# scrape Redis Software\n  - job_name: redis-enterprise\n    scrape_interval: 30s\n    scrape_timeout: 30s\n    metrics_path: /\n    scheme: https\n    tls_config:\n      insecure_skip_verify: true\n    static_configs:\n      - targets: [\"\u003ccluster_name\u003e:8070\"]\n```\n\n\n\n1. Set up your Prometheus server.\n\n    \nWe recommend running Prometheus in Docker only for development and testing.\n    \n\n    To set up Prometheus on Docker:\n\n    1. Create a _docker-compose.yml_ file:\n\n        ```yml\n        version: '3'\n        services:\n            prometheus-server:\n                image: prom/prometheus\n                ports:\n                    - 9090:9090\n                volumes:\n                    - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml\n        ```\n\n    1. To start the containers, run:\n\n        ```sh\n        $ docker compose up -d\n        ```\n\n    1. To check that all of the containers are up, run: \n    \n        ```sh\n        docker ps\n        ```\n\n    1. In your browser, sign in to Prometheus at `http://localhost:9090` to make sure the server is running.\n\n    1. Select **Status** and then **Targets** to check that Prometheus is collecting data from your Redis Software cluster.\n\n        ![images/rs/prometheus-target.png](https://redis.io/docs/latest/images/rs/prometheus-target.png)\n\n        If Prometheus is connected to the cluster, you can type **node_up** in the Expression field on the Prometheus home page to see the cluster metrics.\n\n1. Integrate Redis Software and your Prometheus server with one of the [compatible tools](#prometheus-integrations). For help, see the integration guide and official documentation for your chosen tool.\n\n1. Add dashboards for cluster, database, node, and shard metrics.\n",
  "tags": ["docs","integrate","rs"],
  "last_updated": "2026-07-23T12:00:25-05:00"
}
