From 75ba46cbb81d300049093ff0ae8285cafed3eefe Mon Sep 17 00:00:00 2001 From: Borko Jandras Date: Wed, 13 Sep 2023 17:47:53 -0500 Subject: [PATCH] [receiver/redis] Seconds as unit for redis.cmd.latency metric. --- receiver/redisreceiver/documentation.md | 2 +- receiver/redisreceiver/internal/metadata/generated_metrics.go | 2 +- .../redisreceiver/internal/metadata/generated_metrics_test.go | 2 +- receiver/redisreceiver/metadata.yaml | 2 +- receiver/redisreceiver/redis_scraper.go | 4 +++- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/receiver/redisreceiver/documentation.md b/receiver/redisreceiver/documentation.md index 759d107267f6e..550f36253e669 100644 --- a/receiver/redisreceiver/documentation.md +++ b/receiver/redisreceiver/documentation.md @@ -298,7 +298,7 @@ Command execution latency | Unit | Metric Type | Value Type | | ---- | ----------- | ---------- | -| us | Gauge | Double | +| s | Gauge | Double | #### Attributes diff --git a/receiver/redisreceiver/internal/metadata/generated_metrics.go b/receiver/redisreceiver/internal/metadata/generated_metrics.go index 5ec5d63834328..61763d10f40ce 100644 --- a/receiver/redisreceiver/internal/metadata/generated_metrics.go +++ b/receiver/redisreceiver/internal/metadata/generated_metrics.go @@ -372,7 +372,7 @@ type metricRedisCmdLatency struct { func (m *metricRedisCmdLatency) init() { m.data.SetName("redis.cmd.latency") m.data.SetDescription("Command execution latency") - m.data.SetUnit("us") + m.data.SetUnit("s") m.data.SetEmptyGauge() m.data.Gauge().DataPoints().EnsureCapacity(m.capacity) } diff --git a/receiver/redisreceiver/internal/metadata/generated_metrics_test.go b/receiver/redisreceiver/internal/metadata/generated_metrics_test.go index 683a075347e3a..5f612c80bd5e5 100644 --- a/receiver/redisreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/redisreceiver/internal/metadata/generated_metrics_test.go @@ -284,7 +284,7 @@ func TestMetricsBuilder(t *testing.T) { assert.Equal(t, pmetric.MetricTypeGauge, ms.At(i).Type()) assert.Equal(t, 1, ms.At(i).Gauge().DataPoints().Len()) assert.Equal(t, "Command execution latency", ms.At(i).Description()) - assert.Equal(t, "us", ms.At(i).Unit()) + assert.Equal(t, "s", ms.At(i).Unit()) dp := ms.At(i).Gauge().DataPoints().At(0) assert.Equal(t, start, dp.StartTimestamp()) assert.Equal(t, ts, dp.Timestamp()) diff --git a/receiver/redisreceiver/metadata.yaml b/receiver/redisreceiver/metadata.yaml index 75e696aa7ac03..6a6aa03e0a0a2 100644 --- a/receiver/redisreceiver/metadata.yaml +++ b/receiver/redisreceiver/metadata.yaml @@ -94,7 +94,7 @@ metrics: redis.cmd.latency: enabled: false description: Command execution latency - unit: us + unit: s gauge: value_type: double attributes: [cmd, percentile] diff --git a/receiver/redisreceiver/redis_scraper.go b/receiver/redisreceiver/redis_scraper.go index 8d242fca729db..76531be35e69c 100644 --- a/receiver/redisreceiver/redis_scraper.go +++ b/receiver/redisreceiver/redis_scraper.go @@ -212,14 +212,16 @@ func (rs *redisScraper) recordCmdStatsMetrics(ts pcommon.Timestamp, cmd, val str // recordCmdLatencyMetrics record latency metrics of a particular Redis command. // 'cmd' is the Redis command, 'val' is the values string (e.g. "p50=1.003,p99=1.003,p99.9=1.003). +// Latency values in the values string are expressed in microseconds. func (rs *redisScraper) recordCmdLatencyMetrics(ts pcommon.Timestamp, cmd, val string) { latencies, err := parseLatencyStats(val) if err != nil { return } - for percentile, latency := range latencies { + for percentile, usecs := range latencies { if percentileAttr, ok := metadata.MapAttributePercentile[percentile]; ok { + latency := usecs / 1e6 // metric is in seconds rs.mb.RecordRedisCmdLatencyDataPoint(ts, latency, cmd, percentileAttr) } }