From 13d028733f77602149fac275ee153b722d056d78 Mon Sep 17 00:00:00 2001 From: sed-i <82407168+sed-i@users.noreply.github.com> Date: Wed, 22 Nov 2023 17:03:19 -0500 Subject: [PATCH 1/3] Add configs to address HTTP 429 code (too many reqs) Lint --- src/config_builder.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/config_builder.py b/src/config_builder.py index a774d1276..4db836cfe 100644 --- a/src/config_builder.py +++ b/src/config_builder.py @@ -62,6 +62,8 @@ def build(self) -> dict: "server": self._server, "storage_config": self._storage_config, "limits_config": self._limits_config, + "query_range": self._query_range, + "chunk_store_config": self._chunk_store_config, } @property @@ -143,4 +145,33 @@ def _limits_config(self) -> dict: # case of one stream per user. "per_stream_rate_limit": f"{self.ingestion_rate_mb}MB", "per_stream_rate_limit_burst": f"{self.ingestion_burst_size_mb}MB", + # This charmed operator is intended for running a single loki instances, so we don't need to split queries + # https://community.grafana.com/t/too-many-outstanding-requests-on-loki-2-7-1/78249/9 + "split_queries_by_interval": "0", + } + + @property + def _query_range(self) -> dict: + # Ref: https://grafana.com/docs/loki/latest/configure/#query_range + return { + "results_cache": { + "cache": { + "embedded_cache": { + # https://community.grafana.com/t/too-many-outstanding-requests-on-loki-2-7-1/78249/11 + "enabled": "true" + } + } + } + } + + @property + def _chunk_store_config(self) -> dict: + # Ref: https://grafana.com/docs/loki/latest/configure/#chunk_store_config + return { + "chunk_cache_config": { + "embedded_cache": { + # https://community.grafana.com/t/too-many-outstanding-requests-on-loki-2-7-1/78249/11 + "enabled": "true" + } + } } From 541b5e5429d500760fe00b387444d4659a8dc7ab Mon Sep 17 00:00:00 2001 From: sed-i <82407168+sed-i@users.noreply.github.com> Date: Thu, 23 Nov 2023 12:16:13 -0500 Subject: [PATCH 2/3] Fix bool --- src/config_builder.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config_builder.py b/src/config_builder.py index 4db836cfe..125677da9 100644 --- a/src/config_builder.py +++ b/src/config_builder.py @@ -158,7 +158,7 @@ def _query_range(self) -> dict: "cache": { "embedded_cache": { # https://community.grafana.com/t/too-many-outstanding-requests-on-loki-2-7-1/78249/11 - "enabled": "true" + "enabled": True } } } @@ -171,7 +171,7 @@ def _chunk_store_config(self) -> dict: "chunk_cache_config": { "embedded_cache": { # https://community.grafana.com/t/too-many-outstanding-requests-on-loki-2-7-1/78249/11 - "enabled": "true" + "enabled": True } } } From 941e1c1c4375e716fd3e6159e935d6650ad02ab0 Mon Sep 17 00:00:00 2001 From: sed-i <82407168+sed-i@users.noreply.github.com> Date: Thu, 23 Nov 2023 23:31:17 -0500 Subject: [PATCH 3/3] More configs Lint --- src/config_builder.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/config_builder.py b/src/config_builder.py index 125677da9..cf2364f2f 100644 --- a/src/config_builder.py +++ b/src/config_builder.py @@ -64,6 +64,8 @@ def build(self) -> dict: "limits_config": self._limits_config, "query_range": self._query_range, "chunk_store_config": self._chunk_store_config, + "frontend": self._frontend, + "querier": self._querier, } @property @@ -154,6 +156,7 @@ def _limits_config(self) -> dict: def _query_range(self) -> dict: # Ref: https://grafana.com/docs/loki/latest/configure/#query_range return { + "parallelise_shardable_queries": False, "results_cache": { "cache": { "embedded_cache": { @@ -161,7 +164,7 @@ def _query_range(self) -> dict: "enabled": True } } - } + }, } @property @@ -175,3 +178,22 @@ def _chunk_store_config(self) -> dict: } } } + + @property + def _frontend(self) -> dict: + # Ref: https://grafana.com/docs/loki/latest/configure/#frontend + return { + # Maximum number of outstanding requests per tenant per frontend; requests beyond this error with HTTP 429. + # Default is 2048, but 8cpu16gb can ingest ~3 times more, so set to 4x. + "max_outstanding_per_tenant": 8192, + # Compress HTTP responses. + "compress_responses": True, + } + + @property + def _querier(self) -> dict: + # Ref: https://grafana.com/docs/loki/latest/configure/#querier + return { + # The maximum number of concurrent queries allowed. Default is 10. + "max_concurrent": 20, + }