From 987e551f9e21b9a612dd0b6a3e60503ce6fe13a8 Mon Sep 17 00:00:00 2001 From: Quentin Bisson Date: Thu, 23 May 2024 02:15:52 +0200 Subject: [PATCH] fix: allow cluster label override in bloom dashboards (#13012) Signed-off-by: QuentinBisson --- .../dashboards/loki-bloom-compactor.json | 74 +++++++++++++++++++ .../dashboards/loki-bloom-gateway.json | 57 ++++++++++++++ .../dashboards/loki-bloom-compactor.json | 74 +++++++++++++++++++ .../dashboards/loki-bloom-gateway.json | 57 ++++++++++++++ .../dashboards/loki-bloom-compactor.libsonnet | 65 ++++++++++++++-- .../dashboards/loki-bloom-gateway.libsonnet | 65 ++++++++++++++-- 6 files changed, 380 insertions(+), 12 deletions(-) diff --git a/production/loki-mixin-compiled-ssd/dashboards/loki-bloom-compactor.json b/production/loki-mixin-compiled-ssd/dashboards/loki-bloom-compactor.json index c667d0c01eccb..c365fab0a7e59 100644 --- a/production/loki-mixin-compiled-ssd/dashboards/loki-bloom-compactor.json +++ b/production/loki-mixin-compiled-ssd/dashboards/loki-bloom-compactor.json @@ -32,6 +32,7 @@ }, "id": 111, "panels": [ ], + "targets": [ ], "title": "Overview", "type": "row" }, @@ -52,7 +53,9 @@ "content": "## About the Bloom Compactor\nThe compactor iterates through chunks and creates blooms out of them.\nThe size of the resulting blooms depends on the bloom filter settings, the tokenizer settings, the number of ring tokens per compactor and the total number opf compactors.\n\nCompactors are horizontally scalable and uses a ring to:\n- Shard tenants\n- Shard series fingerprints within a tenant subring.\n\nThe blooms for the series are grouped together in blocks which are flushed to object store.", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "transparent": true, "type": "text" }, @@ -140,6 +143,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -290,6 +294,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -371,6 +376,7 @@ "sortOrder": "Descending", "wrapLogMessage": false }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -467,6 +473,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -576,6 +583,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -645,6 +653,7 @@ "showThresholdMarkers": false, "sizing": "auto" }, + "panels": [ ], "pluginVersion": "11.0.0-68102", "targets": [ { @@ -665,6 +674,7 @@ "type": "gauge" } ], + "targets": [ ], "title": "Progress per pod", "type": "row" }, @@ -696,7 +706,9 @@ "content": "", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "title": "We use tenant sharding so each compactor will process a subset of the tenants.", "transparent": true, "type": "text" @@ -777,6 +789,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -893,6 +906,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -1000,6 +1014,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -1149,6 +1164,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -1273,6 +1289,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -1448,6 +1465,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -1576,6 +1594,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -1678,6 +1697,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -1697,6 +1717,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Resource Usage", "type": "row" }, @@ -1791,6 +1812,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -1904,6 +1926,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -2004,6 +2027,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -2130,6 +2154,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -2150,6 +2175,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Bloom building", "type": "row" }, @@ -2238,6 +2264,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2332,6 +2359,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2426,6 +2454,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2445,6 +2474,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Blocks building", "type": "row" }, @@ -2533,6 +2563,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -2628,6 +2659,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -2648,6 +2680,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Metas building", "type": "row" }, @@ -2679,7 +2712,9 @@ "content": "", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "title": "We use tenant sharding so each compactor will process a subset of the tenants.", "transparent": true, "type": "text" @@ -2759,6 +2794,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2878,6 +2914,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2914,7 +2951,9 @@ "content": "", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "title": "Number of tenant tables processed. ", "transparent": true, "type": "text" @@ -2994,6 +3033,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3113,6 +3153,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3149,7 +3190,9 @@ "content": "", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "title": "Series per compaction (includes series copied from other blocks)", "transparent": true, "type": "text" @@ -3230,6 +3273,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3349,6 +3393,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3385,7 +3430,9 @@ "content": "", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "title": "Number of bytes from chunks added to blocks during each compaction.", "transparent": true, "type": "text" @@ -3466,6 +3513,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3586,6 +3634,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3605,6 +3654,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Data processed", "type": "row" }, @@ -3640,7 +3690,9 @@ "content": "\nCompactors write blocks to the attached PVs before flushing them into the object store.\nIt also download chunks and index files.\n\nAfter compacting a given tenant, all the downloaded index files and chunks, as well as the already flushed blocks are deleted.", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-69747", + "targets": [ ], "title": "", "transparent": true, "type": "text" @@ -3726,6 +3778,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3850,6 +3903,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3946,6 +4000,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4068,6 +4123,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4164,6 +4220,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4286,6 +4343,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4304,6 +4362,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Disk Usage", "type": "row" }, @@ -4339,7 +4398,9 @@ "content": "Once all blocks and metas are built locally, the compactor flushes them to the object store.\n\nAfter each iteration, the compactor deletes the metas and blocks marked for deletion in the tombstones.", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-69747", + "targets": [ ], "title": "", "transparent": true, "type": "text" @@ -4366,7 +4427,9 @@ "content": "---\n#### GCS\n", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-69747", + "targets": [ ], "title": "", "transparent": true, "type": "text" @@ -4447,6 +4510,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4541,6 +4605,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4607,7 +4672,9 @@ "content": "---\n#### S3\n", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-69747", + "targets": [ ], "title": "", "transparent": true, "type": "text" @@ -4688,6 +4755,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4782,6 +4850,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4848,7 +4917,9 @@ "content": "---\n#### Azure\nBlob Storage", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-69747", + "targets": [ ], "title": "", "transparent": true, "type": "text" @@ -4929,6 +5000,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -5023,6 +5095,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -5068,6 +5141,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Object Store", "type": "row" } diff --git a/production/loki-mixin-compiled-ssd/dashboards/loki-bloom-gateway.json b/production/loki-mixin-compiled-ssd/dashboards/loki-bloom-gateway.json index 27a058ae800e2..2d5e16a9d7e0f 100644 --- a/production/loki-mixin-compiled-ssd/dashboards/loki-bloom-gateway.json +++ b/production/loki-mixin-compiled-ssd/dashboards/loki-bloom-gateway.json @@ -33,6 +33,7 @@ }, "id": 73, "panels": [ ], + "targets": [ ], "title": "Overview", "type": "row" }, @@ -131,6 +132,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -223,6 +225,7 @@ "showThresholdMarkers": true, "sizing": "auto" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", "targets": [ { @@ -395,6 +398,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -536,6 +540,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -577,6 +582,7 @@ "sortOrder": "Descending", "wrapLogMessage": true }, + "panels": [ ], "targets": [ { "datasource": { @@ -730,6 +736,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -847,6 +854,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -970,6 +978,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -1094,6 +1103,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -1234,6 +1244,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -1336,6 +1347,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -1437,6 +1449,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -1547,6 +1560,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -1647,6 +1661,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -1666,6 +1681,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Resource usage", "type": "row" }, @@ -1799,6 +1815,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -1937,6 +1954,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2032,6 +2050,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2152,6 +2171,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2171,6 +2191,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "QPS and Latency", "type": "row" }, @@ -2260,6 +2281,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2380,6 +2402,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2513,6 +2536,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2532,6 +2556,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Task Queue", "type": "row" }, @@ -2625,6 +2650,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2748,6 +2774,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2870,6 +2897,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2901,6 +2929,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Processing", "type": "row" }, @@ -2936,7 +2965,9 @@ "content": "", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "title": "We cache bloom blocks in memory to prevent the gateway from hitting the object store too often", "transparent": true, "type": "text" @@ -3021,6 +3052,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3178,6 +3210,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3347,6 +3380,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3458,6 +3492,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3581,6 +3616,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3678,6 +3714,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Blocks Cache", "type": "row" }, @@ -3713,7 +3750,9 @@ "content": "", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "title": "The gateway download bloom meta files and blocks from the object store.", "transparent": true, "type": "text" @@ -3740,7 +3779,9 @@ "content": "---\n#### GCS\n", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "transparent": true, "type": "text" }, @@ -3820,6 +3861,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3913,6 +3955,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3978,7 +4021,9 @@ "content": "---\n#### S3\n", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "transparent": true, "type": "text" }, @@ -4058,6 +4103,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4151,6 +4197,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4216,7 +4263,9 @@ "content": "---\n#### Azure\nBlob Storage\n\n", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "transparent": true, "type": "text" }, @@ -4296,6 +4345,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4389,6 +4439,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4433,6 +4484,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Object Store", "type": "row" }, @@ -4528,6 +4580,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4652,6 +4705,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4770,6 +4824,7 @@ "xTickLabelRotation": 0, "xTickLabelSpacing": 0 }, + "panels": [ ], "pluginVersion": "11.0.0-67814", "targets": [ { @@ -4882,6 +4937,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4912,6 +4968,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Misc", "type": "row" } diff --git a/production/loki-mixin-compiled/dashboards/loki-bloom-compactor.json b/production/loki-mixin-compiled/dashboards/loki-bloom-compactor.json index c667d0c01eccb..c365fab0a7e59 100644 --- a/production/loki-mixin-compiled/dashboards/loki-bloom-compactor.json +++ b/production/loki-mixin-compiled/dashboards/loki-bloom-compactor.json @@ -32,6 +32,7 @@ }, "id": 111, "panels": [ ], + "targets": [ ], "title": "Overview", "type": "row" }, @@ -52,7 +53,9 @@ "content": "## About the Bloom Compactor\nThe compactor iterates through chunks and creates blooms out of them.\nThe size of the resulting blooms depends on the bloom filter settings, the tokenizer settings, the number of ring tokens per compactor and the total number opf compactors.\n\nCompactors are horizontally scalable and uses a ring to:\n- Shard tenants\n- Shard series fingerprints within a tenant subring.\n\nThe blooms for the series are grouped together in blocks which are flushed to object store.", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "transparent": true, "type": "text" }, @@ -140,6 +143,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -290,6 +294,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -371,6 +376,7 @@ "sortOrder": "Descending", "wrapLogMessage": false }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -467,6 +473,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -576,6 +583,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -645,6 +653,7 @@ "showThresholdMarkers": false, "sizing": "auto" }, + "panels": [ ], "pluginVersion": "11.0.0-68102", "targets": [ { @@ -665,6 +674,7 @@ "type": "gauge" } ], + "targets": [ ], "title": "Progress per pod", "type": "row" }, @@ -696,7 +706,9 @@ "content": "", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "title": "We use tenant sharding so each compactor will process a subset of the tenants.", "transparent": true, "type": "text" @@ -777,6 +789,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -893,6 +906,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -1000,6 +1014,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -1149,6 +1164,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -1273,6 +1289,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -1448,6 +1465,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -1576,6 +1594,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -1678,6 +1697,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -1697,6 +1717,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Resource Usage", "type": "row" }, @@ -1791,6 +1812,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -1904,6 +1926,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -2004,6 +2027,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -2130,6 +2154,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -2150,6 +2175,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Bloom building", "type": "row" }, @@ -2238,6 +2264,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2332,6 +2359,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2426,6 +2454,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2445,6 +2474,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Blocks building", "type": "row" }, @@ -2533,6 +2563,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -2628,6 +2659,7 @@ "sort": "none" } }, + "panels": [ ], "pluginVersion": "11.1.0-69868", "targets": [ { @@ -2648,6 +2680,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Metas building", "type": "row" }, @@ -2679,7 +2712,9 @@ "content": "", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "title": "We use tenant sharding so each compactor will process a subset of the tenants.", "transparent": true, "type": "text" @@ -2759,6 +2794,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2878,6 +2914,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2914,7 +2951,9 @@ "content": "", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "title": "Number of tenant tables processed. ", "transparent": true, "type": "text" @@ -2994,6 +3033,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3113,6 +3153,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3149,7 +3190,9 @@ "content": "", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "title": "Series per compaction (includes series copied from other blocks)", "transparent": true, "type": "text" @@ -3230,6 +3273,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3349,6 +3393,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3385,7 +3430,9 @@ "content": "", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "title": "Number of bytes from chunks added to blocks during each compaction.", "transparent": true, "type": "text" @@ -3466,6 +3513,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3586,6 +3634,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3605,6 +3654,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Data processed", "type": "row" }, @@ -3640,7 +3690,9 @@ "content": "\nCompactors write blocks to the attached PVs before flushing them into the object store.\nIt also download chunks and index files.\n\nAfter compacting a given tenant, all the downloaded index files and chunks, as well as the already flushed blocks are deleted.", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-69747", + "targets": [ ], "title": "", "transparent": true, "type": "text" @@ -3726,6 +3778,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3850,6 +3903,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3946,6 +4000,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4068,6 +4123,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4164,6 +4220,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4286,6 +4343,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4304,6 +4362,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Disk Usage", "type": "row" }, @@ -4339,7 +4398,9 @@ "content": "Once all blocks and metas are built locally, the compactor flushes them to the object store.\n\nAfter each iteration, the compactor deletes the metas and blocks marked for deletion in the tombstones.", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-69747", + "targets": [ ], "title": "", "transparent": true, "type": "text" @@ -4366,7 +4427,9 @@ "content": "---\n#### GCS\n", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-69747", + "targets": [ ], "title": "", "transparent": true, "type": "text" @@ -4447,6 +4510,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4541,6 +4605,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4607,7 +4672,9 @@ "content": "---\n#### S3\n", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-69747", + "targets": [ ], "title": "", "transparent": true, "type": "text" @@ -4688,6 +4755,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4782,6 +4850,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4848,7 +4917,9 @@ "content": "---\n#### Azure\nBlob Storage", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-69747", + "targets": [ ], "title": "", "transparent": true, "type": "text" @@ -4929,6 +5000,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -5023,6 +5095,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -5068,6 +5141,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Object Store", "type": "row" } diff --git a/production/loki-mixin-compiled/dashboards/loki-bloom-gateway.json b/production/loki-mixin-compiled/dashboards/loki-bloom-gateway.json index 27a058ae800e2..2d5e16a9d7e0f 100644 --- a/production/loki-mixin-compiled/dashboards/loki-bloom-gateway.json +++ b/production/loki-mixin-compiled/dashboards/loki-bloom-gateway.json @@ -33,6 +33,7 @@ }, "id": 73, "panels": [ ], + "targets": [ ], "title": "Overview", "type": "row" }, @@ -131,6 +132,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -223,6 +225,7 @@ "showThresholdMarkers": true, "sizing": "auto" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", "targets": [ { @@ -395,6 +398,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -536,6 +540,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -577,6 +582,7 @@ "sortOrder": "Descending", "wrapLogMessage": true }, + "panels": [ ], "targets": [ { "datasource": { @@ -730,6 +736,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -847,6 +854,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -970,6 +978,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -1094,6 +1103,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -1234,6 +1244,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -1336,6 +1347,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -1437,6 +1449,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -1547,6 +1560,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -1647,6 +1661,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -1666,6 +1681,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Resource usage", "type": "row" }, @@ -1799,6 +1815,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -1937,6 +1954,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2032,6 +2050,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2152,6 +2171,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2171,6 +2191,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "QPS and Latency", "type": "row" }, @@ -2260,6 +2281,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2380,6 +2402,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2513,6 +2536,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2532,6 +2556,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Task Queue", "type": "row" }, @@ -2625,6 +2650,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2748,6 +2774,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2870,6 +2897,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -2901,6 +2929,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Processing", "type": "row" }, @@ -2936,7 +2965,9 @@ "content": "", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "title": "We cache bloom blocks in memory to prevent the gateway from hitting the object store too often", "transparent": true, "type": "text" @@ -3021,6 +3052,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3178,6 +3210,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3347,6 +3380,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3458,6 +3492,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3581,6 +3616,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3678,6 +3714,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Blocks Cache", "type": "row" }, @@ -3713,7 +3750,9 @@ "content": "", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "title": "The gateway download bloom meta files and blocks from the object store.", "transparent": true, "type": "text" @@ -3740,7 +3779,9 @@ "content": "---\n#### GCS\n", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "transparent": true, "type": "text" }, @@ -3820,6 +3861,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3913,6 +3955,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -3978,7 +4021,9 @@ "content": "---\n#### S3\n", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "transparent": true, "type": "text" }, @@ -4058,6 +4103,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4151,6 +4197,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4216,7 +4263,9 @@ "content": "---\n#### Azure\nBlob Storage\n\n", "mode": "markdown" }, + "panels": [ ], "pluginVersion": "11.1.0-70005", + "targets": [ ], "transparent": true, "type": "text" }, @@ -4296,6 +4345,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4389,6 +4439,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4433,6 +4484,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Object Store", "type": "row" }, @@ -4528,6 +4580,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4652,6 +4705,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4770,6 +4824,7 @@ "xTickLabelRotation": 0, "xTickLabelSpacing": 0 }, + "panels": [ ], "pluginVersion": "11.0.0-67814", "targets": [ { @@ -4882,6 +4937,7 @@ "sort": "none" } }, + "panels": [ ], "targets": [ { "datasource": { @@ -4912,6 +4968,7 @@ "type": "timeseries" } ], + "targets": [ ], "title": "Misc", "type": "row" } diff --git a/production/loki-mixin/dashboards/loki-bloom-compactor.libsonnet b/production/loki-mixin/dashboards/loki-bloom-compactor.libsonnet index cf93c7c992c53..236ebff8666d7 100644 --- a/production/loki-mixin/dashboards/loki-bloom-compactor.libsonnet +++ b/production/loki-mixin/dashboards/loki-bloom-compactor.libsonnet @@ -9,11 +9,64 @@ local raw = (import './dashboard-bloom-compactor.json'); grafanaDashboards+: { 'loki-bloom-compactor.json': - raw + - $.dashboard('Loki / Bloom Compactor', uid='bloom-compactor') - .addCluster() - .addNamespace() - .addLog() - .addTag(), + raw + { + local replaceClusterMatchers(expr) = + // Replace the recording rules cluster label with the per-cluster label + std.strReplace( + // Replace the cluster label for equality matchers with the per-cluster label + std.strReplace( + // Replace the cluster label for regex matchers with the per-cluster label + std.strReplace( + expr, + 'cluster=~"$cluster"', + $._config.per_cluster_label + '=~"$cluster"' + ), + 'cluster="$cluster"', + $._config.per_cluster_label + '="$cluster"' + ), + 'cluster_job', + $._config.per_cluster_label + '_job' + ), + + panels: [ + p { + targets: if std.objectHas(p, 'targets') then [ + e { + expr: replaceClusterMatchers(e.expr), + } + for e in p.targets + ] else [], + panels: if std.objectHas(p, 'panels') then [ + sp { + targets: if std.objectHas(sp, 'targets') then [ + spe { + expr: replaceClusterMatchers(spe.expr), + } + for spe in sp.targets + ] else [], + panels: if std.objectHas(sp, 'panels') then [ + ssp { + targets: if std.objectHas(ssp, 'targets') then [ + sspe { + expr: replaceClusterMatchers(sspe.expr), + } + for sspe in ssp.targets + ] else [], + } + for ssp in sp.panels + ] else [], + } + for sp in p.panels + ] else [], + } + for p in super.panels + ], + } + + $.dashboard('Loki / Bloom Compactor', uid='bloom-compactor') + .addCluster() + .addNamespace() + .addLog() + .addTag(), }, } diff --git a/production/loki-mixin/dashboards/loki-bloom-gateway.libsonnet b/production/loki-mixin/dashboards/loki-bloom-gateway.libsonnet index e5ca9f2ff3fd8..db9c907839117 100644 --- a/production/loki-mixin/dashboards/loki-bloom-gateway.libsonnet +++ b/production/loki-mixin/dashboards/loki-bloom-gateway.libsonnet @@ -9,11 +9,64 @@ local raw = (import './dashboard-bloom-gateway.json'); grafanaDashboards+: { 'loki-bloom-gateway.json': - raw + - $.dashboard('Loki / Bloom Gateway', uid='bloom-gateway') - .addCluster() - .addNamespace() - .addLog() - .addTag(), + raw + { + local replaceClusterMatchers(expr) = + // Replace the recording rules cluster label with the per-cluster label + std.strReplace( + // Replace the cluster label for equality matchers with the per-cluster label + std.strReplace( + // Replace the cluster label for regex matchers with the per-cluster label + std.strReplace( + expr, + 'cluster=~"$cluster"', + $._config.per_cluster_label + '=~"$cluster"' + ), + 'cluster="$cluster"', + $._config.per_cluster_label + '="$cluster"' + ), + 'cluster_job', + $._config.per_cluster_label + '_job' + ), + + panels: [ + p { + targets: if std.objectHas(p, 'targets') then [ + e { + expr: replaceClusterMatchers(e.expr), + } + for e in p.targets + ] else [], + panels: if std.objectHas(p, 'panels') then [ + sp { + targets: if std.objectHas(sp, 'targets') then [ + spe { + expr: replaceClusterMatchers(spe.expr), + } + for spe in sp.targets + ] else [], + panels: if std.objectHas(sp, 'panels') then [ + ssp { + targets: if std.objectHas(ssp, 'targets') then [ + sspe { + expr: replaceClusterMatchers(sspe.expr), + } + for sspe in ssp.targets + ] else [], + } + for ssp in sp.panels + ] else [], + } + for sp in p.panels + ] else [], + } + for p in super.panels + ], + } + + $.dashboard('Loki / Bloom Gateway', uid='bloom-gateway') + .addCluster() + .addNamespace() + .addLog() + .addTag(), }, }