Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

5 порад, щоб покращити продуктивність запитів Grafana Loki

Усі статті, обговорення, новини про DevOps — в одному місці. Підписуйтеся на DOU | DevOps!

Grafana Loki розроблено таким чином, щоб бути економічно ефективною і простою для роботи DevOps і SRE системою, але виконання запитів у Loki може заплутати.

Loki — горизонтально маштабована, високодоступна, multi-tenant система агрегації логів за подобою Prometheus. Loki не індексує вміст логів, а індексує набір міток для кожного потоку логів. Це потребує іншого підходу до запитів, але не хвилюйтеся — тут дуже легко працювати з потужними, ефективними запитами.

У цій публікації розглянемо п’ять порад, якими можна скористатися, щоб покращити продуктивність запитів у Loki.

5 способів покращити продуктивність запитів Loki

Якщо вам потрібна додаткова інформація про те, чим Loki відрізняється від повнотекстових індексних рішень, перегляньте це відео про основи запитів Loki. Ви також можете прочитати документацію для LogQL, мови запитів, яка використовується в Loki.

Давайте розглянемо кілька простих способів ще швидше отримати статистику з даних логів. Як ви побачите, у цих порад є спільне — максимально скоротіть і уточніть пошукові запити.

1. Селектори міток або потоків логів

Перший і найважливіший спосіб покращити продуктивність запитів Loki — це селектор міток або потоку логів. Подумайте про мітки як про метадані для потоків логів. Це пари ключ-значення, які визначають потік у Loki, і якщо значення мітки змінюється, створюється новий потік.

Отже, коли ви звужуєте свій селектор міток, це зменшує розмір набору логів по якому має шукати Loki, що означає швидші запити. Наприклад, замість використання wildcard селектора міток, використовуйте точний селектор міток. На знімку екрана нижче ви бачите, що ми вибрали програму, середовище та компонент, які здійснюватимуть пошук у набагато вужчому наборі даних, ніж запит кожного логу, пов’язаного з цією програмою.

2. Лінійні фільтри

Вирази лінійних фільтрів — це ще один чудовий спосіб прискорити запити за рахунок скорочення даних, які аналізуються. Фільтри працюють шляхом виконання розподіленої команди «grep» над логами з відповідних потоків, відкидаючи ті, які не відповідають виразу фільтра. Це слід зробити відразу після того, як ви введете будь-які селектори міток, щоб звузити список до найбільш відповідних даних із вибраних потоків.

У наведеному нижче прикладі після пошуку логів програми myapp у середовищі `prod` ми фільтруємо рядки, які містять рядок «/api/», а потім рядки, які містять «requests»:

Наскільки це можливо, уникайте регулярних виразів у своїх фільтрах. Хоча це дасть вам більш точні результати, це матиме негативний вплив на продуктивність, оскільки фільтри регулярних виразів є дещо менш продуктивними, ніж звичайне зіставлення підрядків. На знімку екрана вище ми використали менш ненажерливий фільтр без регулярних виразів ( │= «/api/» │= «requests»), який повертатиме результати швидше, ніж альтернативний варіант.

Нарешті, зауважте, що, як і в цьому прикладі, оператори фільтрів можуть бути з’єднані та застосовуватися послідовно.

3. Вибір часового діапазону

Якщо ви знайомі з Grafana, ви розумієте важливість вибору відповідного діапазону часу для вашої візуалізації за допомогою засобу вибору часу. Що ж, той самий принцип застосовується до запитів Grafana Loki. Навіть якщо вам потрібно здійснити пошук по кількох останніх днях, вам краще почати з малого. Якщо, наприклад, ви вибрали одногодинний часовий діапазон, потрібно буде обробити набагато менше даних, ніж якби ви вибрали 24-годинний часовий діапазон.

Менші інтервали полегшують ітерацію та уточнення вашого запиту. Після цього ви можете розширити свій часовий проміжок, щоб отримати повні результати, які вам потрібні. Крім того, у міру частішого використання цієї функції ви помітите, що нещодавно використані інтервали почнуть автоматично заповнювати випадаюче меню для полегшення вибору в майбутньому.

4. Парсери

Парсери LogQL використовуються для вилучення структурованих полів із неструктурованих рядків логів. Наразі Loki підтримує чотири типи парсерів, які перераховані тут у порядку від найшвидшого до найповільнішого: шаблон, logfmt, JSON і регулярний вираз.

Обов’язково відфільтруйте результати, щоб отримати максимальну ефективність парсингу, оскільки це зменшує кількість логів, для яких потрібно робити запит; фільтрація перед розбором завжди буде ефективнішою, ніж навпаки! Після аналізу у вас зазвичай є один або кілька операторів рівності. Залежно від варіанту використання, це також може бути фільтр для покращення продуктивності.

5. Правила запису

Щоб покращити продуктивність ваших запитів Loki у Grafana, ми рекомендуємо використовувати правило запису для часто використовуваних показників. Це може включати показники на інформаційних панелях або ті, які обробляють багато даних.

Правила зберігатимуться у сумісному з Prometheus сервері, наприклад у Grafana Mimir або будь-якому іншому бажаному сховищі. Це допоможе заощадити гроші, оскільки ефективніше для довгострокових запитів.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Підписатись на коментарі