diff --git a/pkg/exporter/consul_exporter.go b/pkg/exporter/consul_exporter.go index 1be53e7..d57bfae 100644 --- a/pkg/exporter/consul_exporter.go +++ b/pkg/exporter/consul_exporter.go @@ -59,12 +59,12 @@ var ( memberStatus = prometheus.NewDesc( prometheus.BuildFQName(namespace, "", "serf_lan_member_status"), "Status of member in the cluster. 1=Alive, 2=Leaving, 3=Left, 4=Failed.", - []string{"member"}, nil, + []string{"member", "build"}, nil, ) memberWanStatus = prometheus.NewDesc( prometheus.BuildFQName(namespace, "", "serf_wan_member_status"), "Status of member in the wan cluster. 1=Alive, 2=Leaving, 3=Left, 4=Failed.", - []string{"member", "dc"}, nil, + []string{"member", "dc", "build"}, nil, ) serviceCount = prometheus.NewDesc( prometheus.BuildFQName(namespace, "", "catalog_services"), @@ -275,8 +275,10 @@ func (e *Exporter) collectMembersMetric(ch chan<- prometheus.Metric) bool { return false } for _, entry := range members { + build := strings.Split(entry.Tags["build"], ":")[0] ch <- prometheus.MustNewConstMetric( - memberStatus, prometheus.GaugeValue, float64(entry.Status), entry.Name, + memberStatus, prometheus.GaugeValue, float64(entry.Status), + entry.Name, build, ) } return true @@ -289,8 +291,10 @@ func (e *Exporter) collectMembersWanMetric(ch chan<- prometheus.Metric) bool { return false } for _, entry := range members { + build := strings.Split(entry.Tags["build"], ":")[0] ch <- prometheus.MustNewConstMetric( - memberWanStatus, prometheus.GaugeValue, float64(entry.Status), entry.Name, entry.Tags["dc"], + memberWanStatus, prometheus.GaugeValue, float64(entry.Status), + entry.Name, entry.Tags["dc"], build, ) } return true diff --git a/pkg/exporter/consul_exporter_test.go b/pkg/exporter/consul_exporter_test.go index 319e6c9..b876053 100644 --- a/pkg/exporter/consul_exporter_test.go +++ b/pkg/exporter/consul_exporter_test.go @@ -88,7 +88,7 @@ consul_raft_leader 1 consul_raft_peers 1 # HELP consul_serf_lan_member_status Status of member in the cluster. 1=Alive, 2=Leaving, 3=Left, 4=Failed. # TYPE consul_serf_lan_member_status gauge -consul_serf_lan_member_status{member="{{ .Node }}"} 1 +consul_serf_lan_member_status{build="1.8.19",member="{{ .Node }}"} 1 # HELP consul_serf_lan_members How many members are in the cluster. # TYPE consul_serf_lan_members gauge consul_serf_lan_members 1