2016-01-31 9 views
1

Я использую NewGaugeVec сообщить свои показатели:Как отключить метрики go_collector в Прометее/client_golang

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

Хмм, если я правильно помню, прометей утверждает, что его не упрямишь ... Если говорить, что я поддерживаю сеть датчиков влажности для моих горшечных растений. Я думаю, что это странно, если завод сообщает о своем количестве goroutines, статистике gc и т. Д. Хорошо знать, что это уже сработало. Спасибо за статью метрики! – mark

+0

Прометей довольно самоуверен, так как многие вещи, которые кажутся хорошей идеей на первый взгляд, на самом деле являются анти-шаблонами. Важно иметь все ключевые показатели системы, и это включает в себя как сам экспортер. Получение этого автоматически со скрипом - это почти всегда правильная вещь. Что-то для растений в горшках может попасть в категорию, где это не имеет смысла, и вы должны следить за экспортером отдельно, в зависимости от точной архитектуры. –

+0

Похоже, эта проблема завершена, но до сих пор нет возможности ее отключить. Там 'init()' (Golang называет это) там, где беззаботно запускается Go runtime и Process collectors: https://github.com/prometheus/client_golang/blob/69bb3870645f63c67a8dc9c9ef94585fd0d98c80/prometheus/registry.go#L51 –

0

Это не очень полезно в качестве ответа, чтобы сказать «вам нужно пойти и сделать это самостоятельно», но пока это похоже на единственный вариант.

Поскольку Prometheus является открытым исходным кодом, и если вам действительно нужно это сделать; Я считаю, что вам нужно было бы развить this one go_collector.go line # 28 и связанные разделы, или еще лучше изменить его, чтобы сделать все эти показатели дополнительными и сделать PR, чтобы другие люди могли также извлечь выгоду из этого в будущем.