Skip to content

Commit 0a9d3d2

Browse files
committed
add new kube_node_state_address metric that includes mutiple address/types
1 parent 98b38ba commit 0a9d3d2

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

internal/store/node.go

+24
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ func nodeMetricFamilies(allowAnnotationsList, allowLabelsList []string) []genera
5555
createNodeStatusAllocatableFamilyGenerator(),
5656
createNodeStatusCapacityFamilyGenerator(),
5757
createNodeStatusConditionFamilyGenerator(),
58+
createNodeStateAddressFamilyGenerator(),
5859
}
5960
}
6061

@@ -105,6 +106,29 @@ func createNodeCreatedFamilyGenerator() generator.FamilyGenerator {
105106
)
106107
}
107108

109+
func createNodeStateAddressFamilyGenerator() generator.FamilyGenerator {
110+
return *generator.NewFamilyGeneratorWithStability(
111+
"kube_node_state_address",
112+
"Node address information.",
113+
metric.Gauge,
114+
basemetrics.ALPHA,
115+
"",
116+
wrapNodeFunc(func(n *v1.Node) *metric.Family {
117+
ms := []*metric.Metric{}
118+
for _, address := range n.Status.Addresses {
119+
ms = append(ms, &metric.Metric{
120+
LabelKeys: []string{"type", "address"},
121+
LabelValues: []string{string(address.Type), address.Address},
122+
Value: 1,
123+
})
124+
}
125+
return &metric.Family{
126+
Metrics: ms,
127+
}
128+
}),
129+
)
130+
}
131+
108132
func createNodeInfoFamilyGenerator() generator.FamilyGenerator {
109133
return *generator.NewFamilyGeneratorWithStability(
110134
"kube_node_info",

internal/store/node_test.go

+24
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,30 @@ func TestNodeStore(t *testing.T) {
274274
`,
275275
MetricNames: []string{"kube_node_spec_taint"},
276276
},
277+
{
278+
Obj: &v1.Node{
279+
ObjectMeta: metav1.ObjectMeta{
280+
Name: "127.0.0.1",
281+
},
282+
Status: v1.NodeStatus{
283+
Addresses: []v1.NodeAddress{
284+
{Type: "InternalIP", Address: "1.2.3.4"},
285+
{Type: "InternalIP", Address: "fc00::"},
286+
{Type: "ExternalIP", Address: "5.6.7.8"},
287+
{Type: "ExternalIP", Address: "2001:db8::"},
288+
},
289+
},
290+
},
291+
Want: `
292+
# HELP kube_node_state_address Node address information.
293+
# TYPE kube_node_state_address gauge
294+
kube_node_state_address{node="127.0.0.1",type="InternalIP",address="1.2.3.4"} 1
295+
kube_node_state_address{node="127.0.0.1",type="InternalIP",address="fc00::"} 1
296+
kube_node_state_address{node="127.0.0.1",type="ExternalIP",address="5.6.7.8"} 1
297+
kube_node_state_address{node="127.0.0.1",type="ExternalIP",address="2001:db8::"} 1
298+
`,
299+
MetricNames: []string{"kube_node_state_address"},
300+
},
277301
}
278302
for i, c := range cases {
279303
c.Func = generator.ComposeMetricGenFuncs(nodeMetricFamilies(nil, nil))

0 commit comments

Comments
 (0)