You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by bo...@apache.org on 2016/03/07 20:03:31 UTC

[3/6] storm git commit: 1. change all defmeter/defgauge to java 2. change register-metrics-reporter/reporters in common to java

1. change all defmeter/defgauge to java
2. change register-metrics-reporter/reporters in common to java


Project: http://git-wip-us.apache.org/repos/asf/storm/repo
Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/68e5d036
Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/68e5d036
Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/68e5d036

Branch: refs/heads/master
Commit: 68e5d03634b3d2ecf01be0e23466984977a18437
Parents: 122f0f4
Author: 卫乐 <we...@taobao.com>
Authored: Wed Mar 2 11:57:06 2016 +0800
Committer: 卫乐 <we...@taobao.com>
Committed: Wed Mar 2 11:57:06 2016 +0800

----------------------------------------------------------------------
 .../src/clj/org/apache/storm/daemon/common.clj  | 13 +---
 .../src/clj/org/apache/storm/daemon/drpc.clj    | 30 ++++----
 .../clj/org/apache/storm/daemon/logviewer.clj   | 27 ++++---
 .../src/clj/org/apache/storm/daemon/nimbus.clj  |  2 +-
 .../clj/org/apache/storm/daemon/supervisor.clj  | 12 +--
 storm-core/src/clj/org/apache/storm/ui/core.clj | 81 ++++++++++----------
 .../src/clj/org/apache/storm/ui/helpers.clj     | 10 +--
 .../storm/metric/StormMetricsRegistry.java      | 21 ++++-
 8 files changed, 99 insertions(+), 97 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/storm/blob/68e5d036/storm-core/src/clj/org/apache/storm/daemon/common.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/org/apache/storm/daemon/common.clj b/storm-core/src/clj/org/apache/storm/daemon/common.clj
index 65cf233..d356a7e 100644
--- a/storm-core/src/clj/org/apache/storm/daemon/common.clj
+++ b/storm-core/src/clj/org/apache/storm/daemon/common.clj
@@ -33,18 +33,7 @@
   (:import [org.apache.storm Thrift]
            (org.apache.storm.daemon Acker))
   (:require [clojure.set :as set])
-  (:require [metrics.reporters.jmx :as jmx])
-  (:require [metrics.core  :refer [default-registry]]))
-
-(defn start-metrics-reporter [reporter conf]
-  (doto reporter
-    (.prepare default-registry conf)
-    (.start))
-  (log-message "Started statistics report plugin..."))
-
-(defn start-metrics-reporters [conf]
-  (doseq [reporter (MetricsUtils/getPreparableReporters conf)]
-    (start-metrics-reporter reporter conf)))
+  (:require [metrics.reporters.jmx :as jmx]))
 
 
 (def ACKER-COMPONENT-ID Acker/ACKER_COMPONENT_ID)

http://git-wip-us.apache.org/repos/asf/storm/blob/68e5d036/storm-core/src/clj/org/apache/storm/daemon/drpc.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/org/apache/storm/daemon/drpc.clj b/storm-core/src/clj/org/apache/storm/daemon/drpc.clj
index 001e810..0fe19e9 100644
--- a/storm-core/src/clj/org/apache/storm/daemon/drpc.clj
+++ b/storm-core/src/clj/org/apache/storm/daemon/drpc.clj
@@ -16,7 +16,8 @@
 
 (ns org.apache.storm.daemon.drpc
   (:import [org.apache.storm.security.auth AuthUtils ThriftServer ThriftConnectionType ReqContext]
-           [org.apache.storm.ui UIHelpers IConfigurator FilterConfiguration])
+           [org.apache.storm.ui UIHelpers IConfigurator FilterConfiguration]
+           [org.apache.storm.metric StormMetricsRegistry])
   (:import [org.apache.storm.security.auth.authorizer DRPCAuthorizerBase])
   (:import [org.apache.storm.utils Utils])
   (:import [org.apache.storm.generated DistributedRPC DistributedRPC$Iface DistributedRPC$Processor
@@ -36,15 +37,14 @@
   (:use compojure.core)
   (:use ring.middleware.reload)
   (:require [compojure.handler :as handler])
-  (:require [metrics.meters :refer [defmeter mark!]])
   (:gen-class))
 
-(defmeter drpc:num-execute-http-requests)
-(defmeter drpc:num-execute-calls)
-(defmeter drpc:num-result-calls)
-(defmeter drpc:num-failRequest-calls)
-(defmeter drpc:num-fetchRequest-calls)
-(defmeter drpc:num-shutdown-calls)
+(def drpc:num-execute-http-requests (StormMetricsRegistry/registerMeter "drpc:num-execute-http-requests"))
+(def drpc:num-execute-calls (StormMetricsRegistry/registerMeter "drpc:num-execute-calls"))
+(def drpc:num-result-calls (StormMetricsRegistry/registerMeter "drpc:num-result-calls"))
+(def drpc:num-failRequest-calls (StormMetricsRegistry/registerMeter "drpc:num-failRequest-calls"))
+(def drpc:num-fetchRequest-calls (StormMetricsRegistry/registerMeter "drpc:num-fetchRequest-calls"))
+(def drpc:num-shutdown-calls (StormMetricsRegistry/registerMeter "drpc:num-shutdown-calls"))
 
 (def STORM-VERSION (VersionInfo/getVersion))
 
@@ -102,7 +102,7 @@
     (reify DistributedRPC$Iface
       (^String execute
         [this ^String function ^String args]
-        (mark! drpc:num-execute-calls)
+        (.mark drpc:num-execute-calls)
         (log-debug "Received DRPC request for " function " (" args ") at " (System/currentTimeMillis))
         (check-authorization drpc-acl-handler
                              {DRPCAuthorizerBase/FUNCTION_NAME function}
@@ -132,7 +132,7 @@
 
       (^void result
         [this ^String id ^String result]
-        (mark! drpc:num-result-calls)
+        (.mark drpc:num-result-calls)
         (when-let [func (@id->function id)]
           (check-authorization drpc-acl-handler
                                {DRPCAuthorizerBase/FUNCTION_NAME func}
@@ -146,7 +146,7 @@
 
       (^void failRequest
         [this ^String id]
-        (mark! drpc:num-failRequest-calls)
+        (.mark drpc:num-failRequest-calls)
         (when-let [func (@id->function id)]
           (check-authorization drpc-acl-handler
                                {DRPCAuthorizerBase/FUNCTION_NAME func}
@@ -158,7 +158,7 @@
 
       (^DRPCRequest fetchRequest
         [this ^String func]
-        (mark! drpc:num-fetchRequest-calls)
+        (.mark drpc:num-fetchRequest-calls)
         (check-authorization drpc-acl-handler
                              {DRPCAuthorizerBase/FUNCTION_NAME func}
                              "fetchRequest")
@@ -173,7 +173,7 @@
 
       (shutdown
         [this]
-        (mark! drpc:num-shutdown-calls)
+        (.mark drpc:num-shutdown-calls)
         (.interrupt clear-thread)))))
 
 (defn handle-request [handler]
@@ -187,7 +187,7 @@
       (.populateContext http-creds-handler (ReqContext/context) servlet-request)))
 
 (defn webapp [handler http-creds-handler]
-  (mark! drpc:num-execute-http-requests)
+  (.mark drpc:num-execute-http-requests)
   (->
     (routes
       (POST "/drpc/:func" [:as {:keys [body servlet-request]} func & m]
@@ -268,7 +268,7 @@
                                      https-need-client-auth
                                      https-want-client-auth)
                                    (UIHelpers/configFilter server (ring.util.servlet/servlet app) filters-confs))))))
-      (start-metrics-reporters conf)
+      (StormMetricsRegistry/startMetricsReporters conf)
       (when handler-server
         (.serve handler-server)))))
 

http://git-wip-us.apache.org/repos/asf/storm/blob/68e5d036/storm-core/src/clj/org/apache/storm/daemon/logviewer.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/org/apache/storm/daemon/logviewer.clj b/storm-core/src/clj/org/apache/storm/daemon/logviewer.clj
index 221dad7..ed8d980 100644
--- a/storm-core/src/clj/org/apache/storm/daemon/logviewer.clj
+++ b/storm-core/src/clj/org/apache/storm/daemon/logviewer.clj
@@ -20,7 +20,8 @@
   (:use [hiccup core page-helpers form-helpers])
   (:use [org.apache.storm config util log])
   (:use [org.apache.storm.ui helpers])
-  (:import [org.apache.storm StormTimer])
+  (:import [org.apache.storm StormTimer]
+           [org.apache.storm.metric StormMetricsRegistry])
   (:import [org.apache.storm.utils Utils Time VersionInfo ConfigUtils])
   (:import [org.slf4j LoggerFactory])
   (:import [java.util Arrays ArrayList HashSet])
@@ -45,8 +46,6 @@
             [ring.util.codec :as codec]
             [ring.util.response :as resp]
             [clojure.string :as string])
-  (:require [metrics.meters :refer [defmeter mark!]])
-  (:use [org.apache.storm.daemon.common :only [start-metrics-reporters]])
   (:gen-class))
 
 (def ^:dynamic *STORM-CONF* (clojurify-structure (ConfigUtils/readStormConfig)))
@@ -54,11 +53,11 @@
 
 (def worker-log-filename-pattern  #"^worker.log(.*)")
 
-(defmeter logviewer:num-log-page-http-requests)
-(defmeter logviewer:num-daemonlog-page-http-requests)
-(defmeter logviewer:num-download-log-file-http-requests)
-(defmeter logviewer:num-download-log-daemon-file-http-requests)
-(defmeter logviewer:num-list-logs-http-requests)
+(def logviewer:num-log-page-http-requests (StormMetricsRegistry/registerMeter "logviewer:num-log-page-http-requests"))
+(def logviewer:num-daemonlog-page-http-requests (StormMetricsRegistry/registerMeter "logviewer:num-daemonlog-page-http-requests"))
+(def logviewer:num-download-log-file-http-requests (StormMetricsRegistry/registerMeter "logviewer:num-download-log-file-http-requests"))
+(def logviewer:num-download-log-daemon-file-http-requests (StormMetricsRegistry/registerMeter "logviewer:num-download-log-daemon-file-http-requests"))
+(def logviewer:num-list-logs-http-requests (StormMetricsRegistry/registerMeter "logviewer:num-list-logs-http-requests"))
 
 (defn cleanup-cutoff-age-millis [conf now-millis]
   (- now-millis (* (conf LOGVIEWER-CLEANUP-AGE-MINS) 60 1000)))
@@ -989,7 +988,7 @@
 (defroutes log-routes
   (GET "/log" [:as req & m]
     (try
-      (mark! logviewer:num-log-page-http-requests)
+      (.mark logviewer:num-log-page-http-requests)
       (let [servlet-request (:servlet-request req)
             log-root (:log-root req)
             user (.getUserName http-creds-handler servlet-request)
@@ -1057,7 +1056,7 @@
            (resp/status 404)))))
   (GET "/daemonlog" [:as req & m]
     (try
-      (mark! logviewer:num-daemonlog-page-http-requests)
+      (.mark logviewer:num-daemonlog-page-http-requests)
       (let [servlet-request (:servlet-request req)
             daemonlog-root (:daemonlog-root req)
             user (.getUserName http-creds-handler servlet-request)
@@ -1071,7 +1070,7 @@
         (ring-response-from-exception ex))))
   (GET "/download/:file" [:as {:keys [servlet-request servlet-response log-root]} file & m]
     (try
-      (mark! logviewer:num-download-log-file-http-requests)
+      (.mark logviewer:num-download-log-file-http-requests)
       (let [user (.getUserName http-creds-handler servlet-request)]
         (download-log-file file servlet-request servlet-response user log-root))
       (catch InvalidRequestException ex
@@ -1079,7 +1078,7 @@
         (ring-response-from-exception ex))))
   (GET "/daemondownload/:file" [:as {:keys [servlet-request servlet-response daemonlog-root]} file & m]
     (try
-      (mark! logviewer:num-download-log-daemon-file-http-requests)
+      (.mark logviewer:num-download-log-daemon-file-http-requests)
       (let [user (.getUserName http-creds-handler servlet-request)]
         (download-log-file file servlet-request servlet-response user daemonlog-root))
       (catch InvalidRequestException ex
@@ -1137,7 +1136,7 @@
         (json-response (UIHelpers/exceptionToJson ex) (:callback m) :status 400))))
   (GET "/listLogs" [:as req & m]
     (try
-      (mark! logviewer:num-list-logs-http-requests)
+      (.mark logviewer:num-list-logs-http-requests)
       (let [servlet-request (:servlet-request req)
             user (.getUserName http-creds-handler servlet-request)]
         (list-log-files user
@@ -1208,4 +1207,4 @@
                  STORM-VERSION
                  "'")
     (start-logviewer! conf log-root daemonlog-root)
-    (start-metrics-reporters conf)))
+    (StormMetricsRegistry/startMetricsReporters conf)))

http://git-wip-us.apache.org/repos/asf/storm/blob/68e5d036/storm-core/src/clj/org/apache/storm/daemon/nimbus.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/org/apache/storm/daemon/nimbus.clj b/storm-core/src/clj/org/apache/storm/daemon/nimbus.clj
index c05482c..9b19a22 100644
--- a/storm-core/src/clj/org/apache/storm/daemon/nimbus.clj
+++ b/storm-core/src/clj/org/apache/storm/daemon/nimbus.clj
@@ -1489,7 +1489,7 @@
     (def nimbus:num-supervisors (StormMetricsRegistry/registerGauge "nimbus:num-supervisors"
       (fn [] (.size (.supervisors (:storm-cluster-state nimbus) nil)))))
 
-    (start-metrics-reporters conf)
+    (StormMetricsRegistry/startMetricsReporters conf)
 
     (reify Nimbus$Iface
       (^void submitTopologyWithOpts

http://git-wip-us.apache.org/repos/asf/storm/blob/68e5d036/storm-core/src/clj/org/apache/storm/daemon/supervisor.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/org/apache/storm/daemon/supervisor.clj b/storm-core/src/clj/org/apache/storm/daemon/supervisor.clj
index 7295679..88b8751 100644
--- a/storm-core/src/clj/org/apache/storm/daemon/supervisor.clj
+++ b/storm-core/src/clj/org/apache/storm/daemon/supervisor.clj
@@ -14,7 +14,8 @@
 ;; See the License for the specific language governing permissions and
 ;; limitations under the License.
 (ns org.apache.storm.daemon.supervisor
-  (:import [java.io File IOException FileOutputStream])
+  (:import [java.io File IOException FileOutputStream]
+           [org.apache.storm.metric StormMetricsRegistry])
   (:import [org.apache.storm.scheduler ISupervisor]
            [org.apache.storm.utils LocalState Time Utils Utils$ExitCodeCallable
                                    ConfigUtils]
@@ -41,14 +42,12 @@
   (:import [org.apache.zookeeper data.ACL ZooDefs$Ids ZooDefs$Perms])
   (:import [org.yaml.snakeyaml Yaml]
            [org.yaml.snakeyaml.constructor SafeConstructor])
-  (:require [metrics.gauges :refer [defgauge]])
-  (:require [metrics.meters :refer [defmeter mark!]])
   (:import [org.apache.storm StormTimer])
   (:gen-class
     :methods [^{:static true} [launch [org.apache.storm.scheduler.ISupervisor] void]])
   (:require [clojure.string :as str]))
 
-(defmeter supervisor:num-workers-launched)
+(def supervisor:num-workers-launched (StormMetricsRegistry/registerMeter "supervisor:num-workers-launched"))
 
 (defmulti download-storm-code cluster-mode)
 (defmulti launch-worker (fn [supervisor & _] (cluster-mode (:conf supervisor))))
@@ -1322,8 +1321,9 @@
     (validate-distributed-mode! conf)
     (let [supervisor (mk-supervisor conf nil supervisor)]
       (Utils/addShutdownHookWithForceKillIn1Sec #(.shutdown supervisor)))
-    (defgauge supervisor:num-slots-used-gauge #(count (my-worker-ids conf)))
-    (start-metrics-reporters conf)))
+    (def supervisor:num-slots-used-gauge (StormMetricsRegistry/registerGauge "supervisor:num-slots-used-gauge"
+                                           #(count (my-worker-ids conf))))
+    (StormMetricsRegistry/startMetricsReporters conf)))
 
 (defn standalone-supervisor []
   (let [conf-atom (atom nil)

http://git-wip-us.apache.org/repos/asf/storm/blob/68e5d036/storm-core/src/clj/org/apache/storm/ui/core.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/org/apache/storm/ui/core.clj b/storm-core/src/clj/org/apache/storm/ui/core.clj
index 143ab14..e1ab71f 100644
--- a/storm-core/src/clj/org/apache/storm/ui/core.clj
+++ b/storm-core/src/clj/org/apache/storm/ui/core.clj
@@ -24,11 +24,11 @@
   (:use [org.apache.storm config util log stats converter])
   (:use [org.apache.storm.ui helpers])
   (:use [org.apache.storm.daemon [common :only [ACKER-COMPONENT-ID ACKER-INIT-STREAM-ID ACKER-ACK-STREAM-ID
-                                              ACKER-FAIL-STREAM-ID mk-authorization-handler
-                                              start-metrics-reporters]]])
+                                              ACKER-FAIL-STREAM-ID mk-authorization-handler]]])
   (:import [org.apache.storm.utils Time]
            [org.apache.storm.generated NimbusSummary]
-           [org.apache.storm.ui UIHelpers IConfigurator FilterConfiguration])
+           [org.apache.storm.ui UIHelpers IConfigurator FilterConfiguration]
+           [org.apache.storm.metric StormMetricsRegistry])
   (:use [clojure.string :only [blank? lower-case trim split]])
   (:import [org.apache.storm.generated ExecutorSpecificStats
             ExecutorStats ExecutorSummary ExecutorInfo TopologyInfo SpoutStats BoltStats
@@ -51,7 +51,6 @@
             [compojure.handler :as handler]
             [ring.util.response :as resp]
             [org.apache.storm.internal [thrift :as thrift]])
-  (:require [metrics.meters :refer [defmeter mark!]])
   (:import [org.apache.commons.lang StringEscapeUtils])
   (:import [org.apache.logging.log4j Level])
   (:import [org.eclipse.jetty.server Server])
@@ -63,24 +62,24 @@
 (def http-creds-handler (AuthUtils/GetUiHttpCredentialsPlugin *STORM-CONF*))
 (def STORM-VERSION (VersionInfo/getVersion))
 
-(defmeter ui:num-cluster-configuration-http-requests)
-(defmeter ui:num-cluster-summary-http-requests)
-(defmeter ui:num-nimbus-summary-http-requests)
-(defmeter ui:num-supervisor-summary-http-requests)
-(defmeter ui:num-all-topologies-summary-http-requests)
-(defmeter ui:num-topology-page-http-requests)
-(defmeter ui:num-build-visualization-http-requests)
-(defmeter ui:num-mk-visualization-data-http-requests)
-(defmeter ui:num-component-page-http-requests)
-(defmeter ui:num-log-config-http-requests)
-(defmeter ui:num-activate-topology-http-requests)
-(defmeter ui:num-deactivate-topology-http-requests)
-(defmeter ui:num-debug-topology-http-requests)
-(defmeter ui:num-component-op-response-http-requests)
-(defmeter ui:num-topology-op-response-http-requests)
-(defmeter ui:num-topology-op-response-http-requests)
-(defmeter ui:num-topology-op-response-http-requests)
-(defmeter ui:num-main-page-http-requests)
+(def ui:num-cluster-configuration-http-requests (StormMetricsRegistry/registerMeter "ui:num-cluster-configuration-http-requests")) 
+(def ui:num-cluster-summary-http-requests (StormMetricsRegistry/registerMeter "ui:num-cluster-summary-http-requests")) 
+(def ui:num-nimbus-summary-http-requests (StormMetricsRegistry/registerMeter "ui:num-nimbus-summary-http-requests")) 
+(def ui:num-supervisor-summary-http-requests (StormMetricsRegistry/registerMeter "ui:num-supervisor-summary-http-requests")) 
+(def ui:num-all-topologies-summary-http-requests (StormMetricsRegistry/registerMeter "ui:num-all-topologies-summary-http-requests")) 
+(def ui:num-topology-page-http-requests (StormMetricsRegistry/registerMeter "ui:num-topology-page-http-requests")) 
+(def ui:num-build-visualization-http-requests (StormMetricsRegistry/registerMeter "ui:num-build-visualization-http-requests")) 
+(def ui:num-mk-visualization-data-http-requests (StormMetricsRegistry/registerMeter "ui:num-mk-visualization-data-http-requests")) 
+(def ui:num-component-page-http-requests (StormMetricsRegistry/registerMeter "ui:num-component-page-http-requests")) 
+(def ui:num-log-config-http-requests (StormMetricsRegistry/registerMeter "ui:num-log-config-http-requests")) 
+(def ui:num-activate-topology-http-requests (StormMetricsRegistry/registerMeter "ui:num-activate-topology-http-requests")) 
+(def ui:num-deactivate-topology-http-requests (StormMetricsRegistry/registerMeter "ui:num-deactivate-topology-http-requests")) 
+(def ui:num-debug-topology-http-requests (StormMetricsRegistry/registerMeter "ui:num-debug-topology-http-requests")) 
+(def ui:num-component-op-response-http-requests (StormMetricsRegistry/registerMeter "ui:num-component-op-response-http-requests")) 
+(def ui:num-topology-op-response-http-requests (StormMetricsRegistry/registerMeter "ui:num-topology-op-response-http-requests")) 
+(def ui:num-topology-op-response-http-requests (StormMetricsRegistry/registerMeter "ui:num-topology-op-response-http-requests")) 
+(def ui:num-topology-op-response-http-requests (StormMetricsRegistry/registerMeter "ui:num-topology-op-response-http-requests")) 
+(def ui:num-main-page-http-requests (StormMetricsRegistry/registerMeter "ui:num-main-page-http-requests")) 
 
 (defn assert-authorized-user
   ([op]
@@ -940,11 +939,11 @@
 
 (defroutes main-routes
   (GET "/api/v1/cluster/configuration" [& m]
-    (mark! ui:num-cluster-configuration-http-requests)
+    (.mark ui:num-cluster-configuration-http-requests)
     (json-response (cluster-configuration)
                    (:callback m) :need-serialize false))
   (GET "/api/v1/cluster/summary" [:as {:keys [cookies servlet-request]} & m]
-    (mark! ui:num-cluster-summary-http-requests)
+    (.mark ui:num-cluster-summary-http-requests)
     (populate-context! servlet-request)
     (assert-authorized-user "getClusterInfo")
     (let [user (get-user-name servlet-request)]
@@ -952,7 +951,7 @@
                           "bugtracker-url" (*STORM-CONF* UI-PROJECT-BUGTRACKER-URL)
                           "central-log-url" (*STORM-CONF* UI-CENTRAL-LOGGING-URL)) (:callback m))))
   (GET "/api/v1/nimbus/summary" [:as {:keys [cookies servlet-request]} & m]
-    (mark! ui:num-nimbus-summary-http-requests)
+    (.mark ui:num-nimbus-summary-http-requests)
     (populate-context! servlet-request)
     (assert-authorized-user "getClusterInfo")
     (json-response (nimbus-summary) (:callback m)))
@@ -960,13 +959,13 @@
     (let [user (.getUserName http-creds-handler servlet-request)]
       (json-response (topology-history-info user) (:callback m))))
   (GET "/api/v1/supervisor/summary" [:as {:keys [cookies servlet-request]} & m]
-    (mark! ui:num-supervisor-summary-http-requests)
+    (.mark ui:num-supervisor-summary-http-requests)
     (populate-context! servlet-request)
     (assert-authorized-user "getClusterInfo")
     (json-response (assoc (supervisor-summary)
                      "logviewerPort" (*STORM-CONF* LOGVIEWER-PORT)) (:callback m)))
   (GET "/api/v1/topology/summary" [:as {:keys [cookies servlet-request]} & m]
-    (mark! ui:num-all-topologies-summary-http-requests)
+    (.mark ui:num-all-topologies-summary-http-requests)
     (populate-context! servlet-request)
     (assert-authorized-user "getClusterInfo")
     (json-response (all-topologies-summary) (:callback m)))
@@ -975,23 +974,23 @@
       (json-response {"hostPortList" (worker-host-port id)
                       "logviewerPort" (*STORM-CONF* LOGVIEWER-PORT)} (:callback m))))
   (GET "/api/v1/topology/:id" [:as {:keys [cookies servlet-request scheme]} id & m]
-    (mark! ui:num-topology-page-http-requests)
+    (.mark ui:num-topology-page-http-requests)
     (populate-context! servlet-request)
     (assert-authorized-user "getTopology" (topology-config id))
     (let [user (get-user-name servlet-request)]
       (json-response (topology-page id (:window m) (check-include-sys? (:sys m)) user (= scheme :https)) (:callback m))))
   (GET "/api/v1/topology/:id/visualization-init" [:as {:keys [cookies servlet-request]} id & m]
-    (mark! ui:num-build-visualization-http-requests)
+    (.mark ui:num-build-visualization-http-requests)
     (populate-context! servlet-request)
     (assert-authorized-user "getTopology" (topology-config id))
     (json-response (build-visualization id (:window m) (check-include-sys? (:sys m))) (:callback m)))
   (GET "/api/v1/topology/:id/visualization" [:as {:keys [cookies servlet-request]} id & m]
-    (mark! ui:num-mk-visualization-data-http-requests)
+    (.mark ui:num-mk-visualization-data-http-requests)
     (populate-context! servlet-request)
     (assert-authorized-user "getTopology" (topology-config id))
     (json-response (mk-visualization-data id (:window m) (check-include-sys? (:sys m))) (:callback m)))
   (GET "/api/v1/topology/:id/component/:component" [:as {:keys [cookies servlet-request scheme]} id component & m]
-    (mark! ui:num-component-page-http-requests)
+    (.mark ui:num-component-page-http-requests)
     (populate-context! servlet-request)
     (assert-authorized-user "getTopology" (topology-config id))
     (let [user (get-user-name servlet-request)]
@@ -999,12 +998,12 @@
           (component-page id component (:window m) (check-include-sys? (:sys m)) user (= scheme :https))
           (:callback m))))
   (GET "/api/v1/topology/:id/logconfig" [:as {:keys [cookies servlet-request]} id & m]
-    (mark! ui:num-log-config-http-requests)
+    (.mark ui:num-log-config-http-requests)
     (populate-context! servlet-request)
     (assert-authorized-user "getTopology" (topology-config id))
     (json-response (log-config id) (:callback m)))
   (POST "/api/v1/topology/:id/activate" [:as {:keys [cookies servlet-request]} id & m]
-    (mark! ui:num-activate-topology-http-requests)
+    (.mark ui:num-activate-topology-http-requests)
     (populate-context! servlet-request)
     (assert-authorized-user "activate" (topology-config id))
     (thrift/with-configured-nimbus-connection nimbus
@@ -1017,7 +1016,7 @@
         (log-message "Activating topology '" name "'")))
     (json-response (topology-op-response id "activate") (m "callback")))
   (POST "/api/v1/topology/:id/deactivate" [:as {:keys [cookies servlet-request]} id & m]
-    (mark! ui:num-deactivate-topology-http-requests)
+    (.mark ui:num-deactivate-topology-http-requests)
     (populate-context! servlet-request)
     (assert-authorized-user "deactivate" (topology-config id))
     (thrift/with-configured-nimbus-connection nimbus
@@ -1030,7 +1029,7 @@
         (log-message "Deactivating topology '" name "'")))
     (json-response (topology-op-response id "deactivate") (m "callback")))
   (POST "/api/v1/topology/:id/debug/:action/:spct" [:as {:keys [cookies servlet-request]} id action spct & m]
-    (mark! ui:num-debug-topology-http-requests)
+    (.mark ui:num-debug-topology-http-requests)
     (populate-context! servlet-request)
     (assert-authorized-user "debug" (topology-config id))
     (thrift/with-configured-nimbus-connection nimbus
@@ -1044,7 +1043,7 @@
         (log-message "Debug topology [" name "] action [" action "] sampling pct [" spct "]")))
     (json-response (topology-op-response id (str "debug/" action)) (m "callback")))
   (POST "/api/v1/topology/:id/component/:component/debug/:action/:spct" [:as {:keys [cookies servlet-request]} id component action spct & m]
-    (mark! ui:num-component-op-response-http-requests)
+    (.mark ui:num-component-op-response-http-requests)
     (populate-context! servlet-request)
     (assert-authorized-user "debug" (topology-config id))
     (thrift/with-configured-nimbus-connection nimbus
@@ -1058,7 +1057,7 @@
         (log-message "Debug topology [" name "] component [" component "] action [" action "] sampling pct [" spct "]")))
     (json-response (component-op-response id component (str "/debug/" action)) (m "callback")))
   (POST "/api/v1/topology/:id/rebalance/:wait-time" [:as {:keys [cookies servlet-request]} id wait-time & m]
-    (mark! ui:num-topology-op-response-http-requests)
+    (.mark ui:num-topology-op-response-http-requests)
     (populate-context! servlet-request)
     (assert-authorized-user "rebalance" (topology-config id))
     (thrift/with-configured-nimbus-connection nimbus
@@ -1079,7 +1078,7 @@
         (log-message "Rebalancing topology '" name "' with wait time: " wait-time " secs")))
     (json-response (topology-op-response id "rebalance") (m "callback")))
   (POST "/api/v1/topology/:id/kill/:wait-time" [:as {:keys [cookies servlet-request]} id wait-time & m]
-    (mark! ui:num-topology-op-response-http-requests)
+    (.mark ui:num-topology-op-response-http-requests)
     (populate-context! servlet-request)
     (assert-authorized-user "killTopology" (topology-config id))
     (thrift/with-configured-nimbus-connection nimbus
@@ -1094,7 +1093,7 @@
         (log-message "Killing topology '" name "' with wait time: " wait-time " secs")))
     (json-response (topology-op-response id "kill") (m "callback")))
   (POST "/api/v1/topology/:id/logconfig" [:as {:keys [cookies servlet-request]} id namedLoggerLevels & m]
-    (mark! ui:num-topology-op-response-http-requests)
+    (.mark ui:num-topology-op-response-http-requests)
     (populate-context! servlet-request)
     (assert-authorized-user "setLogConfig" (topology-config id))
     (thrift/with-configured-nimbus-connection
@@ -1233,7 +1232,7 @@
                           (m "callback")))))
 
   (GET "/" [:as {cookies :cookies}]
-    (mark! ui:num-main-page-http-requests)
+    (.mark ui:num-main-page-http-requests)
     (resp/redirect "/index.html"))
   (route/resources "/")
   (route/not-found "Page not found"))
@@ -1270,7 +1269,7 @@
           https-ts-type (conf UI-HTTPS-TRUSTSTORE-TYPE)
           https-want-client-auth (conf UI-HTTPS-WANT-CLIENT-AUTH)
           https-need-client-auth (conf UI-HTTPS-NEED-CLIENT-AUTH)]
-      (start-metrics-reporters conf)
+      (StormMetricsRegistry/startMetricsReporters conf)
       (UIHelpers/stormRunJetty  (int (conf UI-PORT))
                                 (conf UI-HOST)
                                 https-port

http://git-wip-us.apache.org/repos/asf/storm/blob/68e5d036/storm-core/src/clj/org/apache/storm/ui/helpers.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/org/apache/storm/ui/helpers.clj b/storm-core/src/clj/org/apache/storm/ui/helpers.clj
index 0ad5e3f..e681cfb 100644
--- a/storm-core/src/clj/org/apache/storm/ui/helpers.clj
+++ b/storm-core/src/clj/org/apache/storm/ui/helpers.clj
@@ -23,7 +23,8 @@
   (:use [org.apache.storm.util :only [clojurify-structure defnk not-nil?]])
   (:use [clj-time coerce format])
   (:import [org.apache.storm.generated ExecutorInfo ExecutorSummary]
-           [org.apache.storm.ui UIHelpers])
+           [org.apache.storm.ui UIHelpers]
+           [org.apache.storm.metric StormMetricsRegistry])
   (:import [org.apache.storm.logging.filters AccessLoggingFilter])
   (:import [java.util EnumSet]
            [java.net URLEncoder])
@@ -37,16 +38,15 @@
            (org.json.simple JSONValue))
   (:require [ring.util servlet])
   (:require [compojure.route :as route]
-            [compojure.handler :as handler])
-  (:require [metrics.meters :refer [defmeter mark!]]))
+            [compojure.handler :as handler]))
 
 ;; TODO this function and its callings will be replace when ui.core and logviewer and drpc move to Java
-(defmeter num-web-requests)
+(def num-web-requests (StormMetricsRegistry/registerMeter "num-web-requests"))
 (defn requests-middleware
   "Coda Hale metric for counting the number of web requests."
   [handler]
   (fn [req]
-    (mark! num-web-requests)
+    (.mark num-web-requests)
     (handler req)))
 
 ;; TODO this function and its callings will be replace when ui.core and logviewer move to Java

http://git-wip-us.apache.org/repos/asf/storm/blob/68e5d036/storm-core/src/jvm/org/apache/storm/metric/StormMetricsRegistry.java
----------------------------------------------------------------------
diff --git a/storm-core/src/jvm/org/apache/storm/metric/StormMetricsRegistry.java b/storm-core/src/jvm/org/apache/storm/metric/StormMetricsRegistry.java
index eef69d0..28f334b 100644
--- a/storm-core/src/jvm/org/apache/storm/metric/StormMetricsRegistry.java
+++ b/storm-core/src/jvm/org/apache/storm/metric/StormMetricsRegistry.java
@@ -22,13 +22,16 @@ import com.codahale.metrics.Gauge;
 import com.codahale.metrics.Meter;
 import com.codahale.metrics.Metric;
 import com.codahale.metrics.MetricRegistry;
+import java.util.Map;
+import org.apache.storm.daemon.metrics.MetricsUtils;
+import org.apache.storm.daemon.metrics.reporters.PreparableReporter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings("unchecked")
 public class StormMetricsRegistry {
     private static final Logger LOG = LoggerFactory.getLogger(StormMetricsRegistry.class);
-    private static final MetricRegistry metrics = new MetricRegistry();
+    public static final MetricRegistry DEFAULT_REGISTRY = new MetricRegistry();
 
     public static Meter registerMeter(String name) {
         Meter meter = new Meter();
@@ -51,13 +54,25 @@ public class StormMetricsRegistry {
         return register(name, gauge);
     }
 
+    public static void startMetricsReporters(Map stormConf) {
+        for (PreparableReporter reporter : MetricsUtils.getPreparableReporters(stormConf)) {
+            startMetricsReporter(reporter, stormConf);
+        }
+    }
+
+    private static void startMetricsReporter(PreparableReporter reporter, Map stormConf) {
+        reporter.prepare(StormMetricsRegistry.DEFAULT_REGISTRY, stormConf);
+        reporter.start();
+        LOG.info("Started statistics report plugin...");
+    }
+
     private static <T extends Metric> T register(String name, T metric) {
         T ret;
         try {
-            ret = metrics.register(name, metric);
+            ret = DEFAULT_REGISTRY.register(name, metric);
         } catch (IllegalArgumentException e) {
             // swallow IllegalArgumentException when the metric exists already
-            ret = (T) metrics.getMetrics().get(name);
+            ret = (T) DEFAULT_REGISTRY.getMetrics().get(name);
             if (ret == null) {
                 throw e;
             } else {