Англійська для розробників Loki Logging
Вивчення англійської лексики для Grafana Loki: мітки, потоки, LogQL, а також пояснення команді системи агрегування журналів індекс- світла.
Розмови Loki постійно обертаються навколо одного головного компромісу: на відміну від традиційних систем журналів, Loki індексує лише позначки, а не повний вміст журналу, отже, словник зосереджено на дизайні позначок і як цей вибір впливає на швидкість запиту.
Ключовий словник
** Мітка ** — пара ключ- значення, приєднана до потоку журналу (наприклад, service або environment ), який Loki фактично індексує, на відміну від текстового вмісту рядка журналу, який зберігається, але не індексується.
“Не вставляйте ідентифікатор запиту у мітку — мітки призначені для вимірів з низькою кардиналістю, таких як назва служби, а унікальна мітка на запит розширить індекс.”
** Потік ** — набір рядків журналу, які мають однакову комбінацію значень міток, які Loki зберігає разом; нова унікальна комбінація міток створює новий потік. “Кожен ідентифікатор користувача, який ми вставляємо у мітку, створює новий потік — саме тому розмір індексу вибухає, а не обсяг самих рядків журналу.”
** Кардинальність ** — кількість різних значень, які може мати мітка, що безпосередньо визначає кількість потоків, які Loki має стежити, і є найбільшим фактором, що впливає на швидкодію і вартість. “Ця мітка має фактично необмежену значення, оскільки це UUID — пересунути її до вмісту рядка журналу і запитати її за допомогою фільтра LogQL, замість цього не індексувати її як мітку.”
** LogQL ** — мова запиту Loki, яка спочатку обирає набір потоків за допомогою відповідників міток, а потім фільтрує або аналізує фактичний вміст рядків журналу у цих потоках.
- “Спочатку зменшити вибір потоків за допомогою міток, а потім відфільтрувати за вмістом — запит LogQL, який сканує кожен потік, оскільки вибір міток занадто широкий, завжди буде повільним.” *
** Chunk ** — стиснута одиниця даних журналу, яку Loki зберігає для потоку, записується, коли накопичений вміст досягає певного розміру або поріг часу, а також рівень, на якому фактично відбувається отримання вмісту журналу. “Затримка запиту тут не стосується міток — це стосується кількості шматків, які потрібно розпакувати і сканувати, коли запит переходить до фільтрування вмісту журналу.”
Звичайні фрази
- «Чи це позначка, чи має вона достатньо високу кардинальність, щоб вона належала до вмісту рядка журналу?»
- Чи це створює новий потік за запитом, або комбінації позначок насправді обмежені?
- Чи запит LogQL знижує позначення спочатку, чи він сканує занадто багато потоків перед фільтруванням вмісту?
- Чи повільність походить від вибору потоку, або від декомпресії занадто багато шматків під час фільтрування контенту?
Приклади висловлювань
Діагностика проблеми з розміром індексу: “Кошти на зберігання зросли, тому що хтось додав мітку на запит — це перетворює кожен запит на свій власний потік замість групування запитів під спільною, низькокардинальною міткою.”
Перегляд повільного запиту:
- “Цей запит LogQL фільтрує лише за вмістом журналу і ледве зводить його до мітки — він сканує набагато більше потоків, ніж йому потрібно, перш ніж навіть приступити до фільтрування.” *
Пояснення архітектури комусь з досвіду роботи з Elasticsearch: “Loki не індексує повний текст, як Elasticsearch — він індексує лише мітки, отже швидкість запиту сильно залежить від того, наскільки добре вибір міток сужає об’ єкти до початку фільтрування вмісту.”
Професійні поради
- Розглядати ** мітку ** кардинальність як жорстке обмеження з першого дня — перебудова мітки високої кардинальності з запущеної системи є набагато болючішою, ніж уникнення її заздалегідь.
- Поясніть ** потоки ** конкретно при впровадженні команд з інших систем ведення журналів — ментальна модель «одна унікальна комбінація міток дорівнює одному потоку» запобігає більшості ранніх помилок кардинальності.
- Позначити будь- яку мітку, яка може бути UUID, ідентифікатором запиту або штампом часу — це найпоширеніші ** кардиналізації ** катастроф у перегляді.
- Пересувати всі повільні запиту ** LogQL ** до сужуваного за міткою, перш ніж воно відфільтрує вміст — запиту, які ведуть до фільтрування неіндексованого вмісту, є найпоширенішою проблемою з швидкодією.
Практичні вправи
- Поясніть співробітнику команди, чому ідентифікатор запиту ніколи не слід використовувати як мітку Loki.
- Описує, яким чином значення мітки безпосередньо впливає на кількість потоків, якими Loki має керувати.
- Напишіть речення, у якому буде показано запит LogQL, який фільтрує вміст перед достатнім суженням за міткою.
Національний склад населення: Перепис населення та проживання
Будьмо чесними - навіть досвідчені розробники можуть спіткати, коли вони спілкуються технічними ідеями англійською. Для не-рідних носіїв, тонкощі професійного жаргону, особливо в контексті DevOps і інструментів спостережливості, таких як Grafana Loki, можуть бути особливо викликом. Це не просто про знання слів; це про передачу вашого значення чітко, з повагою і співпрацею - щось, що часто вимагає іншого підходу до прямого перекладу. Ключова область, де це проявляється, це отримання і відповідь на зворотній зв’язок про перегляд коду або PR.
Часто початковий коментар, який ви отримуєте, не обов’ язково є критикою * вашого * коду, а скоріше пропозицією щодо поліпшення, що вписується у певний технічний стандарт або найкращу практику. Наприклад, рецензент може сказати: «Цей потік може отримати користь від більш описових міток — розгляньте можливість додавання service і environment ». Це не про вказівку на помилку; це про керування вас до більш надійного і підтримуваного рішення. Аналогічно, повідомлення Slack, що вимагає пояснення певного запиту LogQL («Чи можете ви пояснити, чому ця налаштування індексу світла працює?») Вимагає ретельної фрази, щоб продемонструвати розуміння і бажання взяти участь у глибшій дискусії. Уникнення надмірно буквальних перекладів - таких як просто сказати “Я не розумію” - є ключовим. Замість цього, спробуйте такі фрази, як: «Чи можете ви розкрити обґрунтування за використанням цього конкретного запиту?» або «У мене є проблеми з підключенням цього шаблону LogQL до архітектури індекс-світла; чи можете ви провести мене через це знову?»
Крім того, мова, використана в описах PR, відіграє важливу роль у встановленні очікувань і сприянні співпраці. Добре написаний опис повинен чітко описувати * чому * було внесено зміни, посилаючись на відповідні мітки або шаблони запитів. Не достатньо просто вказати « Виправлено помилку ». Замість цього, намагайтеся вказати щось на зразок: « Впроваджено фільтрування міток за допомогою поля user_id, щоб зменшити навантаження індексу. Цей пункт розв’ язує проблему # 1234 і покращує швидкодію запиту приблизно на 15% (на основі початкового тестування)». Цей рівень деталізації демонструє активний підхід і надає змогу переглядачам швидко оцінити вплив ваших змін.
Нарешті, пам’ятайте, що прохання про пояснення завжди прийнятно - насправді, це заохочується! Це сигналізує про залучення і прихильність до навчання. Не бійтеся визнати, що вам потрібні подальші пояснення; набагато краще запитати, ніж неправильно зрозуміти і, можливо, ввести непередбачені наслідки.
# Example Loki LogQL query demonstrating label usage
lokiql() {
echo "query = stream_name = \"metrics\" version = 1.0" | \
lokiql --query="label_join(stream_name=\"metrics\", fields=\[\"service\", \"environment\", \"job_name\"])"
}