【问题标题】:Prometheus metrics not showing up using prometheus go client使用 prometheus go 客户端未显示 Prometheus 指标
【发布时间】:2017-12-04 13:45:33
【问题描述】:

我正在使用 prometheus golang 客户端。代码 sn-p 如下。相同的构建工作正常。

问题是只显示 go 指标。缺少 xyz_* 指标。我将 initMetrics() 称为 main() 函数中的第一件事。

// Declaring prometheus metric counters
var (

  metric_prefix = "xyz_"

  xyzAPICallsCounter = prometheus.NewCounterVec(
    prometheus.CounterOpts{
      Name: metric_prefix + "api_calls_total" ,
      Help: "Number of calls to xyz endpoint",
    },
    []string{
      // Type of api call. Present values 
      "type",
      // Method can be "add", "delete", "getall", "get", "create", "ensure"
      "method",
      // Status is success or failed
      "status",
    },
  )

)

    func initMetrics(){
    prometheus.MustRegister(xyzAPICallsCounter)
    http.Handle("/metrics", promhttp.Handler())
    http.ListenAndServe(":8080", nil)
    }

编辑:我将 initMetrics() 函数更改为下面,现在根本没有指标和下面的错误消息。

func initMetrics(){
  var registry = prometheus.NewRegistry()
  registry.MustRegister(
    xyzAPICallsCounter,
  )
  http.Handle("/metrics", promhttp.HandlerFor(registry, promhttp.HandlerOpts{}))
  log.Fatal(http.ListenAndServe(":8080", nil))
}

【问题讨论】:

  • 错误消息的意思是它所说的,其他东西已经在使用端口 8080,因此它无法启动一个新的 Web 服务器侦听该端口。
  • 嗨@Adrian,您可以忽略错误部分。我确信这是我的一个错误。部署服务后,我运行了 kubectl exec -it -- / 。它一定会传递信息。
  • 那么现在没有指标,也没有错误消息?
  • 否则,:8080/metrics 端点仍然给我一个空响应。
  • 是的。没有错误消息和空响应。

标签: go metrics prometheus


【解决方案1】:

CounterVec 是计数器的集合,只有在其中包含计数器时才会导出。

请参阅code docsexample 了解更多信息。

【讨论】:

  • 我的代码中都有计数器增量。这些会起作用吗? xyzAPICallsCounter.WithLabelValues("pool","exists", "failed").Inc()
  • 在调用 Inc() 后,它们是否显示在指标端点上?
  • 不,他们没有。仅在第一种情况下使用指标。如果我定义自己的注册表,那么它是空白的。
  • 你能在你调用Inc()的地方显示更多代码吗?您能否更新您的 sn-p 以反映您如何创建/注册所有内容? go 指标肯定不会显示,因为您正在创建自己的注册表而不是使用默认注册表。
猜你喜欢
  • 1970-01-01
  • 2018-05-02
  • 1970-01-01
  • 1970-01-01
  • 2020-06-25
  • 2018-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多