Может кто-нибудь помочь мне разобраться со следующим фрагментом кода?
https://github.com/prometheus/client_golang/blame/6edbbd9e560190e318cdc5b4d3e630b442858380/prometheus/registry.go#L914
func checkDescConsistency(
metricFamily *dto.MetricFamily,
dtoMetric *dto.Metric,
desc *Desc,
) error {
// Desc help consistency with metric family help.
if metricFamily.GetHelp() != desc.help {
return fmt.Errorf("collected metric %s %s has help %q but should have %q",
metricFamily.GetName(), dtoMetric, metricFamily.GetHelp(), desc.help,
)
}
, почему нам нужно согласованность с полем desc.help"
в метриках на prometheus/golang_client
?
Я пытаюсь объяснить свой вариант использования:
Я реализую «Экспорт показателей агрегации», который асинхронно обрабатывает набор одинаковых показателей из разных пользовательских источников, который не может поддерживать протокол очистки Prometheus для каждого показателя c имеют одинаковый набор меток, но могут иметь различное описание метри c на основе развернутой версии моего пользовательского метри c source
Я регистрирую каждое значение metri c с помощью следующего кода:
m, err := prometheus.NewConstMetric(
newDescription(name, desc, labels),
metricType,
floatValue,
labelValues...,
)
...
func newDescription(name, help string, labels []string) *prometheus.Desc {
return prometheus.NewDesc(
prometheus.BuildFQName(namespace, subsystem, name),
help,
labels,
nil,
)
}
и попробуйте обработать /metrics
конечную точку с помощью promhttp.Handler()
+ http.ListenAndServe()
функций и получите ошибку 500, когда Promhttp проверяет согласованность зарегистрированных метрик
основной вопрос
- согласованность для поля "des c .help" требуется сервер Prometheus во время процесса очистки метрик или это просто строка комментария, которая нужна только для представления метрик, читаемых человеком?
может кто-нибудь может предложить обходной путь для моего использования -случае