Repository: sentry Updated Branches: refs/heads/master 854934cb2 -> 2a89d2bfe
SENTRY-1581: Provide Log4J metrics reporter (Alexander Kolbasov, Reviewed by: Hao Hao, Vamsee Yarlagadda) Change-Id: I6f157bba9a35610f5d4e5e032f24f09a12624239 Project: http://git-wip-us.apache.org/repos/asf/sentry/repo Commit: http://git-wip-us.apache.org/repos/asf/sentry/commit/2a89d2bf Tree: http://git-wip-us.apache.org/repos/asf/sentry/tree/2a89d2bf Diff: http://git-wip-us.apache.org/repos/asf/sentry/diff/2a89d2bf Branch: refs/heads/master Commit: 2a89d2bfe33eff2d861469caf9058b4062c85d98 Parents: 854934c Author: hahao <[email protected]> Authored: Tue Jan 10 14:30:30 2017 -0800 Committer: hahao <[email protected]> Committed: Tue Jan 10 14:30:30 2017 -0800 ---------------------------------------------------------------------- .../db/service/thrift/SentryMetrics.java | 42 +++++++++++--------- .../thrift/SentryPolicyStoreProcessor.java | 14 +------ 2 files changed, 25 insertions(+), 31 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/sentry/blob/2a89d2bf/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryMetrics.java ---------------------------------------------------------------------- diff --git a/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryMetrics.java b/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryMetrics.java index c477f24..9d09971 100644 --- a/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryMetrics.java +++ b/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryMetrics.java @@ -17,16 +17,10 @@ */ package org.apache.sentry.provider.db.service.thrift; -import com.codahale.metrics.ConsoleReporter; -import com.codahale.metrics.Counter; -import com.codahale.metrics.Gauge; -import com.codahale.metrics.Histogram; -import com.codahale.metrics.JmxReporter; -import com.codahale.metrics.Metric; -import com.codahale.metrics.MetricRegistry; +import com.codahale.metrics.*; + import static com.codahale.metrics.MetricRegistry.name; -import com.codahale.metrics.MetricSet; -import com.codahale.metrics.Timer; + import com.codahale.metrics.jvm.BufferPoolMetricSet; import com.codahale.metrics.jvm.GarbageCollectorMetricSet; import com.codahale.metrics.jvm.MemoryUsageGaugeSet; @@ -136,6 +130,7 @@ public final class SentryMetrics { * Available reporters: * <ul> * <li>console</li> + * <li>log</li> * <li>jmx</li> * </ul> * @@ -144,18 +139,19 @@ public final class SentryMetrics { * <p> * Method is thread safe. */ - void initReporting(Reporting reporting, Configuration conf) { - if (reportingInitialized.getAndSet(true)) { + void initReporting(Configuration conf) { + final String reporter = conf.get(ServerConfig.SENTRY_REPORTER); + if (reporter == null || reporter.isEmpty() || reportingInitialized.getAndSet(true)) { // Nothing to do, just return return; } - switch(reporting) { - case CONSOLE: - final int reportInterval = - conf.getInt(ServerConfig.SENTRY_REPORTER_INTERVAL_SEC, - ServerConfig.SENTRY_REPORTER_INTERVAL_DEFAULT); + final int reportInterval = + conf.getInt(ServerConfig.SENTRY_REPORTER_INTERVAL_SEC, + ServerConfig.SENTRY_REPORTER_INTERVAL_DEFAULT); + switch(SentryMetrics.Reporting.valueOf(reporter.toUpperCase())) { + case CONSOLE: LOGGER.info(String.format("Enabled console metrics reporter with %d seconds interval", reportInterval)); final ConsoleReporter consoleReporter = @@ -173,8 +169,17 @@ public final class SentryMetrics { .build(); jmxReporter.start(); break; + case LOG: + LOGGER.info(String.format("Enabled Log4J metrics reporter with %d seconds interval", + reportInterval)); + final Slf4jReporter logReporter = Slf4jReporter.forRegistry(METRIC_REGISTRY) + .outputTo(LOGGER) + .convertRatesTo(TimeUnit.SECONDS) + .convertDurationsTo(TimeUnit.MILLISECONDS) + .build(); + logReporter.start(reportInterval, TimeUnit.SECONDS); default: - LOGGER.warn("Invalid metrics reporter " + reporting.toString()); + LOGGER.warn("Invalid metrics reporter " + reporter); break; } } @@ -196,6 +201,7 @@ public final class SentryMetrics { public enum Reporting { JMX, - CONSOLE + CONSOLE, + LOG, } } http://git-wip-us.apache.org/repos/asf/sentry/blob/2a89d2bf/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryPolicyStoreProcessor.java ---------------------------------------------------------------------- diff --git a/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryPolicyStoreProcessor.java b/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryPolicyStoreProcessor.java index 898632d..b10c2f2 100644 --- a/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryPolicyStoreProcessor.java +++ b/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryPolicyStoreProcessor.java @@ -130,19 +130,7 @@ public class SentryPolicyStoreProcessor implements SentryPolicyService.Iface { private void initMetrics() { sentryMetrics = SentryMetrics.getInstance(); sentryMetrics.addSentryStoreGauges(sentryStore); - - String sentryReporting = conf.get(ServerConfig.SENTRY_REPORTER); - if (sentryReporting != null) { - SentryMetrics.Reporting reporting; - try { - reporting = SentryMetrics.Reporting.valueOf(sentryReporting.toUpperCase()); - sentryMetrics.initReporting(reporting, conf); - - } catch (IllegalArgumentException e) { - LOGGER.warn("Metrics reporting not configured correctly, please set " + ServerConfig.SENTRY_REPORTER + - " to: " + SentryMetrics.Reporting.CONSOLE.name() + "/" + SentryMetrics.Reporting.JMX.name()); - } - } + sentryMetrics.initReporting(conf); } public void stop() {
