2016-01-31 70 views
1

我使用的是NewGaugeVec彙報我的指標:如何禁用普羅米修斯/ client_golang go_collector指標

elapsed := prometheus.NewGaugeVec(prometheus.GaugeOpts{ 
    Name: "gogrinder_elapsed_ms", 
    Help: "Current time elapsed of gogrinder teststep", 
}, []string{"teststep", "user", "iteration", "timestamp"}) 
prometheus.MustRegister(elapsed) 

所有工作正常,但我注意到,我的自定義導出包含普羅米修斯/ go_collector.go所有指標:

# HELP go_gc_duration_seconds A summary of the GC invocation durations. 
# TYPE go_gc_duration_seconds summary 
go_gc_duration_seconds{quantile="0"} 0.00041795300000000004 
go_gc_duration_seconds{quantile="0.25"} 0.00041795300000000004 
go_gc_duration_seconds{quantile="0.5"} 0.00041795300000000004 
... 

我懷疑這是一種默認行爲,但在文檔中找不到關於如何禁用該行爲的任何內容。有關如何配置我的自定義導出器以使這些默認指標消失的任何想法?

回答

2

這是目前不可能在Go客戶端,一旦https://github.com/prometheus/client_golang/issues/46完成,你將有辦法做到這一點。

一般而言,您希望您的自定義導出程序導出這些內容,但我知道其中目前沒有意義的唯一內容是snmp和blackbox導出程序。

順便說一句timestamp作爲一個標籤看起來很奇怪,如果你希望你應該使用日誌而不是指標。請參閱https://blog.raintank.io/logs-and-metrics-and-graphs-oh-my/ 普羅米修斯的方式是將時間戳記作爲值,而不是標籤。

+0

嗯,如果我沒有記錯的話prometheus聲稱不要自以爲是......如果說我爲我的盆栽植物保持一個溼度傳感器網絡。如果一家工廠報告其goroutines,gc統計等數量,我覺得很奇怪。很高興知道這已經在進行中。感謝指標文章! – mark

+0

普羅米修斯頗有見地,因爲很多乍一看似乎是個好主意的東西其實都是反模式。擁有所有關鍵系統指標非常重要,包括出口商本身的表現。通過刮擦自動獲得它幾乎總是正確的做法。某些盆栽植物可能屬於無意義的類別,您應根據具體結構分別監控出口商。 –

+0

看起來這個問題已經完成,但仍然無法禁用此功能。有'init()'(Golang稱之爲),它會無意識地啓動Go運行時和進程收集器:https://github.com/prometheus/client_golang/blob/69bb3870645f63c67a8dc9c9ef94585fd0d98c80/prometheus/registry.go#L51 –

0

作爲回答說「你不得不自己去做」,這似乎是目前唯一的選擇。

由於普羅米修斯是開源的,如果你真的需要這樣做;我相信你必須fork this one go_collector.go第28行和相關章節,或者更好地修改它以使所有這些指標成爲可選項,並製作PR,以便其他人也可以從中受益。

相關問題