m3db / m3

M3 monorepo - Distributed TSDB, Aggregator and Query Engine, Prometheus Sidecar, Graphite Compatible, Metrics Platform
https://m3db.io/
Apache License 2.0
4.74k stars 452 forks source link

Add IncludeTags to R2 Rollup Options #4277

Closed kentzeng12 closed 2 months ago

kentzeng12 commented 3 months ago

What this PR does / why we need it:

To add new reserved metric tags, we need to add the reserved tag to the initial metric id, and the rollup id otherwise the reserved tag will be lost during the R2 rollup process. Currently to do this, we would need to manually update the R2 rules to filter for the new reserved tag. However, this is a time consuming process because we need to update all R2 rules in the repo to ensure the reserved tag is added to all rollup ids.

To address this issue, in the matcher config, I added functionality to specify a list of "include tags" which are tags that if seen in the metric id, we should add to the rollup id. So if the metric id contains a reserved tag that needs to be added to the rollup id, the forward matching logic will add the reserved tag to the rollup id.

In the future, if there are more reserved tags that R2 forward match should add to rollup ids, we should add those tags in the include tags config.

This PR is an exact copy of a PR I made from my forked repo, however the buildkite check doesn't run on forked repos so making the PR on the main repo: https://github.com/m3db/m3/pull/4270.