度量标准不记录度量标准



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

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

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

在你的线程表达式中,试着改变第二行,使它读作:

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

哈哈!我发现这实际上是代码中的一个bug。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})

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

最新更新