k8s.io/apiserver@v0.29.3/pkg/storage/cacher/metrics/metrics.go (about) 1 /* 2 Copyright 2021 The Kubernetes Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package metrics 18 19 import ( 20 "sync" 21 22 compbasemetrics "k8s.io/component-base/metrics" 23 "k8s.io/component-base/metrics/legacyregistry" 24 ) 25 26 const ( 27 namespace = "apiserver" 28 subsystem = "watch_cache" 29 ) 30 31 /* 32 * By default, all the following metrics are defined as falling under 33 * ALPHA stability level https://github.com/kubernetes/enhancements/blob/master/keps/sig-instrumentation/1209-metrics-stability/kubernetes-control-plane-metrics-stability.md#stability-classes) 34 * 35 * Promoting the stability level of the metric is a responsibility of the component owner, since it 36 * involves explicitly acknowledging support for the metric across multiple releases, in accordance with 37 * the metric stability policy. 38 */ 39 var ( 40 listCacheCount = compbasemetrics.NewCounterVec( 41 &compbasemetrics.CounterOpts{ 42 Namespace: namespace, 43 Name: "cache_list_total", 44 Help: "Number of LIST requests served from watch cache", 45 StabilityLevel: compbasemetrics.ALPHA, 46 }, 47 []string{"resource_prefix", "index"}, 48 ) 49 listCacheNumFetched = compbasemetrics.NewCounterVec( 50 &compbasemetrics.CounterOpts{ 51 Namespace: namespace, 52 Name: "cache_list_fetched_objects_total", 53 Help: "Number of objects read from watch cache in the course of serving a LIST request", 54 StabilityLevel: compbasemetrics.ALPHA, 55 }, 56 []string{"resource_prefix", "index"}, 57 ) 58 listCacheNumReturned = compbasemetrics.NewCounterVec( 59 &compbasemetrics.CounterOpts{ 60 Namespace: namespace, 61 Name: "cache_list_returned_objects_total", 62 Help: "Number of objects returned for a LIST request from watch cache", 63 StabilityLevel: compbasemetrics.ALPHA, 64 }, 65 []string{"resource_prefix"}, 66 ) 67 InitCounter = compbasemetrics.NewCounterVec( 68 &compbasemetrics.CounterOpts{ 69 Namespace: namespace, 70 Name: "init_events_total", 71 Help: "Counter of init events processed in watch cache broken by resource type.", 72 StabilityLevel: compbasemetrics.ALPHA, 73 }, 74 []string{"resource"}, 75 ) 76 77 EventsReceivedCounter = compbasemetrics.NewCounterVec( 78 &compbasemetrics.CounterOpts{ 79 Namespace: namespace, 80 Subsystem: subsystem, 81 Name: "events_received_total", 82 Help: "Counter of events received in watch cache broken by resource type.", 83 StabilityLevel: compbasemetrics.ALPHA, 84 }, 85 []string{"resource"}, 86 ) 87 88 EventsCounter = compbasemetrics.NewCounterVec( 89 &compbasemetrics.CounterOpts{ 90 Namespace: namespace, 91 Subsystem: subsystem, 92 Name: "events_dispatched_total", 93 Help: "Counter of events dispatched in watch cache broken by resource type.", 94 StabilityLevel: compbasemetrics.ALPHA, 95 }, 96 []string{"resource"}, 97 ) 98 99 TerminatedWatchersCounter = compbasemetrics.NewCounterVec( 100 &compbasemetrics.CounterOpts{ 101 Namespace: namespace, 102 Name: "terminated_watchers_total", 103 Help: "Counter of watchers closed due to unresponsiveness broken by resource type.", 104 StabilityLevel: compbasemetrics.ALPHA, 105 }, 106 []string{"resource"}, 107 ) 108 109 watchCacheCapacityIncreaseTotal = compbasemetrics.NewCounterVec( 110 &compbasemetrics.CounterOpts{ 111 Subsystem: subsystem, 112 Name: "capacity_increase_total", 113 Help: "Total number of watch cache capacity increase events broken by resource type.", 114 StabilityLevel: compbasemetrics.ALPHA, 115 }, 116 []string{"resource"}, 117 ) 118 119 watchCacheCapacityDecreaseTotal = compbasemetrics.NewCounterVec( 120 &compbasemetrics.CounterOpts{ 121 Subsystem: subsystem, 122 Name: "capacity_decrease_total", 123 Help: "Total number of watch cache capacity decrease events broken by resource type.", 124 StabilityLevel: compbasemetrics.ALPHA, 125 }, 126 []string{"resource"}, 127 ) 128 129 WatchCacheCapacity = compbasemetrics.NewGaugeVec( 130 &compbasemetrics.GaugeOpts{ 131 Subsystem: subsystem, 132 Name: "capacity", 133 Help: "Total capacity of watch cache broken by resource type.", 134 StabilityLevel: compbasemetrics.ALPHA, 135 }, 136 []string{"resource"}, 137 ) 138 139 WatchCacheInitializations = compbasemetrics.NewCounterVec( 140 &compbasemetrics.CounterOpts{ 141 Namespace: namespace, 142 Subsystem: subsystem, 143 Name: "initializations_total", 144 Help: "Counter of watch cache initializations broken by resource type.", 145 StabilityLevel: compbasemetrics.ALPHA, 146 }, 147 []string{"resource"}, 148 ) 149 ) 150 151 var registerMetrics sync.Once 152 153 // Register all metrics. 154 func Register() { 155 // Register the metrics. 156 registerMetrics.Do(func() { 157 legacyregistry.MustRegister(listCacheCount) 158 legacyregistry.MustRegister(listCacheNumFetched) 159 legacyregistry.MustRegister(listCacheNumReturned) 160 legacyregistry.MustRegister(InitCounter) 161 legacyregistry.MustRegister(EventsReceivedCounter) 162 legacyregistry.MustRegister(EventsCounter) 163 legacyregistry.MustRegister(TerminatedWatchersCounter) 164 legacyregistry.MustRegister(watchCacheCapacityIncreaseTotal) 165 legacyregistry.MustRegister(watchCacheCapacityDecreaseTotal) 166 legacyregistry.MustRegister(WatchCacheCapacity) 167 legacyregistry.MustRegister(WatchCacheInitializations) 168 }) 169 } 170 171 // RecordListCacheMetrics notes various metrics of the cost to serve a LIST request 172 func RecordListCacheMetrics(resourcePrefix, indexName string, numFetched, numReturned int) { 173 listCacheCount.WithLabelValues(resourcePrefix, indexName).Inc() 174 listCacheNumFetched.WithLabelValues(resourcePrefix, indexName).Add(float64(numFetched)) 175 listCacheNumReturned.WithLabelValues(resourcePrefix).Add(float64(numReturned)) 176 } 177 178 // RecordsWatchCacheCapacityChange record watchCache capacity resize(increase or decrease) operations. 179 func RecordsWatchCacheCapacityChange(objType string, old, new int) { 180 WatchCacheCapacity.WithLabelValues(objType).Set(float64(new)) 181 if old < new { 182 watchCacheCapacityIncreaseTotal.WithLabelValues(objType).Inc() 183 return 184 } 185 watchCacheCapacityDecreaseTotal.WithLabelValues(objType).Inc() 186 }