I don't know if this is still the case, but there are some label configurations in the helm cart that lead to excessive labels on Kubernetes. This can lead to index/memory bloat.
Most of the memory bloat I've seen in our production clusters lately has more to do with auto-scaling pod churn. If you're using a heavy auto-scaling, and lots of single-core pods, you'll end up bloating the metrics a lot. On Tue, Sep 7, 2021 at 3:51 PM Brian Candler <[email protected]> wrote: > Such a short retention is unlikely to help at all; WAL blocks have a 2 > hour duration I think. > > Across some systems I have here, the average number of metrics per node is > 2366: this is the (expensive) query which gives it: > avg(count by (instance) ({job="node"})) > > So with 1300 nodes that would be about 3 million metrics. Quite a lot, > but not extraordinarily so. I've seen recommendations to start splitting > Prometheus servers when you reach 2m. There is a RAM calculation tool here: > > https://www.robustperception.io/how-much-ram-does-prometheus-2-x-need-for-cardinality-and-ingestion > With 3m series and 1m unique label pairs, it still only comes out to 8GB. > If you're needing much more than that, then you need to read and understand > the stats from the TSDB status page. You can post them here if you want > help interpreting them. And you need to understand what queries (if any) > are taking place against your database, since those use RAM too. > > Looking at "Top 10 series count by metric names" in the Prometheus Status > page, in my case it's node_cpu_seconds_total{}. For me it's > node_cpu_seconds_total{}. If you don't require the usage of each core > individually, then you might be inclined to drop it. > > You could also see if victoriametrics + vmagent works better for your use > case. > > On Tuesday, 7 September 2021 at 13:57:48 UTC+1 [email protected] wrote: > >> Thank you Brian for the reply. Yes I mean host (nodes). >> What we have done for the mean time is we have set the retentionTime of >> prometheus to 5minutes (which I am not comfortable) but was advised by >> seniors just for us to continue. >> Thanks for the information above, i'll check it out and try on our >> cluster environment. >> >> >> >> >> >> >> On Tue, Sep 7, 2021 at 4:50 PM Brian Candler <[email protected]> wrote: >> >>> It's not clear what you mean by "No. of Nodes" - whether you mean hosts >>> (e.g. which you're scraping using node_exporter), or pods, or something >>> else. But what matters is the total number of metrics, and the amount of >>> metric churn, i.e. the rate at which new timeseries are being created >>> dynamically; and also how much querying is going on. >>> >>> If you go to Prometheus web interface, Status > TSDB Status, you'll get >>> some statistics which may help you. Consider: >>> >>> - collecting fewer metrics (by changing what you scrape, and/or using >>> metric_relabel_configs to drop some timeseries which are not of interest) >>> >>> - see if it's possible to reduce timeseries churn. For example, if you >>> have one application which is generating large numbers of short-lived pods >>> then you may wish to reduce or suppress the metrics collected for those >>> pods. >>> >>> - have a look at the PromQL queries being executed, and whether any of >>> these are using excessing amounts of RAM. The query log >>> <https://prometheus.io/docs/guides/query-log/> may help. You can also >>> apply limits to how much memory is used by individual queries using >>> --query.max-concurrency=20 # default >>> --query.max-samples=50000000 # default >>> (although that may cause the offending queries to fail) >>> >>> There are also blog posts out there which you can turn up with a search, >>> e.g. >>> https://source.coveo.com/2021/03/03/prometheus-memory/ >>> >>> On Tuesday, 7 September 2021 at 07:34:51 UTC+1 [email protected] wrote: >>> >>>> Hi everyone, I am new here. >>>> >>>> I would like to seek some advice on the design approach we should take. >>>> With the given problem below, in terms of cost, how can we set up >>>> Prometheus with a large cluster. >>>> >>>> *Variables:* >>>> *Installation: *Kube-stack-prometheus helm chart. >>>> *Autoscale*: yes >>>> *No. of Nodes*: 1000 up to 1300 >>>> *Mesh*: Istio >>>> *Memory Usage:* 50GB (Still gets OOM) >>>> *Installed: *1 Prometheus, 1 Kiali, 1 Grafana and 1 Jaeger >>>> >>>> *Issue:* >>>> 1. We cannot expand a larger node for Prometheus as 60GB memory is >>>> already expensive. (cost not approved by management) >>>> 2. Removing unnecessary metrics is not yet advised because we do not >>>> know which metrics of istio, jaeger and kiali are needed. >>>> >>>> *Tried solution:* >>>> We have federated the single instance of prometheus with Thanos >>>> Receivers, however, the issue is still there because kiali queries its data >>>> directly from prometheus which eventually gets OOM. >>>> >>>> *Question:* >>>> We are thinking of firing up multiple prometheus for each namespace and >>>> adding thanos-sidecar with the same scrape config since thanos will >>>> deduplicate all duplicated metrics. This approach would solve the issue in >>>> Grafana queries but not in Kiali. >>>> >>>> How can we set up a multiple prometheus (low cost) but single instance >>>> prometheus for kiali (whole cluster)? >>>> >>>> Appreciate any help. Thank you. >>>> >>>> >>>> >>>> >>>> >>>> -- >>> 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/24a15533-094e-4a4c-9644-5d4375b6aaa2n%40googlegroups.com >>> <https://groups.google.com/d/msgid/prometheus-users/24a15533-094e-4a4c-9644-5d4375b6aaa2n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- > 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/bde269c1-119e-4d1e-a899-9f27332b0ff6n%40googlegroups.com > <https://groups.google.com/d/msgid/prometheus-users/bde269c1-119e-4d1e-a899-9f27332b0ff6n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- 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/CABbyFmrsfgRFDsduqz0ue3o%3DxKVJPn9K-4GvC%3DjhT%3DoqJySMpQ%40mail.gmail.com.

