Skip to content

Commit 3e8701e

Browse files
Always collect available metrics in top queries service (#205) (#211)
(cherry picked from commit a52586a) Signed-off-by: Chenyang Ji <cyji@amazon.com> Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent cce34be commit 3e8701e

File tree

3 files changed

+35
-29
lines changed

3 files changed

+35
-29
lines changed

src/main/java/org/opensearch/plugin/insights/core/listener/QueryInsightsListener.java

+16-26
Original file line numberDiff line numberDiff line change
@@ -220,10 +220,6 @@ public void onRequestFailure(final SearchPhaseContext context, final SearchReque
220220
constructSearchQueryRecord(context, searchRequestContext);
221221
}
222222

223-
private boolean shouldCollect(MetricType metricType) {
224-
return queryInsightsService.isSearchQueryMetricsFeatureEnabled() || queryInsightsService.isCollectionEnabled(metricType);
225-
}
226-
227223
private void constructSearchQueryRecord(final SearchPhaseContext context, final SearchRequestContext searchRequestContext) {
228224
SearchTask searchTask = context.getTask();
229225
List<TaskResourceInfo> tasksResourceUsages = searchRequestContext.getPhaseResourceUsage();
@@ -240,28 +236,22 @@ private void constructSearchQueryRecord(final SearchPhaseContext context, final
240236
final SearchRequest request = context.getRequest();
241237
try {
242238
Map<MetricType, Measurement> measurements = new HashMap<>();
243-
if (shouldCollect(MetricType.LATENCY)) {
244-
measurements.put(
245-
MetricType.LATENCY,
246-
new Measurement(TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - searchRequestContext.getAbsoluteStartNanos()))
247-
);
248-
}
249-
if (shouldCollect(MetricType.CPU)) {
250-
measurements.put(
251-
MetricType.CPU,
252-
new Measurement(
253-
tasksResourceUsages.stream().map(a -> a.getTaskResourceUsage().getCpuTimeInNanos()).mapToLong(Long::longValue).sum()
254-
)
255-
);
256-
}
257-
if (shouldCollect(MetricType.MEMORY)) {
258-
measurements.put(
259-
MetricType.MEMORY,
260-
new Measurement(
261-
tasksResourceUsages.stream().map(a -> a.getTaskResourceUsage().getMemoryInBytes()).mapToLong(Long::longValue).sum()
262-
)
263-
);
264-
}
239+
measurements.put(
240+
MetricType.LATENCY,
241+
new Measurement(TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - searchRequestContext.getAbsoluteStartNanos()))
242+
);
243+
measurements.put(
244+
MetricType.CPU,
245+
new Measurement(
246+
tasksResourceUsages.stream().map(a -> a.getTaskResourceUsage().getCpuTimeInNanos()).mapToLong(Long::longValue).sum()
247+
)
248+
);
249+
measurements.put(
250+
MetricType.MEMORY,
251+
new Measurement(
252+
tasksResourceUsages.stream().map(a -> a.getTaskResourceUsage().getMemoryInBytes()).mapToLong(Long::longValue).sum()
253+
)
254+
);
265255

266256
Map<Attribute, Object> attributes = new HashMap<>();
267257
attributes.put(Attribute.SEARCH_TYPE, request.searchType().toString().toLowerCase(Locale.ROOT));

src/main/java/org/opensearch/plugin/insights/core/service/categorizer/SearchQueryCounters.java

+9-3
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,15 @@ public void incrementSortCounter(double value, Tags tags, Map<MetricType, Measur
140140
}
141141

142142
private void incrementAllHistograms(Tags tags, Map<MetricType, Measurement> measurements) {
143-
queryTypeLatencyHistogram.record(measurements.get(MetricType.LATENCY).getMeasurement().doubleValue(), tags);
144-
queryTypeCpuHistogram.record(measurements.get(MetricType.CPU).getMeasurement().doubleValue(), tags);
145-
queryTypeMemoryHistogram.record(measurements.get(MetricType.MEMORY).getMeasurement().doubleValue(), tags);
143+
if (measurements.containsKey(MetricType.LATENCY)) {
144+
queryTypeLatencyHistogram.record(measurements.get(MetricType.LATENCY).getMeasurement().doubleValue(), tags);
145+
}
146+
if (measurements.containsKey(MetricType.CPU)) {
147+
queryTypeCpuHistogram.record(measurements.get(MetricType.CPU).getMeasurement().doubleValue(), tags);
148+
}
149+
if (measurements.containsKey(MetricType.MEMORY)) {
150+
queryTypeMemoryHistogram.record(measurements.get(MetricType.MEMORY).getMeasurement().doubleValue(), tags);
151+
}
146152
}
147153

148154
/**

src/main/java/org/opensearch/plugin/insights/rules/model/SearchQueryRecord.java

+10
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,9 @@ public String getId() {
322322
* @return the measurement object, or null if not found
323323
*/
324324
public Number getMeasurement(final MetricType name) {
325+
if (!measurements.containsKey(name)) {
326+
return null;
327+
}
325328
return measurements.get(name).getMeasurement();
326329
}
327330

@@ -337,6 +340,10 @@ public Number getMeasurement(final MetricType name) {
337340
* @param numberToAdd The measurement number we want to add to the current measurement.
338341
*/
339342
public void addMeasurement(final MetricType metricType, Number numberToAdd) {
343+
if (!measurements.containsKey(metricType)) {
344+
measurements.put(metricType, new Measurement(numberToAdd));
345+
return;
346+
}
340347
measurements.get(metricType).addMeasurement(numberToAdd);
341348
}
342349

@@ -346,6 +353,9 @@ public void addMeasurement(final MetricType metricType, Number numberToAdd) {
346353
* @param aggregationType Aggregation type to set
347354
*/
348355
public void setMeasurementAggregation(final MetricType name, AggregationType aggregationType) {
356+
if (!measurements.containsKey(name)) {
357+
return;
358+
}
349359
measurements.get(name).setAggregationType(aggregationType);
350360
}
351361

0 commit comments

Comments
 (0)