From ff2516230da8b39bde6a9b015e5369ac7cdc868c Mon Sep 17 00:00:00 2001 From: "qiumingming.2018" Date: Tue, 16 Oct 2018 13:07:51 +0800 Subject: [PATCH 1/4] QueryCountStatsMonitor: emit query/total/count --- docs/content/operations/metrics.md | 3 +++ .../apache/druid/server/metrics/QueryCountStatsMonitor.java | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/content/operations/metrics.md b/docs/content/operations/metrics.md index e08aecb04b26..e0bcc71774d4 100644 --- a/docs/content/operations/metrics.md +++ b/docs/content/operations/metrics.md @@ -35,6 +35,7 @@ Available Metrics |`query/node/ttfb`|Time to first byte. Milliseconds elapsed until broker starts receiving the response from individual historical/realtime nodes.|id, status, server.|< 1s| |`query/node/backpressure`|Milliseconds that the channel to this node has spent suspended due to backpressure.|id, status, server.| | |`query/intervalChunk/time`|Only emitted if interval chunking is enabled. Milliseconds required to query an interval chunk.|id, status, chunkInterval (if interval chunking is enabled).|< 1s| +|`query/total/count`|number of total queries|This metric is only available if the QueryCountStatsMonitor module is included.|| |`query/success/count`|number of queries successfully processed|This metric is only available if the QueryCountStatsMonitor module is included.|| |`query/failed/count`|number of failed queries|This metric is only available if the QueryCountStatsMonitor module is included.|| |`query/interrupted/count`|number of queries interrupted due to cancellation or timeout|This metric is only available if the QueryCountStatsMonitor module is included.|| @@ -49,6 +50,7 @@ Available Metrics |`segment/scan/pending`|Number of segments in queue waiting to be scanned.||Close to 0| |`query/segmentAndCache/time`|Milliseconds taken to query individual segment or hit the cache (if it is enabled on the historical node).|id, segment.|several hundred milliseconds| |`query/cpu/time`|Microseconds of CPU time taken to complete a query|Common: dataSource, type, interval, hasFilters, duration, context, remoteAddress, id. Aggregation Queries: numMetrics, numComplexMetrics. GroupBy: numDimensions. TopN: threshold, dimension.|Varies| +|`query/total/count`|number of total queries|This metric is only available if the QueryCountStatsMonitor module is included.|| |`query/success/count`|number of queries successfully processed|This metric is only available if the QueryCountStatsMonitor module is included.|| |`query/failed/count`|number of failed queries|This metric is only available if the QueryCountStatsMonitor module is included.|| |`query/interrupted/count`|number of queries interrupted due to cancellation or timeout|This metric is only available if the QueryCountStatsMonitor module is included.|| @@ -60,6 +62,7 @@ Available Metrics |`query/time`|Milliseconds taken to complete a query.|Common: dataSource, type, interval, hasFilters, duration, context, remoteAddress, id. Aggregation Queries: numMetrics, numComplexMetrics. GroupBy: numDimensions. TopN: threshold, dimension.|< 1s| |`query/wait/time`|Milliseconds spent waiting for a segment to be scanned.|id, segment.|several hundred milliseconds| |`segment/scan/pending`|Number of segments in queue waiting to be scanned.||Close to 0| +|`query/total/count`|number of total queries|This metric is only available if the QueryCountStatsMonitor module is included.|| |`query/success/count`|number of queries successfully processed|This metric is only available if the QueryCountStatsMonitor module is included.|| |`query/failed/count`|number of failed queries|This metric is only available if the QueryCountStatsMonitor module is included.|| |`query/interrupted/count`|number of queries interrupted due to cancellation or timeout|This metric is only available if the QueryCountStatsMonitor module is included.|| diff --git a/server/src/main/java/org/apache/druid/server/metrics/QueryCountStatsMonitor.java b/server/src/main/java/org/apache/druid/server/metrics/QueryCountStatsMonitor.java index 6d88dc66950a..c25851a3af06 100644 --- a/server/src/main/java/org/apache/druid/server/metrics/QueryCountStatsMonitor.java +++ b/server/src/main/java/org/apache/druid/server/metrics/QueryCountStatsMonitor.java @@ -46,7 +46,8 @@ public boolean doMonitor(ServiceEmitter emitter) final ServiceMetricEvent.Builder builder = new ServiceMetricEvent.Builder(); Map diff = keyedDiff.to( "queryCountStats", - ImmutableMap.of("query/success/count", statsProvider.getSuccessfulQueryCount(), + ImmutableMap.of("query/total/count", statsProvider.getSuccessfulQueryCount() + statsProvider.getFailedQueryCount(), + "query/success/count", statsProvider.getSuccessfulQueryCount(), "query/failed/count", statsProvider.getFailedQueryCount(), "query/interrupted/count", statsProvider.getInterruptedQueryCount() ) From 8eea5525e2a3088222234bd2f5052343828e1ba9 Mon Sep 17 00:00:00 2001 From: "qiumingming.2018" Date: Wed, 17 Oct 2018 02:08:23 +0800 Subject: [PATCH 2/4] address comments --- docs/content/operations/metrics.md | 6 +++--- .../druid/server/metrics/QueryCountStatsMonitor.java | 12 ++++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/docs/content/operations/metrics.md b/docs/content/operations/metrics.md index e0bcc71774d4..5144b0acb04b 100644 --- a/docs/content/operations/metrics.md +++ b/docs/content/operations/metrics.md @@ -35,7 +35,7 @@ Available Metrics |`query/node/ttfb`|Time to first byte. Milliseconds elapsed until broker starts receiving the response from individual historical/realtime nodes.|id, status, server.|< 1s| |`query/node/backpressure`|Milliseconds that the channel to this node has spent suspended due to backpressure.|id, status, server.| | |`query/intervalChunk/time`|Only emitted if interval chunking is enabled. Milliseconds required to query an interval chunk.|id, status, chunkInterval (if interval chunking is enabled).|< 1s| -|`query/total/count`|number of total queries|This metric is only available if the QueryCountStatsMonitor module is included.|| +|`query/count`|number of total queries|This metric is only available if the QueryCountStatsMonitor module is included.|| |`query/success/count`|number of queries successfully processed|This metric is only available if the QueryCountStatsMonitor module is included.|| |`query/failed/count`|number of failed queries|This metric is only available if the QueryCountStatsMonitor module is included.|| |`query/interrupted/count`|number of queries interrupted due to cancellation or timeout|This metric is only available if the QueryCountStatsMonitor module is included.|| @@ -50,7 +50,7 @@ Available Metrics |`segment/scan/pending`|Number of segments in queue waiting to be scanned.||Close to 0| |`query/segmentAndCache/time`|Milliseconds taken to query individual segment or hit the cache (if it is enabled on the historical node).|id, segment.|several hundred milliseconds| |`query/cpu/time`|Microseconds of CPU time taken to complete a query|Common: dataSource, type, interval, hasFilters, duration, context, remoteAddress, id. Aggregation Queries: numMetrics, numComplexMetrics. GroupBy: numDimensions. TopN: threshold, dimension.|Varies| -|`query/total/count`|number of total queries|This metric is only available if the QueryCountStatsMonitor module is included.|| +|`query/count`|number of total queries|This metric is only available if the QueryCountStatsMonitor module is included.|| |`query/success/count`|number of queries successfully processed|This metric is only available if the QueryCountStatsMonitor module is included.|| |`query/failed/count`|number of failed queries|This metric is only available if the QueryCountStatsMonitor module is included.|| |`query/interrupted/count`|number of queries interrupted due to cancellation or timeout|This metric is only available if the QueryCountStatsMonitor module is included.|| @@ -62,7 +62,7 @@ Available Metrics |`query/time`|Milliseconds taken to complete a query.|Common: dataSource, type, interval, hasFilters, duration, context, remoteAddress, id. Aggregation Queries: numMetrics, numComplexMetrics. GroupBy: numDimensions. TopN: threshold, dimension.|< 1s| |`query/wait/time`|Milliseconds spent waiting for a segment to be scanned.|id, segment.|several hundred milliseconds| |`segment/scan/pending`|Number of segments in queue waiting to be scanned.||Close to 0| -|`query/total/count`|number of total queries|This metric is only available if the QueryCountStatsMonitor module is included.|| +|`query/count`|number of total queries|This metric is only available if the QueryCountStatsMonitor module is included.|| |`query/success/count`|number of queries successfully processed|This metric is only available if the QueryCountStatsMonitor module is included.|| |`query/failed/count`|number of failed queries|This metric is only available if the QueryCountStatsMonitor module is included.|| |`query/interrupted/count`|number of queries interrupted due to cancellation or timeout|This metric is only available if the QueryCountStatsMonitor module is included.|| diff --git a/server/src/main/java/org/apache/druid/server/metrics/QueryCountStatsMonitor.java b/server/src/main/java/org/apache/druid/server/metrics/QueryCountStatsMonitor.java index c25851a3af06..9725f843c03c 100644 --- a/server/src/main/java/org/apache/druid/server/metrics/QueryCountStatsMonitor.java +++ b/server/src/main/java/org/apache/druid/server/metrics/QueryCountStatsMonitor.java @@ -44,12 +44,16 @@ public QueryCountStatsMonitor( public boolean doMonitor(ServiceEmitter emitter) { final ServiceMetricEvent.Builder builder = new ServiceMetricEvent.Builder(); + final long successfulQueryCount = statsProvider.getSuccessfulQueryCount(); + final long failedQueryCount = statsProvider.getFailedQueryCount(); + final long interruptedQueryCount = statsProvider.getInterruptedQueryCount(); Map diff = keyedDiff.to( "queryCountStats", - ImmutableMap.of("query/total/count", statsProvider.getSuccessfulQueryCount() + statsProvider.getFailedQueryCount(), - "query/success/count", statsProvider.getSuccessfulQueryCount(), - "query/failed/count", statsProvider.getFailedQueryCount(), - "query/interrupted/count", statsProvider.getInterruptedQueryCount() + ImmutableMap.of("query/count", successfulQueryCount + failedQueryCount + interruptedQueryCount, + "query/success/count", successfulQueryCount, + "query/failed/count", failedQueryCount, + "query/interrupted/count", interruptedQueryCount + ) ); if (diff != null) { From df536d53590325a7c5e0f37f1105b887312473a8 Mon Sep 17 00:00:00 2001 From: "qiumingming.2018" Date: Wed, 17 Oct 2018 11:13:14 +0800 Subject: [PATCH 3/4] reformat code --- .../server/metrics/QueryCountStatsMonitor.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/server/src/main/java/org/apache/druid/server/metrics/QueryCountStatsMonitor.java b/server/src/main/java/org/apache/druid/server/metrics/QueryCountStatsMonitor.java index 9725f843c03c..48447b6f14f4 100644 --- a/server/src/main/java/org/apache/druid/server/metrics/QueryCountStatsMonitor.java +++ b/server/src/main/java/org/apache/druid/server/metrics/QueryCountStatsMonitor.java @@ -49,11 +49,15 @@ public boolean doMonitor(ServiceEmitter emitter) final long interruptedQueryCount = statsProvider.getInterruptedQueryCount(); Map diff = keyedDiff.to( "queryCountStats", - ImmutableMap.of("query/count", successfulQueryCount + failedQueryCount + interruptedQueryCount, - "query/success/count", successfulQueryCount, - "query/failed/count", failedQueryCount, - "query/interrupted/count", interruptedQueryCount - + ImmutableMap.of( + "query/count", + successfulQueryCount + failedQueryCount + interruptedQueryCount, + "query/success/count", + successfulQueryCount, + "query/failed/count", + failedQueryCount, + "query/interrupted/count", + interruptedQueryCount ) ); if (diff != null) { From 30c58e9c8ea9b53b5cc9464b0004efd7cbae046b Mon Sep 17 00:00:00 2001 From: "qiumingming.2018" Date: Thu, 18 Oct 2018 01:30:38 +0800 Subject: [PATCH 4/4] codestyle --- .../druid/server/metrics/QueryCountStatsMonitor.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/server/src/main/java/org/apache/druid/server/metrics/QueryCountStatsMonitor.java b/server/src/main/java/org/apache/druid/server/metrics/QueryCountStatsMonitor.java index 48447b6f14f4..e217e8de8046 100644 --- a/server/src/main/java/org/apache/druid/server/metrics/QueryCountStatsMonitor.java +++ b/server/src/main/java/org/apache/druid/server/metrics/QueryCountStatsMonitor.java @@ -50,14 +50,10 @@ public boolean doMonitor(ServiceEmitter emitter) Map diff = keyedDiff.to( "queryCountStats", ImmutableMap.of( - "query/count", - successfulQueryCount + failedQueryCount + interruptedQueryCount, - "query/success/count", - successfulQueryCount, - "query/failed/count", - failedQueryCount, - "query/interrupted/count", - interruptedQueryCount + "query/count", successfulQueryCount + failedQueryCount + interruptedQueryCount, + "query/success/count", successfulQueryCount, + "query/failed/count", failedQueryCount, + "query/interrupted/count", interruptedQueryCount ) ); if (diff != null) {