This is an automated email from the ASF dual-hosted git repository. arina pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/drill.git
commit 84450d8b81e690b003bb1bfac7a986f3db88dca5 Author: Bohdan Kazydub <bohdan.kazy...@gmail.com> AuthorDate: Thu Apr 9 16:46:18 2020 +0300 DRILL-7694: Register drill.queries.* counter metrics on Drillbit startup closes #2050 --- .../apache/drill/exec/metrics/DrillCounters.java | 73 ++++++++++++++++++++++ .../apache/drill/exec/server/DrillbitContext.java | 8 +++ .../exec/work/foreman/QueryStateProcessor.java | 34 ++++------ 3 files changed, 94 insertions(+), 21 deletions(-) diff --git a/common/src/main/java/org/apache/drill/exec/metrics/DrillCounters.java b/common/src/main/java/org/apache/drill/exec/metrics/DrillCounters.java new file mode 100644 index 0000000..29685ae --- /dev/null +++ b/common/src/main/java/org/apache/drill/exec/metrics/DrillCounters.java @@ -0,0 +1,73 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.drill.exec.metrics; + +import com.codahale.metrics.Counter; + +/** + * Holder containing query state counter metrics. + */ +public class DrillCounters { + + private static final DrillCounters INSTANCE = new DrillCounters(); + + private static final String QUERIES_METRICS_PREFIX = "drill.queries."; + + private final Counter planningQueries = DrillMetrics.getRegistry().counter(QUERIES_METRICS_PREFIX + "planning"); + private final Counter enqueuedQueries = DrillMetrics.getRegistry().counter(QUERIES_METRICS_PREFIX + "enqueued"); + private final Counter runningQueries = DrillMetrics.getRegistry().counter(QUERIES_METRICS_PREFIX + "running"); + private final Counter completedQueries = DrillMetrics.getRegistry().counter(QUERIES_METRICS_PREFIX + "completed"); + private final Counter succeededQueries = DrillMetrics.getRegistry().counter(QUERIES_METRICS_PREFIX + "succeeded"); + private final Counter failedQueries = DrillMetrics.getRegistry().counter(QUERIES_METRICS_PREFIX + "failed"); + private final Counter canceledQueries = DrillMetrics.getRegistry().counter(QUERIES_METRICS_PREFIX + "canceled"); + + private DrillCounters() { + } + + public static DrillCounters getInstance() { + return INSTANCE; + } + + public Counter getPlanningQueries() { + return planningQueries; + } + + public Counter getEnqueuedQueries() { + return enqueuedQueries; + } + + public Counter getRunningQueries() { + return runningQueries; + } + + public Counter getCompletedQueries() { + return completedQueries; + } + + public Counter getSucceededQueries() { + return succeededQueries; + } + + public Counter getFailedQueries() { + return failedQueries; + } + + public Counter getCanceledQueries() { + return canceledQueries; + } +} diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/DrillbitContext.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/DrillbitContext.java index 36c7b42..0afd984 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/DrillbitContext.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/DrillbitContext.java @@ -28,6 +28,7 @@ import org.apache.drill.exec.coord.ClusterCoordinator; import org.apache.drill.exec.expr.fn.FunctionImplementationRegistry; import org.apache.drill.exec.expr.fn.registry.RemoteFunctionRegistry; import org.apache.drill.exec.memory.BufferAllocator; +import org.apache.drill.exec.metrics.DrillCounters; import org.apache.drill.exec.physical.impl.OperatorCreatorRegistry; import org.apache.drill.exec.planner.PhysicalPlanReader; import org.apache.drill.exec.planner.sql.DrillOperatorTable; @@ -77,6 +78,7 @@ public class DrillbitContext implements AutoCloseable { private final QueryProfileStoreContext profileStoreContext; private ResourceManager resourceManager; private final MetastoreRegistry metastoreRegistry; + private final DrillCounters counters; public DrillbitContext( DrillbitEndpoint endpoint, @@ -125,6 +127,8 @@ public class DrillbitContext implements AutoCloseable { //This profile store context is built from the profileStoreProvider profileStoreContext = new QueryProfileStoreContext(config, profileStoreProvider, coord); this.metastoreRegistry = new MetastoreRegistry(config); + + this.counters = DrillCounters.getInstance(); } public QueryProfileStoreContext getProfileStoreContext() { @@ -310,4 +314,8 @@ public class DrillbitContext implements AutoCloseable { public MetastoreRegistry getMetastoreRegistry() { return metastoreRegistry; } + + public DrillCounters getCounters() { + return counters; + } } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/QueryStateProcessor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/QueryStateProcessor.java index 5c6836f..3bc75c3 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/QueryStateProcessor.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/QueryStateProcessor.java @@ -19,12 +19,12 @@ package org.apache.drill.exec.work.foreman; import org.apache.drill.common.EventProcessor; import org.apache.drill.exec.ExecConstants; -import org.apache.drill.exec.metrics.DrillMetrics; import org.apache.drill.exec.proto.UserBitShared.QueryResult.QueryState; import org.apache.drill.exec.server.DrillbitContext; import org.apache.drill.exec.work.foreman.Foreman.ForemanResult; -import com.codahale.metrics.Counter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Is responsible for query transition from one state to another, @@ -32,15 +32,7 @@ import com.codahale.metrics.Counter; */ public class QueryStateProcessor implements AutoCloseable { - private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(QueryStateProcessor.class); - - private static final Counter planningQueries = DrillMetrics.getRegistry().counter("drill.queries.planning"); - private static final Counter enqueuedQueries = DrillMetrics.getRegistry().counter("drill.queries.enqueued"); - private static final Counter runningQueries = DrillMetrics.getRegistry().counter("drill.queries.running"); - private static final Counter completedQueries = DrillMetrics.getRegistry().counter("drill.queries.completed"); - private static final Counter succeededQueries = DrillMetrics.getRegistry().counter("drill.queries.succeeded"); - private static final Counter failedQueries = DrillMetrics.getRegistry().counter("drill.queries.failed"); - private static final Counter canceledQueries = DrillMetrics.getRegistry().counter("drill.queries.canceled"); + private static final Logger logger = LoggerFactory.getLogger(QueryStateProcessor.class); private final StateSwitch stateSwitch = new StateSwitch(); @@ -176,18 +168,18 @@ public class QueryStateProcessor implements AutoCloseable { switch (state) { case FAILED: - failedQueries.inc(); + drillbitContext.getCounters().getFailedQueries().inc(); break; case CANCELED: - canceledQueries.inc(); + drillbitContext.getCounters().getCanceledQueries().inc(); break; case COMPLETED: - succeededQueries.inc(); + drillbitContext.getCounters().getSucceededQueries().inc(); break; } - runningQueries.dec(); - completedQueries.inc(); + drillbitContext.getCounters().getRunningQueries().dec(); + drillbitContext.getCounters().getCompletedQueries().inc(); } @@ -195,10 +187,10 @@ public class QueryStateProcessor implements AutoCloseable { switch (newState) { case PLANNING: queryManager.markStartTime(); - runningQueries.inc(); + drillbitContext.getCounters().getRunningQueries().inc(); recordNewState(newState); - planningQueries.inc(); + drillbitContext.getCounters().getPlanningQueries().inc(); return; case CANCELLATION_REQUESTED: wrapUpCancellation(); @@ -208,12 +200,12 @@ public class QueryStateProcessor implements AutoCloseable { } private void planning(final QueryState newState, final Exception exception) { - planningQueries.dec(); + drillbitContext.getCounters().getPlanningQueries().dec(); queryManager.markPlanningEndTime(); switch (newState) { case ENQUEUED: recordNewState(newState); - enqueuedQueries.inc(); + drillbitContext.getCounters().getEnqueuedQueries().inc(); return; case CANCELLATION_REQUESTED: wrapUpCancellation(); @@ -225,7 +217,7 @@ public class QueryStateProcessor implements AutoCloseable { } private void enqueued(final QueryState newState, final Exception exception) { - enqueuedQueries.dec(); + drillbitContext.getCounters().getEnqueuedQueries().dec(); queryManager.markQueueWaitEndTime(); switch (newState) { case STARTING: