metrics clojure ring middleware不记录指标

时间:2014-07-22 15:42:57

标签: clojure compojure codahale-metrics

在我的处理程序中,我定义了以下内容:

(def reg (new-registry))

(def app (-> app-routes 
         (expose-metrics-as-json)
         (instrument reg)))

如果我去/metrics我只看到一个空的json对象。我错过了什么?此外,关于我如何在控制台上报告的文档还不清楚,文档中的report-to-console似乎不再使用,而是有记者,但我找不到任何关于你如何使用的文档记者。

编辑:

我已经看到通过查看以下内容来添加和记录指标:

(meters/rates ((all-metrics reg) "ring.responses.rate.2xx"))

结果如预期,如:

{1 0.06325196458537237, 5 0.01824839591203641, 15 0.006466051961211013, :total 6}

所以看来虽然expose-metrics-as-json正在创建一个端点,但指标并没有被添加到它中。

2 个答案:

答案 0 :(得分:3)

哈!我发现这实际上是代码中的一个错误。 https://github.com/sjl/metrics-clojure/blob/master/metrics-clojure-ring/src/metrics/ring/expose.clj

([handler uri registry]
    (expose-metrics-as-json handler uri default-registry {:pretty-print? false}))

这会忽略registry参数。我通过使用

来完成工作
(expose-metrics-as-json "/metrics" reg {:pretty-print? false})

我将修复并创建拉取请求。

答案 1 :(得分:2)

您没有将注册表传递给expose-metrics-as-json。它回退到默认注册表。

在线程表达式中,尝试更改第二行,使其显示为:

(def app (-> app-routes
             (expose-metrics-as-json "/metrics" reg)
             (instrument reg)))