1

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

(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 正在创建一个端点,但指标并没有被添加到其中。

4

2 回答 2

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})

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

于 2014-07-23T13:10:26.277 回答
2

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

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

(def app (-> app-routes
             (expose-metrics-as-json "/metrics" reg)
             (instrument reg)))
于 2014-07-22T17:54:09.653 回答