1 回答
TA贡献1833条经验 获得超4个赞
我想到了。我必须在调用 NewDesc 方法的地方声明标签,然后在 MustNewConstMetric 方法中传递值
这是带有“主机名”标签的新“newCollector”。
func newCollector() *cmdCollector {
return &cmdCollector{
cmdMetric: prometheus.NewDesc("cmd_result",
"Shows the cmd result",
[]string{"hostname"}, nil,
),
}
}
值得注意的是,我只是在这里添加“变量标签”。最后一个 '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)
- 1 回答
- 0 关注
- 189 浏览
添加回答
举报