在我的处理器中,我定义了以下内容:
(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})
我将修复并创建一个拉请求。