Требуется ли согласованность описания метрик для http://github.com/prometheus/client_golang/prometheus/promhttp? - PullRequest
0 голосов
/ 04 мая 2020

Может кто-нибудь помочь мне разобраться со следующим фрагментом кода?

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 во время процесса очистки метрик или это просто строка комментария, которая нужна только для представления метрик, читаемых человеком?

может кто-нибудь может предложить обходной путь для моего использования -случае

...