Я понял это.Мне пришлось объявить метку, где я вызывал метод NewDesc, а затем передать значение в метод MustNewConstMetric
Вот мой новый "newCollector" с меткой "hostname".
func newCollector() *cmdCollector {
return &cmdCollector{
cmdMetric: prometheus.NewDesc("cmd_result",
"Shows the cmd result",
[]string{"hostname"}, nil,
),
}
}
Стоит отметить, что я здесь только добавляю «переменные метки».Это последнее «ноль» для постоянных меток.
Вы можете добавить любое количество элементов, например, так ...
[]string{"hostname", "another_label", "and_another_label"}
Это описано здесь: https://godoc.org/github.com/prometheus/client_golang/prometheus#NewDesc
Далее я могу добавить эти значения при вызовеМетод "MustNewConstMetric".
ch <- prometheus.MustNewConstMetric(collector.cmdMetric, prometheus.GaugeValue, metricValue, hostname)
Весь блок ...
func (collector *cmdCollector) Collect(ch chan<- prometheus.Metric) {
var metricValue float64
command := string("date +%s")
cmdResult := exeCmd(command)
metricValue = cmdResult
ch <- prometheus.MustNewConstMetric(collector.cmdMetric, prometheus.GaugeValue, metricValue, hostname)
}
Если я передавал несколько меток;такой как мой пример выше, это выглядело бы больше как это ...
ch <- prometheus.MustNewConstMetric(collector.cmdMetric, prometheus.GaugeValue, metricValue, hostname, anotherLabel", "andAnotherLabel)
Это покрыто здесь: https://godoc.org/github.com/prometheus/client_golang/prometheus#MustNewConstMetric