1
16
17 package metrics
18
19 import (
20 "sync"
21
22 "k8s.io/component-base/metrics"
23 "k8s.io/component-base/metrics/legacyregistry"
24 )
25
26
27
28 const EndpointSliceMirroringSubsystem = "endpoint_slice_mirroring_controller"
29
30 var (
31
32
33 EndpointsAddedPerSync = metrics.NewHistogramVec(
34 &metrics.HistogramOpts{
35 Subsystem: EndpointSliceMirroringSubsystem,
36 Name: "endpoints_added_per_sync",
37 Help: "Number of endpoints added on each Endpoints sync",
38 StabilityLevel: metrics.ALPHA,
39 Buckets: metrics.ExponentialBuckets(2, 2, 15),
40 },
41 []string{},
42 )
43
44
45 EndpointsUpdatedPerSync = metrics.NewHistogramVec(
46 &metrics.HistogramOpts{
47 Subsystem: EndpointSliceMirroringSubsystem,
48 Name: "endpoints_updated_per_sync",
49 Help: "Number of endpoints updated on each Endpoints sync",
50 StabilityLevel: metrics.ALPHA,
51 Buckets: metrics.ExponentialBuckets(2, 2, 15),
52 },
53 []string{},
54 )
55
56
57 EndpointsRemovedPerSync = metrics.NewHistogramVec(
58 &metrics.HistogramOpts{
59 Subsystem: EndpointSliceMirroringSubsystem,
60 Name: "endpoints_removed_per_sync",
61 Help: "Number of endpoints removed on each Endpoints sync",
62 StabilityLevel: metrics.ALPHA,
63 Buckets: metrics.ExponentialBuckets(2, 2, 15),
64 },
65 []string{},
66 )
67
68
69 AddressesSkippedPerSync = metrics.NewHistogramVec(
70 &metrics.HistogramOpts{
71 Subsystem: EndpointSliceMirroringSubsystem,
72 Name: "addresses_skipped_per_sync",
73 Help: "Number of addresses skipped on each Endpoints sync due to being invalid or exceeding MaxEndpointsPerSubset",
74 StabilityLevel: metrics.ALPHA,
75 Buckets: metrics.ExponentialBuckets(2, 2, 15),
76 },
77 []string{},
78 )
79
80
81 EndpointsSyncDuration = metrics.NewHistogramVec(
82 &metrics.HistogramOpts{
83 Subsystem: EndpointSliceMirroringSubsystem,
84 Name: "endpoints_sync_duration",
85 Help: "Duration of syncEndpoints() in seconds",
86 StabilityLevel: metrics.ALPHA,
87 Buckets: metrics.ExponentialBuckets(0.001, 2, 15),
88 },
89 []string{},
90 )
91
92 EndpointsDesired = metrics.NewGaugeVec(
93 &metrics.GaugeOpts{
94 Subsystem: EndpointSliceMirroringSubsystem,
95 Name: "endpoints_desired",
96 Help: "Number of endpoints desired",
97 StabilityLevel: metrics.ALPHA,
98 },
99 []string{},
100 )
101
102 NumEndpointSlices = metrics.NewGaugeVec(
103 &metrics.GaugeOpts{
104 Subsystem: EndpointSliceMirroringSubsystem,
105 Name: "num_endpoint_slices",
106 Help: "Number of EndpointSlices",
107 StabilityLevel: metrics.ALPHA,
108 },
109 []string{},
110 )
111
112
113 DesiredEndpointSlices = metrics.NewGaugeVec(
114 &metrics.GaugeOpts{
115 Subsystem: EndpointSliceMirroringSubsystem,
116 Name: "desired_endpoint_slices",
117 Help: "Number of EndpointSlices that would exist with perfect endpoint allocation",
118 StabilityLevel: metrics.ALPHA,
119 },
120 []string{},
121 )
122
123 EndpointSliceChanges = metrics.NewCounterVec(
124 &metrics.CounterOpts{
125 Subsystem: EndpointSliceMirroringSubsystem,
126 Name: "changes",
127 Help: "Number of EndpointSlice changes",
128 StabilityLevel: metrics.ALPHA,
129 },
130 []string{"operation"},
131 )
132 )
133
134 var registerMetrics sync.Once
135
136
137 func RegisterMetrics() {
138 registerMetrics.Do(func() {
139 legacyregistry.MustRegister(EndpointsAddedPerSync)
140 legacyregistry.MustRegister(EndpointsUpdatedPerSync)
141 legacyregistry.MustRegister(EndpointsRemovedPerSync)
142 legacyregistry.MustRegister(AddressesSkippedPerSync)
143 legacyregistry.MustRegister(EndpointsSyncDuration)
144 legacyregistry.MustRegister(EndpointsDesired)
145 legacyregistry.MustRegister(NumEndpointSlices)
146 legacyregistry.MustRegister(DesiredEndpointSlices)
147 legacyregistry.MustRegister(EndpointSliceChanges)
148 })
149 }
150
View as plain text