Expose resource version metrics from watchcache
This commit is contained in:
		| @@ -106,6 +106,17 @@ var ( | |||||||
| 		[]string{"resource"}, | 		[]string{"resource"}, | ||||||
| 	) | 	) | ||||||
|  |  | ||||||
|  | 	watchCacheResourceVersion = compbasemetrics.NewGaugeVec( | ||||||
|  | 		&compbasemetrics.GaugeOpts{ | ||||||
|  | 			Namespace:      namespace, | ||||||
|  | 			Subsystem:      subsystem, | ||||||
|  | 			Name:           "resource_version", | ||||||
|  | 			Help:           "Current resource version of watch cache broken by resource type.", | ||||||
|  | 			StabilityLevel: compbasemetrics.ALPHA, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"resource"}, | ||||||
|  | 	) | ||||||
|  |  | ||||||
| 	watchCacheCapacityIncreaseTotal = compbasemetrics.NewCounterVec( | 	watchCacheCapacityIncreaseTotal = compbasemetrics.NewCounterVec( | ||||||
| 		&compbasemetrics.CounterOpts{ | 		&compbasemetrics.CounterOpts{ | ||||||
| 			Subsystem:      subsystem, | 			Subsystem:      subsystem, | ||||||
| @@ -171,6 +182,7 @@ func Register() { | |||||||
| 		legacyregistry.MustRegister(EventsReceivedCounter) | 		legacyregistry.MustRegister(EventsReceivedCounter) | ||||||
| 		legacyregistry.MustRegister(EventsCounter) | 		legacyregistry.MustRegister(EventsCounter) | ||||||
| 		legacyregistry.MustRegister(TerminatedWatchersCounter) | 		legacyregistry.MustRegister(TerminatedWatchersCounter) | ||||||
|  | 		legacyregistry.MustRegister(watchCacheResourceVersion) | ||||||
| 		legacyregistry.MustRegister(watchCacheCapacityIncreaseTotal) | 		legacyregistry.MustRegister(watchCacheCapacityIncreaseTotal) | ||||||
| 		legacyregistry.MustRegister(watchCacheCapacityDecreaseTotal) | 		legacyregistry.MustRegister(watchCacheCapacityDecreaseTotal) | ||||||
| 		legacyregistry.MustRegister(WatchCacheCapacity) | 		legacyregistry.MustRegister(WatchCacheCapacity) | ||||||
| @@ -186,6 +198,11 @@ func RecordListCacheMetrics(resourcePrefix, indexName string, numFetched, numRet | |||||||
| 	listCacheNumReturned.WithLabelValues(resourcePrefix).Add(float64(numReturned)) | 	listCacheNumReturned.WithLabelValues(resourcePrefix).Add(float64(numReturned)) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // RecordResourceVersion sets the current resource version for a given resource type. | ||||||
|  | func RecordResourceVersion(resourcePrefix string, resourceVersion uint64) { | ||||||
|  | 	watchCacheResourceVersion.WithLabelValues(resourcePrefix).Set(float64(resourceVersion)) | ||||||
|  | } | ||||||
|  |  | ||||||
| // RecordsWatchCacheCapacityChange record watchCache capacity resize(increase or decrease) operations. | // RecordsWatchCacheCapacityChange record watchCache capacity resize(increase or decrease) operations. | ||||||
| func RecordsWatchCacheCapacityChange(objType string, old, new int) { | func RecordsWatchCacheCapacityChange(objType string, old, new int) { | ||||||
| 	WatchCacheCapacity.WithLabelValues(objType).Set(float64(new)) | 	WatchCacheCapacity.WithLabelValues(objType).Set(float64(new)) | ||||||
|   | |||||||
| @@ -348,6 +348,7 @@ func (w *watchCache) processEvent(event watch.Event, resourceVersion uint64, upd | |||||||
| 	if w.eventHandler != nil { | 	if w.eventHandler != nil { | ||||||
| 		w.eventHandler(wcEvent) | 		w.eventHandler(wcEvent) | ||||||
| 	} | 	} | ||||||
|  | 	metrics.RecordResourceVersion(w.groupResource.String(), resourceVersion) | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -430,6 +431,7 @@ func (w *watchCache) UpdateResourceVersion(resourceVersion string) { | |||||||
| 		} | 		} | ||||||
| 		w.eventHandler(wcEvent) | 		w.eventHandler(wcEvent) | ||||||
| 	} | 	} | ||||||
|  | 	metrics.RecordResourceVersion(w.groupResource.String(), rv) | ||||||
| } | } | ||||||
|  |  | ||||||
| // List returns list of pointers to <storeElement> objects. | // List returns list of pointers to <storeElement> objects. | ||||||
| @@ -629,7 +631,9 @@ func (w *watchCache) Replace(objs []interface{}, resourceVersion string) error { | |||||||
| 		w.onReplace() | 		w.onReplace() | ||||||
| 	} | 	} | ||||||
| 	w.cond.Broadcast() | 	w.cond.Broadcast() | ||||||
| 	klog.V(3).Infof("Replace watchCache (rev: %v) ", resourceVersion) |  | ||||||
|  | 	metrics.RecordResourceVersion(w.groupResource.String(), version) | ||||||
|  | 	klog.V(3).Infof("Replaced watchCache (rev: %v) ", resourceVersion) | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Wojciech Tyczyński
					Wojciech Tyczyński