Files
karma/internal/verprobe/verprobe.go
2022-04-16 14:57:02 +01:00

38 lines
722 B
Go

package verprobe
import (
"fmt"
"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
}
for name, m := range metrics {
if name == buildInfoMetric {
for _, v := range m.Metric {
for _, l := range v.Label {
if l.GetName() == versionLabel {
return l.GetValue(), nil
}
}
}
}
}
return "", fmt.Errorf("%s{%s=...} metric is not exported from alertmanger", buildInfoMetric, versionLabel)
}