I've a peculiar use case where there are large number of time series 
published with a label set, that is causing overhead at query time when the 
filter includes shared label value.  e.g.

my_metric1{l1="fixed",l2="..",l3=".."}
my_metric2{l1="fixed",l2="..",l3=".."}
my_metric3{l1="fixed",l2="..",l3=".."}
...

query: my_metric1{l1="fixed",...}

The overhead is not dependent on number of samples query, but due to the 
way prometheus loads metric metadata, specifically label postings and finds 
an intersection of these lists to find the time series to load from DB. If 
I remove the l1 filter above, query runs much faster and overhead is 
minimal.

Due to number of queries hitting the system and high friction of changes in 
user applications, I am looking for ways to solve this problem in query 
processing. One option I was considering was filtering this label out 
before sending query to remote read destination but the remote read 
configuration does not support metric relabeling. Can you suggest 
alternatives? Modifying the ingestion path or metric modeling is not 
feasible at this point and will take a long time to implement.


 




-- 
You received this message because you are subscribed to the Google Groups 
"Prometheus Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/prometheus-users/1dd94781-381e-44fc-a3ba-49d98418deb4n%40googlegroups.com.

Reply via email to