Track node and service counts in the state store and emit them periodically as metrics #8603
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
OSS PR usage metrics.
This PR emits 3 new metrics, consul.state.nodes/consul.state.services/consul.state.service_instances, which are all gauges that track the number of registered entities in the Consul state store.
As part of this PR, we add functionality to the state store to keep track of the count of elements associated to a table. This is done by using the change tracking functionality of memdb and a new usage table. This makes it so that we do not need to iterate through the entire table just to retrieve a count of the number of nodes/service instances.
The new functionality is located in agent/consul/state/usage*.go and agent/consul/usagemetrics/usagemetrics*.go.
In addition, a number of state store methods were modified to accept interfaces, either ReadTxn or WriteTxn depending on what each function requires.