You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by av...@apache.org on 2022/03/02 17:21:27 UTC
[ozone] branch master updated: HDDS-6317: Export ReconTaskStatus as Prometheus metrics (#3088)
This is an automated email from the ASF dual-hosted git repository.
avijayan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 5f029d0 HDDS-6317: Export ReconTaskStatus as Prometheus metrics (#3088)
5f029d0 is described below
commit 5f029d0619e774f9b7803cc43e89a4eb71bf1cd7
Author: k5342 <k5...@users.noreply.github.com>
AuthorDate: Thu Mar 3 02:21:10 2022 +0900
HDDS-6317: Export ReconTaskStatus as Prometheus metrics (#3088)
---
.../org/apache/hadoop/ozone/recon/ReconServer.java | 8 +++
.../recon/metrics/ReconTaskStatusMetrics.java | 83 ++++++++++++++++++++++
2 files changed, 91 insertions(+)
diff --git a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/ReconServer.java b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/ReconServer.java
index e129bc5..8b0e9f1 100644
--- a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/ReconServer.java
+++ b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/ReconServer.java
@@ -36,6 +36,7 @@ import org.apache.hadoop.hdds.security.x509.certificate.client.ReconCertificateC
import org.apache.hadoop.hdds.utils.HddsServerUtil;
import org.apache.hadoop.ozone.OzoneSecurityUtil;
import org.apache.hadoop.ozone.recon.scm.ReconStorageConfig;
+import org.apache.hadoop.ozone.recon.metrics.ReconTaskStatusMetrics;
import org.apache.hadoop.ozone.recon.spi.OzoneManagerServiceProvider;
import org.apache.hadoop.ozone.recon.spi.ReconContainerMetadataManager;
import org.apache.hadoop.ozone.recon.spi.ReconNamespaceSummaryManager;
@@ -80,6 +81,7 @@ public class ReconServer extends GenericCli {
private OzoneConfiguration configuration;
private ReconStorageConfig reconStorage;
private CertificateClient certClient;
+ private ReconTaskStatusMetrics reconTaskStatusMetrics;
private volatile boolean isStarted = false;
@@ -144,6 +146,8 @@ public class ReconServer extends GenericCli {
injector.getInstance(OzoneManagerServiceProvider.class);
this.reconStorageContainerManager =
injector.getInstance(OzoneStorageContainerManager.class);
+ this.reconTaskStatusMetrics =
+ injector.getInstance(ReconTaskStatusMetrics.class);
LOG.info("Recon server initialized successfully!");
} catch (Exception e) {
@@ -255,6 +259,7 @@ public class ReconServer extends GenericCli {
isStarted = true;
// Initialize metrics for Recon
HddsServerUtil.initializeMetrics(configuration, "Recon");
+ reconTaskStatusMetrics.register();
if (httpServer != null) {
httpServer.start();
}
@@ -282,6 +287,9 @@ public class ReconServer extends GenericCli {
if (reconDBProvider != null) {
reconDBProvider.close();
}
+ if (reconTaskStatusMetrics != null) {
+ reconTaskStatusMetrics.unregister();
+ }
isStarted = false;
}
}
diff --git a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/metrics/ReconTaskStatusMetrics.java b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/metrics/ReconTaskStatusMetrics.java
new file mode 100644
index 0000000..a8db882
--- /dev/null
+++ b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/metrics/ReconTaskStatusMetrics.java
@@ -0,0 +1,83 @@
+/*
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.hadoop.ozone.recon.metrics;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import org.apache.hadoop.metrics2.MetricsCollector;
+import org.apache.hadoop.metrics2.MetricsInfo;
+import org.apache.hadoop.metrics2.MetricsRecordBuilder;
+import org.apache.hadoop.metrics2.MetricsSource;
+import org.apache.hadoop.metrics2.MetricsTag;
+import org.apache.hadoop.metrics2.annotation.Metrics;
+import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem;
+import org.apache.hadoop.metrics2.lib.Interns;
+import org.apache.hadoop.ozone.OzoneConsts;
+import org.hadoop.ozone.recon.schema.tables.daos.ReconTaskStatusDao;
+import org.hadoop.ozone.recon.schema.tables.pojos.ReconTaskStatus;
+
+import java.util.List;
+
+/**
+ * Ship ReconTaskStatus table on persistent DB as a metrics.
+ */
+@Singleton
+@Metrics(about = "Recon Task Status Metrics", context = OzoneConsts.OZONE)
+public class ReconTaskStatusMetrics implements MetricsSource {
+
+ private static final String SOURCE_NAME =
+ ReconTaskStatusMetrics.class.getSimpleName();
+
+ @Inject
+ private ReconTaskStatusDao reconTaskStatusDao;
+
+ private static final MetricsInfo RECORD_INFO_LAST_UPDATED_TS =
+ Interns.info("lastUpdatedTimestamp",
+ "Last updated timestamp of corresponding Recon Task");
+
+ private static final MetricsInfo RECORD_INFO_LAST_UPDATED_SEQ =
+ Interns.info("lastUpdatedSeqNumber",
+ "Last updated sequence number of corresponding Recon Task");
+
+ public void register() {
+ DefaultMetricsSystem.instance()
+ .register(SOURCE_NAME, "Recon Task Metrics", this);
+ }
+
+ public void unregister() {
+ DefaultMetricsSystem.instance()
+ .unregisterSource(SOURCE_NAME);
+ }
+
+ public void getMetrics(MetricsCollector collector, boolean all) {
+ List<ReconTaskStatus> rows = reconTaskStatusDao.findAll();
+ rows.forEach((rts) -> {
+ MetricsRecordBuilder builder = collector.addRecord(SOURCE_NAME);
+ builder.add(
+ new MetricsTag(
+ Interns.info("type", "Recon Task type"),
+ rts.getTaskName()));
+ builder.addGauge(RECORD_INFO_LAST_UPDATED_TS,
+ rts.getLastUpdatedTimestamp());
+ builder.addCounter(RECORD_INFO_LAST_UPDATED_SEQ,
+ rts.getLastUpdatedSeqNumber());
+ builder.endRecord();
+ });
+ }
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org