{"id":29239,"date":"2025-06-03T19:42:10","date_gmt":"2025-06-03T14:12:10","guid":{"rendered":"https:\/\/opstree.com\/blog\/?p=29239"},"modified":"2025-06-04T09:08:52","modified_gmt":"2025-06-04T03:38:52","slug":"redis-observability-with-open-telemetry","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2025\/06\/03\/redis-observability-with-open-telemetry\/","title":{"rendered":"Redis Observability with Open Telemetry"},"content":{"rendered":"<p><span data-contrast=\"auto\">Redis is a cornerstone of many modern applications, valued for its high speed and flexibility. However, Redis systems are not \u201cset-and-forget.\u201d Maintaining operational excellence requires careful monitoring of critical metrics to detect early signs of performance degradation, resource exhaustion, or failures.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">In this blog, we learn how to monitor Redis directly using <\/span><b><span data-contrast=\"auto\">Open Telemetry Collector\u2019s Redis receiver<\/span><\/b><span data-contrast=\"auto\">, without relying on a separate Redis Exporter.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<p><!--more--><\/p>\n<h2 aria-level=\"2\"><b><span data-contrast=\"auto\">Why Monitor Redis?<\/span><\/b><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:299,&quot;335559739&quot;:299}\">\u00a0<\/span><\/h2>\n<p><span data-contrast=\"auto\"><a href=\"https:\/\/opstree.com\/blog\/2025\/05\/20\/the-art-of-redis-observability-from-metric-overload-to-actionable-insights\/\"><strong>Redis<\/strong><\/a> can face issues like:<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<ul>\n<li><span data-contrast=\"auto\">High memory usage<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Slow client responses<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Key evictions due to memory limits<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">High CPU load<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Replication lag<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<\/ul>\n<h2><span class=\"TextRun SCXW249101364 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW249101364 BCX0\" data-ccp-parastyle=\"heading 2\">Why Not Redis Exporter? (The Bottleneck)<\/span><\/span><span class=\"EOP SCXW249101364 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:299,&quot;335559739&quot;:299}\">\u00a0<\/span><\/h2>\n<table>\n<tbody>\n<tr>\n<td><b>Issue with Redis Exporter<\/b><span style=\"font-weight: 400;\">\u00a0<\/span><\/td>\n<td><b>Explanation<\/b><span style=\"font-weight: 400;\">\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>Extra Container Dependency<\/b><span style=\"font-weight: 400;\">\u00a0<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Required a separate exporter container or sidecar to run alongside Redis\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>Overhead<\/b><span style=\"font-weight: 400;\">\u00a0<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Added operational and resource overhead in managing the exporter\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>Format Translation<\/b><span style=\"font-weight: 400;\">\u00a0<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Redis Exporter exposed metrics in Prometheus format, needing separate handling\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>Limited Integration<\/b><span style=\"font-weight: 400;\">\u00a0<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Could not directly benefit from OpenTelemetry&#8217;s native features\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>No Unified Pipeline<\/b><span style=\"font-weight: 400;\">\u00a0<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Logs, metrics, and traces had to be handled in different ways\u00a0<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><span class=\"TextRun SCXW85777117 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW85777117 BCX0\" data-ccp-parastyle=\"heading 3\">Why Switch to <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW85777117 BCX0\" data-ccp-parastyle=\"heading 3\">OpenTelemetry<\/span><span class=\"NormalTextRun SCXW85777117 BCX0\" data-ccp-parastyle=\"heading 3\">?<\/span><\/span><span class=\"EOP SCXW85777117 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:281,&quot;335559739&quot;:281}\">\u00a0<\/span><\/h2>\n<ul>\n<li><b><span data-contrast=\"auto\">Simplifies architecture<\/span><\/b><span data-contrast=\"auto\"> by removing the need for Redis Exporter<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<li><b><span data-contrast=\"auto\">Native metrics collection<\/span><\/b><span data-contrast=\"auto\"> from Redis using the Redis protocol<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<li><b><span data-contrast=\"auto\">Unified telemetry pipeline<\/span><\/b><span data-contrast=\"auto\"> for metrics, logs, and traces<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<li><b><span data-contrast=\"auto\">Better integration<\/span><\/b><span data-contrast=\"auto\"> with tools like VictoriaMetrics and Grafana<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<\/ul>\n<h2><span class=\"TextRun SCXW134469005 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW134469005 BCX0\" data-ccp-parastyle=\"heading 2\">What is <\/span><span class=\"NormalTextRun SCXW134469005 BCX0\" data-ccp-parastyle=\"heading 2\">Open<\/span> <span class=\"NormalTextRun SCXW134469005 BCX0\" data-ccp-parastyle=\"heading 2\">Telemetry<\/span><span class=\"NormalTextRun SCXW134469005 BCX0\" data-ccp-parastyle=\"heading 2\">?<\/span><\/span><span class=\"EOP SCXW134469005 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:299,&quot;335559739&quot;:299}\">\u00a0<\/span><\/h2>\n<p><span class=\"TextRun SCXW156332871 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW156332871 BCX0\">Open<\/span> <span class=\"NormalTextRun SCXW156332871 BCX0\">T<\/span><span class=\"NormalTextRun SCXW156332871 BCX0\">elemetry is an open-source framework that collects telemetry data \u2014 <\/span><\/span><span class=\"TextRun SCXW156332871 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW156332871 BCX0\">metrics, logs, and traces<\/span><\/span><span class=\"TextRun SCXW156332871 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW156332871 BCX0\"> \u2014 in a standard format. It helps you <\/span><span class=\"NormalTextRun SCXW156332871 BCX0\">monitor<\/span><span class=\"NormalTextRun SCXW156332871 BCX0\"> services like Redis in a consistent and scalable way.<\/span><\/span><span class=\"EOP SCXW156332871 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<h2><span class=\"TextRun SCXW71699383 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW71699383 BCX0\" data-ccp-parastyle=\"heading 2\">Setup Overview (Without Redis Exporter)<\/span><\/span><span class=\"EOP SCXW71699383 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:299,&quot;335559739&quot;:299}\">\u00a0<\/span><\/h2>\n<p aria-level=\"2\"><span data-contrast=\"auto\">We will use:<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:299,&quot;335559739&quot;:299}\">\u00a0<\/span><\/p>\n<ul>\n<li><b><span data-contrast=\"auto\">Redis Server<\/span><\/b><span data-contrast=\"auto\"> \u2014 The target service to be monitored<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<li><b><span data-contrast=\"auto\">OpenTelemetry Collector<\/span><\/b><span data-contrast=\"auto\"> \u2014 To pull Redis metrics via Redis receiver<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<li><b><span data-contrast=\"auto\">VictoriaMetrics \/ Prometheus<\/span><\/b><span data-contrast=\"auto\"> \u2014 Stores the time-series metrics<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<li><b><span data-contrast=\"auto\">Grafana<\/span><\/b><span data-contrast=\"auto\"> \u2014 To visualize metrics<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<\/ul>\n<h2><span class=\"TextRun SCXW193527470 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW193527470 BCX0\" data-ccp-parastyle=\"heading 2\">OpenTelemetry<\/span><span class=\"NormalTextRun SCXW193527470 BCX0\" data-ccp-parastyle=\"heading 2\"> Collector Configuration<\/span><\/span><span class=\"EOP SCXW193527470 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:299,&quot;335559739&quot;:299}\">\u00a0<\/span><\/h2>\n<pre><code class=\"language-yaml\">receivers:\r\n  redis:\r\n    endpoint: \"localhost:6379\"\r\n    password: \" \"   # Optional: use if Redis requires auth\r\n    collection_interval: 10s\r\n<\/code><\/pre>\n<h2 aria-level=\"3\"><b><span data-contrast=\"none\">How it works:<\/span><\/b><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:281,&quot;335559739&quot;:281}\">\u00a0<\/span><\/h2>\n<ul>\n<li><span data-contrast=\"auto\">OpenTelemetry pulls metrics directly from Redis using its native protocol<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">The metrics are pushed to <\/span><b><span data-contrast=\"auto\">VictoriaMetrics<\/span><\/b><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">You can then query and visualize those metrics in <\/span><a href=\"https:\/\/opstree.com\/blog\/2024\/06\/04\/harnessing-the-power-of-lokis-json-log-parsing-in-grafana\/\"><b><span data-contrast=\"auto\">Grafana<\/span><\/b><\/a><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<\/ul>\n<h2><span class=\"TextRun SCXW39543077 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW39543077 BCX0\">Important Redis Metrics Collected:<\/span><\/span><span class=\"EOP SCXW39543077 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559685&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29250 size-full\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page2_img1.jpeg\" alt=\"Redis Metrics Collected\" width=\"483\" height=\"188\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page2_img1.jpeg 483w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page2_img1-300x117.jpeg 300w\" sizes=\"(max-width: 483px) 85vw, 483px\" \/><\/p>\n<h3><span class=\"TextRun SCXW222625285 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW222625285 BCX0\" data-ccp-parastyle=\"heading 2\">1. <\/span><span class=\"NormalTextRun SCXW222625285 BCX0\" data-ccp-parastyle=\"heading 2\">Availability:<\/span><\/span><span class=\"EOP SCXW222625285 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:299,&quot;335559739&quot;:299}\">\u00a0<\/span><\/h3>\n<table>\n<tbody>\n<tr>\n<th>Metric<\/th>\n<th>Description<\/th>\n<th>Significance<\/th>\n<\/tr>\n<tr>\n<td>redis_uptime_seconds_total<\/td>\n<td>Total uptime since Redis started<\/td>\n<td>Frequent restarts indicate instability<\/td>\n<\/tr>\n<tr>\n<td>redis_replication_offset_bytes<\/td>\n<td>Current replication offset<\/td>\n<td>Helps check if replicas are lagging<\/td>\n<\/tr>\n<tr>\n<td>redis_slaves_connected<\/td>\n<td>Number of connected replicas<\/td>\n<td>Ensures HA replication is working<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29251 size-large\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page3_img1-1024x166.jpeg\" alt=\"Redis\" width=\"1024\" height=\"166\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page3_img1-1024x166.jpeg 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page3_img1-300x49.jpeg 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page3_img1-768x125.jpeg 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page3_img1-1200x195.jpeg 1200w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page3_img1.jpeg 1509w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<h3><span class=\"TextRun SCXW12966647 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW12966647 BCX0\" data-ccp-parastyle=\"heading 2\">2. Resource Usage:<\/span><\/span><span class=\"EOP SCXW12966647 BCX0\" data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:360,&quot;335559739&quot;:120}\">\u00a0<\/span><\/h3>\n<h5><b><span data-contrast=\"auto\">a) <\/span><\/b><b><span data-contrast=\"auto\">Client Metrics:<\/span><\/b><\/h5>\n<p><span data-contrast=\"auto\">Monitoring client activity is crucial to ensure Redis can handle the expected load without becoming overwhelmed.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<th>Metric<\/th>\n<th>Description<\/th>\n<th>Significance<\/th>\n<\/tr>\n<tr>\n<td>redis_clients_connected<\/td>\n<td>Active client connections<\/td>\n<td>Detects overload or unusual client growth<\/td>\n<\/tr>\n<tr>\n<td>redis_clients_max_input_buffer_bytes<\/td>\n<td>Max input buffer size<\/td>\n<td>Large buffers may mean slow clients<\/td>\n<\/tr>\n<tr>\n<td>redis_clients_max_output_buffer_bytes<\/td>\n<td>Max output buffer size<\/td>\n<td>May indicate slow consumers or network issues<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5><span class=\"TextRun SCXW8893753 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW8893753 BCX0\">b) <\/span><span class=\"NormalTextRun SCXW8893753 BCX0\">Connection Metrics<\/span><span class=\"NormalTextRun SCXW8893753 BCX0\">:<\/span><\/span><span class=\"EOP SCXW8893753 BCX0\" data-ccp-props=\"{}\">\u00a0<\/span><\/h5>\n<table>\n<tbody>\n<tr>\n<th>Metric<\/th>\n<th>Description<\/th>\n<th>Significance<\/th>\n<\/tr>\n<tr>\n<td>redis_connections_received_total<\/td>\n<td>Total accepted connections<\/td>\n<td>Sudden surges may indicate retries or attacks<\/td>\n<\/tr>\n<tr>\n<td>redis_connections_rejected_total<\/td>\n<td>Rejected connections (max clients reached)<\/td>\n<td>Indicates scaling needs or max clients tuning<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5>\u00a0<span class=\"TextRun SCXW211638034 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW211638034 BCX0\">c) <\/span><span class=\"NormalTextRun SCXW211638034 BCX0\">CPU Metrics<\/span><span class=\"NormalTextRun SCXW211638034 BCX0\">:<\/span><\/span><span class=\"EOP SCXW211638034 BCX0\" data-ccp-props=\"{}\">\u00a0<\/span><\/h5>\n<p><span class=\"TextRun SCXW263444880 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW263444880 BCX0\">Redis is CPU-intensive by nature; tracking CPU usage helps ensure smooth performance.<\/span><\/span><span class=\"EOP SCXW263444880 BCX0\" data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<th>Metric<\/th>\n<th>Description<\/th>\n<th>Significance<\/th>\n<\/tr>\n<tr>\n<td>redis_cpu_time_seconds_total<\/td>\n<td>CPU time used by Redis<\/td>\n<td>Spikes may suggest slow clients or poor queries<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5><span class=\"TextRun SCXW254485241 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW254485241 BCX0\">d) <\/span><span class=\"NormalTextRun SCXW254485241 BCX0\">Database <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW254485241 BCX0\">Keyspace<\/span><span class=\"NormalTextRun SCXW254485241 BCX0\"> Metrics<\/span><span class=\"NormalTextRun SCXW254485241 BCX0\">:<\/span><\/span><span class=\"EOP SCXW254485241 BCX0\" data-ccp-props=\"{}\">\u00a0<\/span><\/h5>\n<p><span class=\"TextRun SCXW159891 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SpellingErrorV2Themed SCXW159891 BCX0\">Keyspace<\/span><span class=\"NormalTextRun SCXW159891 BCX0\"> metrics track the health and size of your <a href=\"https:\/\/opstree.com\/blog\/2025\/05\/20\/the-art-of-redis-observability-from-metric-overload-to-actionable-insights\/\"><strong>Redis database<\/strong><\/a>.<\/span><\/span><span class=\"EOP SCXW159891 BCX0\" data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<table>\n<thead>\n<tr>\n<th>Metric<\/th>\n<th>Description<\/th>\n<th>Significance<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>redis_db_avg_ttl_milliseconds<\/td>\n<td><span class=\"TextRun SCXW29523754 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW29523754 BCX0\">Avg TTL for keys with <\/span><span class=\"NormalTextRun SCXW29523754 BCX0\">expiration<\/span><\/span><span class=\"EOP SCXW29523754 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:0,&quot;335559739&quot;:0}\">\u00a0<\/span><\/td>\n<td>Zero\/low shows poor TTL usage<\/td>\n<\/tr>\n<tr>\n<td>redis_db_expires<\/td>\n<td><span class=\"TextRun SCXW199267065 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW199267065 BCX0\">Number of keys with <\/span><span class=\"NormalTextRun SCXW199267065 BCX0\">expiration<\/span><span class=\"NormalTextRun SCXW199267065 BCX0\"> set<\/span><\/span><span class=\"EOP SCXW199267065 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:0,&quot;335559739&quot;:0}\">\u00a0<\/span><\/td>\n<td><span class=\"TextRun SCXW58520277 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW58520277 BCX0\">Indicates volatility of the dataset<\/span><\/span><span class=\"EOP SCXW58520277 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:0,&quot;335559739&quot;:0}\">\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td>redis_db_keys<\/td>\n<td><span class=\"TextRun SCXW226338767 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW226338767 BCX0\">Total keys in DB<\/span><\/span><span class=\"EOP SCXW226338767 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:0,&quot;335559739&quot;:0}\">\u00a0<\/span><\/td>\n<td><span class=\"TextRun SCXW139711309 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW139711309 BCX0\">Tracks growth and helps plan memory\/sharding<\/span><\/span><span class=\"EOP SCXW139711309 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:0,&quot;335559739&quot;:0}\">\u00a0<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5>\u00a0<span class=\"TextRun SCXW96357838 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW96357838 BCX0\">\u00a0<\/span><span class=\"NormalTextRun SCXW96357838 BCX0\">e) <\/span><span class=\"NormalTextRun SCXW96357838 BCX0\">Eviction and Expiry Metrics<\/span><span class=\"NormalTextRun SCXW96357838 BCX0\">:<\/span><\/span><span class=\"EOP SCXW96357838 BCX0\" data-ccp-props=\"{}\">\u00a0<\/span><\/h5>\n<p><span class=\"TextRun SCXW4354211 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW4354211 BCX0\">Tracking key <\/span><span class=\"NormalTextRun SCXW4354211 BCX0\">expiration<\/span><span class=\"NormalTextRun SCXW4354211 BCX0\"> and eviction helps manage memory and predict data loss scenarios.<\/span><\/span><span class=\"EOP SCXW4354211 BCX0\" data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<table>\n<thead>\n<tr>\n<th>Metric<\/th>\n<th>Description<\/th>\n<th>Significance<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>redis_keys_evicted_total<\/td>\n<td>Keys evicted due to memory pressure<\/td>\n<td>Indicates critical memory constraints<\/td>\n<\/tr>\n<tr>\n<td>redis_keys_expired_total<\/td>\n<td>Keys expired via TTL<\/td>\n<td>Ensures TTL policies are active and effective<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29252 size-large\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page5_img1-1024x462.jpeg\" alt=\"Eviction and Expiry Metrics\" width=\"1024\" height=\"462\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page5_img1-1024x462.jpeg 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page5_img1-300x135.jpeg 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page5_img1-768x346.jpeg 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page5_img1-1200x541.jpeg 1200w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page5_img1.jpeg 1514w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<h5>\u00a0<span class=\"TextRun SCXW78000557 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW78000557 BCX0\" data-ccp-parastyle=\"heading 2\">3. Performance:<\/span><span class=\"NormalTextRun SCXW78000557 BCX0\" data-ccp-parastyle=\"heading 2\">\u00a0<\/span><\/span><span class=\"EOP SCXW78000557 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:299,&quot;335559739&quot;:299}\">\u00a0<\/span><\/h5>\n<h5><strong><span class=\"TextRun SCXW88079473 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW88079473 BCX0\">a<\/span><span class=\"NormalTextRun SCXW88079473 BCX0\">) <\/span><span class=\"NormalTextRun SCXW88079473 BCX0\">Cache Hit\/Miss Metrics<\/span><\/span><span class=\"EOP SCXW88079473 BCX0\" data-ccp-props=\"{}\">\u00a0<\/span><\/strong><\/h5>\n<p><span class=\"TextRun SCXW199321542 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW199321542 BCX0\">Hit\/miss rates are key indicators of cache effectiveness.<\/span><\/span><span class=\"EOP SCXW199321542 BCX0\" data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<table>\n<thead>\n<tr>\n<th>Metric<\/th>\n<th>Description<\/th>\n<th>Significance<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>redis_keyspace_hits_total<\/td>\n<td>Successful key lookups<\/td>\n<td>High values indicate effective caching<\/td>\n<\/tr>\n<tr>\n<td>redis_keyspace_misses_total<\/td>\n<td>Failed key lookups<\/td>\n<td>May show bad cache strategies or cold starts<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5><span class=\"TextRun SCXW87598167 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW87598167 BCX0\">b<\/span><span class=\"NormalTextRun SCXW87598167 BCX0\">) <\/span><span class=\"NormalTextRun SCXW87598167 BCX0\">Client Metrics:<\/span><\/span><span class=\"EOP SCXW87598167 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:299,&quot;335559739&quot;:299}\">\u00a0<\/span><\/h5>\n<p><span class=\"TextRun SCXW186261173 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW186261173 BCX0\">Monitoring client activity is crucial to ensure Redis can handle the expected load without becoming overwhelmed.<\/span><\/span><span class=\"EOP SCXW186261173 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:299,&quot;335559739&quot;:299}\">\u00a0<\/span><\/p>\n<table>\n<thead>\n<tr>\n<th>Metric<\/th>\n<th>Description<\/th>\n<th>Significance<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>redis_clients_blocked<\/td>\n<td>Clients blocked on commands like BLPOP<\/td>\n<td>Indicates delays due to blocking <span class=\"TextRun SCXW112304648 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW112304648 BCX0\">ops<\/span><\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5>\u00a0<span class=\"TextRun SCXW164766327 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW164766327 BCX0\">c<\/span><span class=\"NormalTextRun SCXW164766327 BCX0\">) <\/span><\/span><span class=\"TextRun SCXW164766327 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW164766327 BCX0\">Command Metrics:<\/span><\/span><span class=\"EOP SCXW164766327 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:299,&quot;335559739&quot;:299}\">\u00a0<\/span><\/h5>\n<p><span class=\"TextRun SCXW82852616 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW82852616 BCX0\">Command execution rates provide insight into <a href=\"https:\/\/redis.io\/\" target=\"_blank\" rel=\"noopener\"><strong>Redis<\/strong><\/a> workload and efficiency.<\/span><\/span><span class=\"EOP SCXW82852616 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<table>\n<thead>\n<tr>\n<th>Metric<\/th>\n<th>Description<\/th>\n<th>Significance<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>redis_commands_per_second<\/td>\n<td>Commands processed per second<\/td>\n<td>Tracks Redis load and spikes in usage<\/td>\n<\/tr>\n<tr>\n<td>redis_commands_processed_total<\/td>\n<td>Total commands since start<\/td>\n<td>Helps in long-term usage analysis<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29253 size-large\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page6_img1-1-1024x187.jpeg\" alt=\"Command Metrics\" width=\"1024\" height=\"187\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page6_img1-1-1024x187.jpeg 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page6_img1-1-300x55.jpeg 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page6_img1-1-768x140.jpeg 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page6_img1-1-1200x219.jpeg 1200w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page6_img1-1.jpeg 1515w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<h3>\u00a0<span class=\"TextRun SCXW17125240 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW17125240 BCX0\">4. General Monitoring:<\/span><\/span><span class=\"EOP SCXW17125240 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559685&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/h3>\n<h5><span class=\"TextRun SCXW137947221 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW137947221 BCX0\">\u00a0<\/span><span class=\"NormalTextRun SCXW137947221 BCX0\">a<\/span><\/span><span class=\"TextRun SCXW137947221 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW137947221 BCX0\">) <\/span><span class=\"NormalTextRun SCXW137947221 BCX0\">Network Traffic Metrics<\/span><\/span><span class=\"EOP SCXW137947221 BCX0\" data-ccp-props=\"{}\">\u00a0<\/span><\/h5>\n<p><span class=\"TextRun SCXW24266356 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW24266356 BCX0\">Network throughput metrics help you size and tune Redis&#8217;s network footprint.<\/span><\/span><span class=\"EOP SCXW24266356 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<table>\n<thead>\n<tr>\n<th>Metric<\/th>\n<th>Description<\/th>\n<th>Significance<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>redis_net_input_bytes_total<\/td>\n<td>Total incoming traffic<\/td>\n<td>Helps spot ingestion spikes<\/td>\n<\/tr>\n<tr>\n<td>redis_net_output_bytes_total<\/td>\n<td>Total outgoing traffic<\/td>\n<td>Useful for sizing Redis&#8217;s outbound load<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29254 size-large\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page6_img2-1024x212.png\" alt=\"Network Traffic Metrics\u00a0\" width=\"1024\" height=\"212\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page6_img2-1024x212.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page6_img2-300x62.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page6_img2-768x159.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page6_img2-1200x248.png 1200w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page6_img2.png 1508w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<h2>\u00a0<span class=\"TextRun SCXW123872938 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW123872938 BCX0\" data-ccp-parastyle=\"heading 2\">Overall Dashboard:<\/span><\/span><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29255 size-large\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page7_img1-1024x444.jpeg\" alt=\"Overall Dashboard\" width=\"1024\" height=\"444\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page7_img1-1024x444.jpeg 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page7_img1-300x130.jpeg 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page7_img1-768x333.jpeg 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page7_img1-1536x665.jpeg 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page7_img1-1200x520.jpeg 1200w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/page7_img1.jpeg 1736w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<h2><span class=\"TextRun SCXW52072079 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW52072079 BCX0\" data-ccp-parastyle=\"heading 2\">Benefits of Using <\/span><span class=\"NormalTextRun SCXW52072079 BCX0\" data-ccp-parastyle=\"heading 2\">Open<\/span> <span class=\"NormalTextRun SCXW52072079 BCX0\" data-ccp-parastyle=\"heading 2\">Telemetry<\/span><span class=\"NormalTextRun SCXW52072079 BCX0\" data-ccp-parastyle=\"heading 2\">:<\/span><\/span><span class=\"EOP SCXW52072079 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559685&quot;:0,&quot;335559738&quot;:299,&quot;335559739&quot;:299}\">\u00a0<\/span><\/h2>\n<table>\n<tbody>\n<tr>\n<th>Advantage<\/th>\n<th>Description<\/th>\n<\/tr>\n<tr>\n<td>No Redis Exporter Needed<\/td>\n<td>Cleaner and simpler architecture<\/td>\n<\/tr>\n<tr>\n<td>Native OTEL Integration<\/td>\n<td>Reduced complexity and config overhead<\/td>\n<\/tr>\n<tr>\n<td>Unified Pipeline<\/td>\n<td>Handle metrics, logs, and traces in one flow<\/td>\n<\/tr>\n<tr>\n<td>Lighter Setup<\/td>\n<td>Fewer components to manage in containerized environments<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><span class=\"TextRun SCXW79818934 BCX0\" lang=\"EN\" xml:lang=\"EN\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW79818934 BCX0\">Conclusion<\/span><\/span><span class=\"EOP SCXW79818934 BCX0\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559685&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/h2>\n<p><span data-contrast=\"auto\">Using Open Telemetry\u2019s Redis receiver, you can monitor Redis directly without needing an extra exporter. This approach is clean, efficient, and works well in containerized or microservices environments.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">By tracking key metrics like memory usage, blocked clients, and command rate, you ensure Redis stays <\/span><span data-contrast=\"auto\">healthy, fast, and scalable.<\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Redis is a cornerstone of many modern applications, valued for its high speed and flexibility. However, Redis systems are not \u201cset-and-forget.\u201d Maintaining operational excellence requires careful monitoring of critical metrics to detect early signs of performance degradation, resource exhaustion, or failures.\u00a0 In this blog, we learn how to monitor Redis directly using Open Telemetry Collector\u2019s &hellip; <a href=\"https:\/\/opstree.com\/blog\/2025\/06\/03\/redis-observability-with-open-telemetry\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Redis Observability with Open Telemetry&#8221;<\/span><\/a><\/p>\n","protected":false},"author":207494263,"featured_media":29249,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[28070474],"tags":[768739306,688729979,343865],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/06\/Redis-Observability-with-Open-Telemetry.jpg","jetpack_likes_enabled":false,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-7BB","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/29239"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/207494263"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=29239"}],"version-history":[{"count":8,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/29239\/revisions"}],"predecessor-version":[{"id":29260,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/29239\/revisions\/29260"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29249"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=29239"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=29239"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=29239"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}