You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sentry.apache.org by ha...@apache.org on 2017/01/10 22:31:47 UTC

sentry git commit: SENTRY-1581: Provide Log4J metrics reporter (Alexander Kolbasov, Reviewed by: Hao Hao, Vamsee Yarlagadda)

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 <ha...@cloudera.com>
Authored: Tue Jan 10 14:30:30 2017 -0800
Committer: hahao <ha...@cloudera.com>
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() {