Skip to content

Commit

Permalink
add new kube_node_state_address metric that includes mutiple address/…
Browse files Browse the repository at this point in the history
…types
  • Loading branch information
stonith committed Dec 6, 2023
1 parent 98b38ba commit 0a9d3d2
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 0 deletions.
24 changes: 24 additions & 0 deletions internal/store/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ func nodeMetricFamilies(allowAnnotationsList, allowLabelsList []string) []genera
createNodeStatusAllocatableFamilyGenerator(),
createNodeStatusCapacityFamilyGenerator(),
createNodeStatusConditionFamilyGenerator(),
createNodeStateAddressFamilyGenerator(),
}
}

Expand Down Expand Up @@ -105,6 +106,29 @@ func createNodeCreatedFamilyGenerator() generator.FamilyGenerator {
)
}

func createNodeStateAddressFamilyGenerator() generator.FamilyGenerator {
return *generator.NewFamilyGeneratorWithStability(
"kube_node_state_address",
"Node address information.",
metric.Gauge,
basemetrics.ALPHA,
"",
wrapNodeFunc(func(n *v1.Node) *metric.Family {
ms := []*metric.Metric{}
for _, address := range n.Status.Addresses {
ms = append(ms, &metric.Metric{
LabelKeys: []string{"type", "address"},
LabelValues: []string{string(address.Type), address.Address},
Value: 1,
})
}
return &metric.Family{
Metrics: ms,
}
}),
)
}

func createNodeInfoFamilyGenerator() generator.FamilyGenerator {
return *generator.NewFamilyGeneratorWithStability(
"kube_node_info",
Expand Down
24 changes: 24 additions & 0 deletions internal/store/node_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,30 @@ func TestNodeStore(t *testing.T) {
`,
MetricNames: []string{"kube_node_spec_taint"},
},
{
Obj: &v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "127.0.0.1",
},
Status: v1.NodeStatus{
Addresses: []v1.NodeAddress{
{Type: "InternalIP", Address: "1.2.3.4"},
{Type: "InternalIP", Address: "fc00::"},
{Type: "ExternalIP", Address: "5.6.7.8"},
{Type: "ExternalIP", Address: "2001:db8::"},
},
},
},
Want: `
# HELP kube_node_state_address Node address information.
# TYPE kube_node_state_address gauge
kube_node_state_address{node="127.0.0.1",type="InternalIP",address="1.2.3.4"} 1
kube_node_state_address{node="127.0.0.1",type="InternalIP",address="fc00::"} 1
kube_node_state_address{node="127.0.0.1",type="ExternalIP",address="5.6.7.8"} 1
kube_node_state_address{node="127.0.0.1",type="ExternalIP",address="2001:db8::"} 1
`,
MetricNames: []string{"kube_node_state_address"},
},
}
for i, c := range cases {
c.Func = generator.ComposeMetricGenFuncs(nodeMetricFamilies(nil, nil))
Expand Down

0 comments on commit 0a9d3d2

Please sign in to comment.