From 6082c0335c7cfb33c84f8aebe9e4eb44d8ebaae9 Mon Sep 17 00:00:00 2001 From: Mario Constanti Date: Wed, 22 Jun 2022 13:35:33 +0200 Subject: [PATCH] kube_endpoint_address now has a ready label Signed-off-by: Mario Constanti --- docs/endpoint-metrics.md | 2 +- internal/store/endpoint.go | 8 ++++---- internal/store/endpoint_test.go | 36 ++++++++++++++++----------------- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/endpoint-metrics.md b/docs/endpoint-metrics.md index db69887d..6afc8174 100644 --- a/docs/endpoint-metrics.md +++ b/docs/endpoint-metrics.md @@ -9,4 +9,4 @@ | kube_endpoint_labels | Gauge | `endpoint`=<endpoint-name>
`namespace`=<endpoint-namespace>
`label_ENDPOINT_LABEL`=<ENDPOINT_LABEL> | STABLE | | kube_endpoint_created | Gauge | `endpoint`=<endpoint-name>
`namespace`=<endpoint-namespace> | STABLE | | kube_endpoint_ports | Gauge | `endpoint`=<endpoint-name>
`namespace`=<endpoint-namespace>
`port_name`=<endpoint-port-name>
`port_protocol`=<endpoint-port-protocol>
`port_number`=<endpoint-port-number> | EXPERIMENTAL | -| kube_endpoint_address | Gauge | `endpoint`=<endpoint-name>
`namespace`=<endpoint-namespace>
`available_ip`=<endpoint-available-ip>
`unavailable_ip`=<endpoint-unavailable_ip> | EXPERIMENTAL | +| kube_endpoint_address | Gauge | `endpoint`=<endpoint-name>
`namespace`=<endpoint-namespace>
`ip`=<endpoint-ip>
`ready`=<true if available, false if unavailalbe> | EXPERIMENTAL | diff --git a/internal/store/endpoint.go b/internal/store/endpoint.go index 785e57e8..a2ab9943 100644 --- a/internal/store/endpoint.go +++ b/internal/store/endpoint.go @@ -161,15 +161,15 @@ func endpointMetricFamilies(allowAnnotationsList, allowLabelsList []string) []ge for _, s := range e.Subsets { for _, available := range s.Addresses { ms = append(ms, &metric.Metric{ - LabelValues: []string{available.IP}, - LabelKeys: []string{"available_ip"}, + LabelValues: []string{available.IP, "true"}, + LabelKeys: []string{"ip", "ready"}, Value: 1, }) } for _, notReadyAddresses := range s.NotReadyAddresses { ms = append(ms, &metric.Metric{ - LabelValues: []string{notReadyAddresses.IP}, - LabelKeys: []string{"unavailable_ip"}, + LabelValues: []string{notReadyAddresses.IP, "false"}, + LabelKeys: []string{"ip", "ready"}, Value: 1, }) } diff --git a/internal/store/endpoint_test.go b/internal/store/endpoint_test.go index 838b055b..69af58e7 100644 --- a/internal/store/endpoint_test.go +++ b/internal/store/endpoint_test.go @@ -101,12 +101,12 @@ func TestEndpointStore(t *testing.T) { kube_endpoint_ports{endpoint="test-endpoint",namespace="default",port_name="prometheus",port_protocol="TCP",port_number="9090"} 1 kube_endpoint_ports{endpoint="test-endpoint",namespace="default",port_name="syslog",port_protocol="UDP",port_number="1234"} 1 kube_endpoint_ports{endpoint="test-endpoint",namespace="default",port_name="syslog-tcp",port_protocol="TCP",port_number="5678"} 1 - kube_endpoint_address{endpoint="test-endpoint",namespace="default",available_ip="127.0.0.1"} 1 - kube_endpoint_address{endpoint="test-endpoint",namespace="default",available_ip="10.0.0.1"} 1 - kube_endpoint_address{endpoint="test-endpoint",namespace="default",available_ip="172.22.23.202"} 1 - kube_endpoint_address{endpoint="test-endpoint",namespace="default",unavailable_ip="192.168.1.3"} 1 - kube_endpoint_address{endpoint="test-endpoint",namespace="default",unavailable_ip="192.168.2.2"} 1 - kube_endpoint_address{endpoint="test-endpoint",namespace="default",unavailable_ip="10.0.0.10"} 1 + kube_endpoint_address{endpoint="test-endpoint",namespace="default",ip="127.0.0.1",ready="true"} 1 + kube_endpoint_address{endpoint="test-endpoint",namespace="default",ip="10.0.0.1",ready="true"} 1 + kube_endpoint_address{endpoint="test-endpoint",namespace="default",ip="172.22.23.202",ready="true"} 1 + kube_endpoint_address{endpoint="test-endpoint",namespace="default",ip="192.168.1.3",ready="false"} 1 + kube_endpoint_address{endpoint="test-endpoint",namespace="default",ip="192.168.2.2",ready="false"} 1 + kube_endpoint_address{endpoint="test-endpoint",namespace="default",ip="10.0.0.10",ready="false"} 1 `, }, { @@ -141,9 +141,9 @@ func TestEndpointStore(t *testing.T) { kube_endpoint_info{endpoint="single-port-endpoint",namespace="default"} 1 kube_endpoint_labels{endpoint="single-port-endpoint",namespace="default"} 1 kube_endpoint_ports{endpoint="single-port-endpoint",namespace="default",port_name="",port_number="8080",port_protocol="TCP"} 1 - kube_endpoint_address{endpoint="single-port-endpoint",namespace="default",available_ip="127.0.0.1"} 1 - kube_endpoint_address{endpoint="single-port-endpoint",namespace="default",available_ip="10.0.0.1"} 1 - kube_endpoint_address{endpoint="single-port-endpoint",namespace="default",unavailable_ip="10.0.0.10"} 1 + kube_endpoint_address{endpoint="single-port-endpoint",namespace="default",ip="127.0.0.1",ready="true"} 1 + kube_endpoint_address{endpoint="single-port-endpoint",namespace="default",ip="10.0.0.1",ready="true"} 1 + kube_endpoint_address{endpoint="single-port-endpoint",namespace="default",ip="10.0.0.10",ready="false"} 1 `, }, } @@ -234,12 +234,12 @@ func TestEndpointStoreWithLabels(t *testing.T) { kube_endpoint_ports{endpoint="test-endpoint",namespace="default",port_name="prometheus",port_protocol="TCP",port_number="9090"} 1 kube_endpoint_ports{endpoint="test-endpoint",namespace="default",port_name="syslog",port_protocol="UDP",port_number="1234"} 1 kube_endpoint_ports{endpoint="test-endpoint",namespace="default",port_name="syslog-tcp",port_protocol="TCP",port_number="5678"} 1 - kube_endpoint_address{endpoint="test-endpoint",namespace="default",available_ip="127.0.0.1"} 1 - kube_endpoint_address{endpoint="test-endpoint",namespace="default",available_ip="10.0.0.1"} 1 - kube_endpoint_address{endpoint="test-endpoint",namespace="default",available_ip="172.22.23.202"} 1 - kube_endpoint_address{endpoint="test-endpoint",namespace="default",unavailable_ip="192.168.1.3"} 1 - kube_endpoint_address{endpoint="test-endpoint",namespace="default",unavailable_ip="192.168.2.2"} 1 - kube_endpoint_address{endpoint="test-endpoint",namespace="default",unavailable_ip="10.0.0.10"} 1 + kube_endpoint_address{endpoint="test-endpoint",namespace="default",ip="127.0.0.1",ready="true"} 1 + kube_endpoint_address{endpoint="test-endpoint",namespace="default",ip="10.0.0.1",ready="true"} 1 + kube_endpoint_address{endpoint="test-endpoint",namespace="default",ip="172.22.23.202",ready="true"} 1 + kube_endpoint_address{endpoint="test-endpoint",namespace="default",ip="192.168.1.3",ready="false"} 1 + kube_endpoint_address{endpoint="test-endpoint",namespace="default",ip="192.168.2.2",ready="false"} 1 + kube_endpoint_address{endpoint="test-endpoint",namespace="default",ip="10.0.0.10",ready="false"} 1 `, }, { @@ -277,9 +277,9 @@ func TestEndpointStoreWithLabels(t *testing.T) { kube_endpoint_info{endpoint="single-port-endpoint",namespace="default"} 1 kube_endpoint_labels{endpoint="single-port-endpoint",label_app="single-foobar",namespace="default"} 1 kube_endpoint_ports{endpoint="single-port-endpoint",namespace="default",port_name="",port_number="8080",port_protocol="TCP"} 1 - kube_endpoint_address{endpoint="single-port-endpoint",namespace="default",available_ip="127.0.0.1"} 1 - kube_endpoint_address{endpoint="single-port-endpoint",namespace="default",available_ip="10.0.0.1"} 1 - kube_endpoint_address{endpoint="single-port-endpoint",namespace="default",unavailable_ip="10.0.0.10"} 1 + kube_endpoint_address{endpoint="single-port-endpoint",namespace="default",ip="127.0.0.1",ready="true"} 1 + kube_endpoint_address{endpoint="single-port-endpoint",namespace="default",ip="10.0.0.1",ready="true"} 1 + kube_endpoint_address{endpoint="single-port-endpoint",namespace="default",ip="10.0.0.10",ready="false"} 1 `, }, }