【发布时间】: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