forked from openshift/kubernetes-nmstate
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmetrics.go
More file actions
97 lines (79 loc) · 2.5 KB
/
metrics.go
File metadata and controls
97 lines (79 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/*
Copyright The Kubernetes NMState Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package monitoring
import (
"github.com/prometheus/client_golang/prometheus"
pgo "github.com/prometheus/client_model/go"
"k8s.io/utils/ptr"
)
var (
AppliedFeaturesOpts = prometheus.GaugeOpts{
Name: "kubernetes_nmstate_features_applied",
Help: "Number of nmstate features applied labeled by its name",
}
NetworkInterfacesOpts = prometheus.GaugeOpts{
Name: "kubernetes_nmstate_network_interfaces",
Help: "Number of network interfaces labeled by its type",
}
NetworkRoutesOpts = prometheus.GaugeOpts{
Name: "kubernetes_nmstate_routes",
Help: "Number of network routes labeled by node, IP stack and type (static/dynamic)",
}
PolicyStatusOpts = prometheus.GaugeOpts{
Name: "kubernetes_nmstate_policies_status",
Help: "Number of NodeNetworkConfigurationPolicies labeled by their status condition",
}
EnactmentStatusOpts = prometheus.GaugeOpts{
Name: "kubernetes_nmstate_enactments_status",
Help: "Number of NodeNetworkConfigurationEnactments labeled by node and status condition",
}
AppliedFeatures = prometheus.NewGaugeVec(
AppliedFeaturesOpts,
[]string{"name"},
)
NetworkInterfaces = prometheus.NewGaugeVec(
NetworkInterfacesOpts,
[]string{"type", "node"},
)
NetworkRoutes = prometheus.NewGaugeVec(
NetworkRoutesOpts,
[]string{"node", "ip_stack", "type"},
)
PolicyStatus = prometheus.NewGaugeVec(
PolicyStatusOpts,
[]string{"status"},
)
EnactmentStatus = prometheus.NewGaugeVec(
EnactmentStatusOpts,
[]string{"node", "status"},
)
gaugeOpts = []prometheus.GaugeOpts{
AppliedFeaturesOpts,
NetworkInterfacesOpts,
NetworkRoutesOpts,
PolicyStatusOpts,
EnactmentStatusOpts,
}
)
func Families() []pgo.MetricFamily {
metricFamilies := []pgo.MetricFamily{}
for _, gauge := range gaugeOpts {
metricTypeGauge := pgo.MetricType_GAUGE
metricFamilies = append(metricFamilies, pgo.MetricFamily{
Name: ptr.To(gauge.Name),
Help: ptr.To(gauge.Help),
Type: &metricTypeGauge,
})
}
return metricFamilies
}