Files
karma/internal/verprobe/verprobe.go
2019-12-06 15:30:07 +00:00

39 lines
653 B
Go

package verprobe
import (
"io"
"github.com/prometheus/common/expfmt"
)
const (
buildInfoMetric = "alertmanager_build_info"
versionLabel = "version"
)
// Detect alertmanager version by reading metrics it exposes
func Detect(r io.Reader) (string, error) {
parser := expfmt.TextParser{}
metrics, err := parser.TextToMetricFamilies(r)
if err != nil {
return "", err
}
version := ""
for name, m := range metrics {
if name == buildInfoMetric {
for _, v := range m.Metric {
for _, l := range v.Label {
if l.GetName() == versionLabel {
version = l.GetValue()
break
}
}
}
}
}
return version, nil
}