Англійська для розробників 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 ** до сужуваного за міткою, перш ніж воно відфільтрує вміст — запиту, які ведуть до фільтрування неіндексованого вмісту, є найпоширенішою проблемою з швидкодією.

Практичні вправи

  1. Поясніть співробітнику команди, чому ідентифікатор запиту ніколи не слід використовувати як мітку Loki.
  2. Описує, яким чином значення мітки безпосередньо впливає на кількість потоків, якими Loki має керувати.
  3. Напишіть речення, у якому буде показано запит 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\"])"
}

Поширені запитання

Про що ця стаття "Англійська для розробників Loki Logging"?

Вивчення англійської лексики для Grafana Loki: мітки, потоки, LogQL, а також пояснення команді системи агрегування журналів індекс- світла.

Чи безкоштовна ця стаття?

Так. Усі статті на CoderSlingo, включно з цією, доступні безкоштовно без реєстрації.

Скільки часу займає читання "Англійська для розробників Loki Logging"?

Приблизно 6 min.