mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
lib/storage: properly add previous indexDB metrics (#6890)
Previously, some extIndexDB metrics were not registered. It resulted into missing metrics, if metric value was added to the extIndexDB. It's a usual case for search requests at both indexes. Current commit updates all metrics from extIndexDB according to the current IndexDB. It must fix such cases Related issue: https://github.com/VictoriaMetrics/VictoriaMetrics/issues/6868 ### Describe Your Changes Please provide a brief description of the changes you made. Be as specific as possible to help others understand the purpose and impact of your modifications. ### Checklist The following checks are **mandatory**: - [ ] My change adheres [VictoriaMetrics contributing guidelines](https://docs.victoriametrics.com/contributing/).
This commit is contained in:
parent
6154bc9466
commit
4ecc370acb
2 changed files with 29 additions and 9 deletions
|
@ -46,6 +46,7 @@ See also [LTS releases](https://docs.victoriametrics.com/lts-releases/).
|
||||||
* BUGFIX: [vmalert](https://docs.victoriametrics.com/vmalert/), [vmctl](https://docs.victoriametrics.com/vmctl/) and snapshot API: verify correctness of URLs provided via cmd-line flags before executing HTTP requests. See [this](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/6740) issue for details.
|
* BUGFIX: [vmalert](https://docs.victoriametrics.com/vmalert/), [vmctl](https://docs.victoriametrics.com/vmctl/) and snapshot API: verify correctness of URLs provided via cmd-line flags before executing HTTP requests. See [this](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/6740) issue for details.
|
||||||
* BUGFIX: [vmalert](https://docs.victoriametrics.com/vmalert): reduce memory usage when parsing responses with big number of metrics in response. The memory usage was increased in [v1.102.0-rc1](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.102.0-rc1) after attempt to reduce CPU usage for heavy loaded vmalerts.
|
* BUGFIX: [vmalert](https://docs.victoriametrics.com/vmalert): reduce memory usage when parsing responses with big number of metrics in response. The memory usage was increased in [v1.102.0-rc1](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.102.0-rc1) after attempt to reduce CPU usage for heavy loaded vmalerts.
|
||||||
* BUGFIX: all VictoriaMetrics components: forcefully set owner/group for release tars to 1000:1000. This helps to avoid unpacking [issues](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/6788) on systems with limitations around UID:GID configuration. See [this pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/6846).
|
* BUGFIX: all VictoriaMetrics components: forcefully set owner/group for release tars to 1000:1000. This helps to avoid unpacking [issues](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/6788) on systems with limitations around UID:GID configuration. See [this pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/6846).
|
||||||
|
* BUGFIX: [Single-node VictoriaMetrics](https://docs.victoriametrics.com/) and `vmstorage` in [VictoriaMetrics cluster](https://docs.victoriametrics.com/cluster-victoriametrics/): properly register index metrics for previous index part. See this [issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/6868) for details.
|
||||||
* BUGFIX: [Single-node VictoriaMetrics](https://docs.victoriametrics.com/) and `vmstorage` in [VictoriaMetrics cluster](https://docs.victoriametrics.com/cluster-victoriametrics/): Removes the fallback to global index search when the search using per-day index fails due to too many time series found (the global index will fail anyway with the same error and so the fallback is not needed and only slows down the search). See [this](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/6836) for details.
|
* BUGFIX: [Single-node VictoriaMetrics](https://docs.victoriametrics.com/) and `vmstorage` in [VictoriaMetrics cluster](https://docs.victoriametrics.com/cluster-victoriametrics/): Removes the fallback to global index search when the search using per-day index fails due to too many time series found (the global index will fail anyway with the same error and so the fallback is not needed and only slows down the search). See [this](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/6836) for details.
|
||||||
* BUGFIX: [Single-node VictoriaMetrics](https://docs.victoriametrics.com/) and `vmstorage` in [VictoriaMetrics cluster](https://docs.victoriametrics.com/cluster-victoriametrics/): fix metric names registering in the per-day index for new dates for existing time series when making calls to `/tags/tagSeries` and `/tags/tagMultiSeries` handlers of [Grpahite API](https://docs.victoriametrics.com/#graphite-api-usage). See [this](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/6872/) for details.
|
* BUGFIX: [Single-node VictoriaMetrics](https://docs.victoriametrics.com/) and `vmstorage` in [VictoriaMetrics cluster](https://docs.victoriametrics.com/cluster-victoriametrics/): fix metric names registering in the per-day index for new dates for existing time series when making calls to `/tags/tagSeries` and `/tags/tagMultiSeries` handlers of [Grpahite API](https://docs.victoriametrics.com/#graphite-api-usage). See [this](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/6872/) for details.
|
||||||
|
|
||||||
|
|
|
@ -203,6 +203,16 @@ func (db *indexDB) scheduleToDrop() {
|
||||||
|
|
||||||
// UpdateMetrics updates m with metrics from the db.
|
// UpdateMetrics updates m with metrics from the db.
|
||||||
func (db *indexDB) UpdateMetrics(m *IndexDBMetrics) {
|
func (db *indexDB) UpdateMetrics(m *IndexDBMetrics) {
|
||||||
|
// global index metrics
|
||||||
|
m.DeletedMetricsCount += uint64(db.s.getDeletedMetricIDs().Len())
|
||||||
|
|
||||||
|
m.IndexBlocksWithMetricIDsProcessed = indexBlocksWithMetricIDsProcessed.Load()
|
||||||
|
m.IndexBlocksWithMetricIDsIncorrectOrder = indexBlocksWithMetricIDsIncorrectOrder.Load()
|
||||||
|
|
||||||
|
m.MinTimestampForCompositeIndex = uint64(db.s.minTimestampForCompositeIndex)
|
||||||
|
m.CompositeFilterSuccessConversions = compositeFilterSuccessConversions.Load()
|
||||||
|
m.CompositeFilterMissingConversions = compositeFilterMissingConversions.Load()
|
||||||
|
|
||||||
var cs fastcache.Stats
|
var cs fastcache.Stats
|
||||||
|
|
||||||
cs.Reset()
|
cs.Reset()
|
||||||
|
@ -213,8 +223,6 @@ func (db *indexDB) UpdateMetrics(m *IndexDBMetrics) {
|
||||||
m.TagFiltersToMetricIDsCacheRequests += cs.GetCalls
|
m.TagFiltersToMetricIDsCacheRequests += cs.GetCalls
|
||||||
m.TagFiltersToMetricIDsCacheMisses += cs.Misses
|
m.TagFiltersToMetricIDsCacheMisses += cs.Misses
|
||||||
|
|
||||||
m.DeletedMetricsCount += uint64(db.s.getDeletedMetricIDs().Len())
|
|
||||||
|
|
||||||
m.IndexDBRefCount += uint64(db.refCount.Load())
|
m.IndexDBRefCount += uint64(db.refCount.Load())
|
||||||
m.MissingTSIDsForMetricID += db.missingTSIDsForMetricID.Load()
|
m.MissingTSIDsForMetricID += db.missingTSIDsForMetricID.Load()
|
||||||
|
|
||||||
|
@ -224,16 +232,26 @@ func (db *indexDB) UpdateMetrics(m *IndexDBMetrics) {
|
||||||
|
|
||||||
m.MissingMetricNamesForMetricID += db.missingMetricNamesForMetricID.Load()
|
m.MissingMetricNamesForMetricID += db.missingMetricNamesForMetricID.Load()
|
||||||
|
|
||||||
m.IndexBlocksWithMetricIDsProcessed = indexBlocksWithMetricIDsProcessed.Load()
|
|
||||||
m.IndexBlocksWithMetricIDsIncorrectOrder = indexBlocksWithMetricIDsIncorrectOrder.Load()
|
|
||||||
|
|
||||||
m.MinTimestampForCompositeIndex = uint64(db.s.minTimestampForCompositeIndex)
|
|
||||||
m.CompositeFilterSuccessConversions = compositeFilterSuccessConversions.Load()
|
|
||||||
m.CompositeFilterMissingConversions = compositeFilterMissingConversions.Load()
|
|
||||||
|
|
||||||
db.tb.UpdateMetrics(&m.TableMetrics)
|
db.tb.UpdateMetrics(&m.TableMetrics)
|
||||||
db.doExtDB(func(extDB *indexDB) {
|
db.doExtDB(func(extDB *indexDB) {
|
||||||
extDB.tb.UpdateMetrics(&m.TableMetrics)
|
extDB.tb.UpdateMetrics(&m.TableMetrics)
|
||||||
|
|
||||||
|
cs.Reset()
|
||||||
|
extDB.tagFiltersToMetricIDsCache.UpdateStats(&cs)
|
||||||
|
m.TagFiltersToMetricIDsCacheSize += cs.EntriesCount
|
||||||
|
m.TagFiltersToMetricIDsCacheSizeBytes += cs.BytesSize
|
||||||
|
m.TagFiltersToMetricIDsCacheSizeMaxBytes += cs.MaxBytesSize
|
||||||
|
m.TagFiltersToMetricIDsCacheRequests += cs.GetCalls
|
||||||
|
m.TagFiltersToMetricIDsCacheMisses += cs.Misses
|
||||||
|
|
||||||
|
m.IndexDBRefCount += uint64(extDB.refCount.Load())
|
||||||
|
m.MissingTSIDsForMetricID += extDB.missingTSIDsForMetricID.Load()
|
||||||
|
|
||||||
|
m.DateRangeSearchCalls += extDB.dateRangeSearchCalls.Load()
|
||||||
|
m.DateRangeSearchHits += extDB.dateRangeSearchHits.Load()
|
||||||
|
m.GlobalSearchCalls += extDB.globalSearchCalls.Load()
|
||||||
|
|
||||||
|
m.MissingMetricNamesForMetricID += extDB.missingMetricNamesForMetricID.Load()
|
||||||
m.IndexDBRefCount += uint64(extDB.refCount.Load())
|
m.IndexDBRefCount += uint64(extDB.refCount.Load())
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -3321,6 +3339,7 @@ func (s uint64Sorter) Len() int { return len(s) }
|
||||||
func (s uint64Sorter) Less(i, j int) bool {
|
func (s uint64Sorter) Less(i, j int) bool {
|
||||||
return s[i] < s[j]
|
return s[i] < s[j]
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s uint64Sorter) Swap(i, j int) {
|
func (s uint64Sorter) Swap(i, j int) {
|
||||||
s[i], s[j] = s[j], s[i]
|
s[i], s[j] = s[j], s[i]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue