Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

import org.apache.iotdb.metrics.KnownMetric;
import org.apache.iotdb.metrics.MetricManager;
import org.apache.iotdb.metrics.MetricReporter;
import org.apache.iotdb.metrics.config.MetricConfig;
import org.apache.iotdb.metrics.config.MetricConfigDescriptor;
import org.apache.iotdb.metrics.dropwizard.type.DropwizardCounter;
Expand Down Expand Up @@ -67,10 +68,12 @@ public class DropwizardMetricManager implements MetricManager {

com.codahale.metrics.MetricRegistry metricRegistry;
MetricConfig metricConfig = MetricConfigDescriptor.getInstance().getMetricConfig();
MetricReporter metricReporter;

/** init the field with dropwizard library. */
public DropwizardMetricManager() {
metricRegistry = new MetricRegistry();
metricReporter = new DropwizardMetricReporter();
isEnable = metricConfig.getEnableMetric();
currentMeters = new ConcurrentHashMap<>();
}
Expand Down Expand Up @@ -258,6 +261,51 @@ public void timer(long delta, TimeUnit timeUnit, String metric, String... tags)
.update(delta, timeUnit);
}

@Override
public void removeCounter(String metric, String... tags) {
if (!isEnable) {
return;
}
MetricName name = new MetricName(metric, tags);
currentMeters.remove(name);
}

@Override
public void removeGauge(String metric, String... tags) {
if (!isEnable) {
return;
}
MetricName name = new MetricName(metric, tags);
currentMeters.remove(name);
}

@Override
public void removeRate(String metric, String... tags) {
if (!isEnable) {
return;
}
MetricName name = new MetricName(metric, tags);
currentMeters.remove(name);
}

@Override
public void removeHistogram(String metric, String... tags) {
if (!isEnable) {
return;
}
MetricName name = new MetricName(metric, tags);
currentMeters.remove(name);
}

@Override
public void removeTimer(String metric, String... tags) {
if (!isEnable) {
return;
}
MetricName name = new MetricName(metric, tags);
currentMeters.remove(name);
}

@Override
public List<String[]> getAllMetricKeys() {
if (!isEnable) {
Expand Down Expand Up @@ -363,9 +411,36 @@ private void enableJvmMetrics() {

@Override
public boolean init() {
logger.info("DropWizard init registry");
List<String> reporters = metricConfig.getMetricReporterList();
for(String report: reporters){
if(!startReporter(report)){
return false;
}
}
return true;
}

@Override
public boolean stop() {
return metricReporter.stop();
}

@Override
public boolean startReporter(String reporterName) {
return metricReporter.start(reporterName);
}

@Override
public boolean stopReporter(String reporterName) {
return metricReporter.stop(reporterName);
}

@Override
public void setReporter(MetricReporter metricReporter) {
this.metricReporter = metricReporter;
}

@Override
public String getName() {
return "DropwizardMetricManager";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,23 @@ public boolean start() {
return false;
}

@Override
public boolean start(String reporter) {
switch (ReporterType.get(reporter)) {
case JMX:
startJmxReporter();
break;
case IOTDB:
break;
case PROMETHEUS:
break;
default:
logger.warn("Dropwizard don't support reporter type {}", reporter);
return false;
}
return true;
}

private void startJmxReporter() {
jmxReporter =
JmxReporter.forRegistry(
Expand All @@ -65,10 +82,6 @@ private void startJmxReporter() {
jmxReporter.start();
}

@Override
public void setMetricManager(MetricManager metricManager) {
dropwizardMetricManager = metricManager;
}

@Override
public boolean stop() {
Expand All @@ -89,6 +102,23 @@ public boolean stop() {
return true;
}

@Override
public boolean stop(String reporter) {
switch (ReporterType.get(reporter)) {
case JMX:
stopJmxReporter(jmxReporter);
break;
case IOTDB:
break;
case PROMETHEUS:
break;
default:
logger.warn("Dropwizard don't support reporter type {}", reporter);
return false;
}
return true;
}

private void stopJmxReporter(JmxReporter jmxReporter) {
if (jmxReporter != null) {
jmxReporter.stop();
Expand Down