go-graphite / graphite-clickhouse

Graphite cluster backend with ClickHouse support
MIT License
213 stars 52 forks source link

Add filter support to prometheus #267

Closed Hedius closed 7 months ago

Hedius commented 7 months ago

Not sure if my implementation is really ideal. Atm the querier.go of prometheus does not supprt filter support for metric and label searches. please review if what I do is really ok :)

This pull request implements the following changes:

  1. Ensure that the matchers are matched against the Tags Array/Column.
  2. For LabelNames() the matchers are performed against the Tags array column (by using index.TaggedTermWhereN)
  3. For LabelValues() the same is done + LIKE name=% is added as a where condition for Tag1.

If no matchers are provided graphite-clickhouse should work exactly like before.

If a matcher is provided it is matched against the Tags column.

In our case we use the stack with multi tenant support. So a proxy before graphite-clickhouse performs authentication and injects a label into all requests. {x=y}.

This change ensures that LabelNames() and LabelValues() only returns results which match {x=y}

@bzed

Hedius commented 7 months ago

EDIT: ignore this comment. (i reverted my last commit)... Having the __name__ label in results is actually good. ^

Hedius commented 7 months ago

closing this, creating a new one from a feature branch. master was a bad choice