【问题标题】:metrics clojure ring middleware not recording metrics指标 clojure ring 中间件不记录指标
【发布时间】:2014-09-13 12:56:21
【问题描述】:

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

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

【问题讨论】:

    标签: clojure compojure codahale-metrics


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 我在发布问题后尝试了此操作,但没有成功。我粘贴了你的代码。中间件必须被拾取,因为指标 url 是公开的,它只是没有任何指标。
      猜你喜欢
      • 2022-12-14
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      • 1970-01-01
      • 2023-01-05
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      相关资源
      最近更新 更多