7 найкращих інструментів управління журналами для Kubernetes 2020 [переклад]

Шукаєте інструменти керування журналами у Kubernetes? Подивіться на ці 7 відмінних інструментів для більш простого та ефективного ведення журналів!


Оригінал: 7 Best Log Management Tools for Kubernetes 2020
Автор: Max Shash

Kubernetes домінує на ринку менеджменту контейнерів та часто використовується для розміщення мікросервісів. Кожен екземпляр мікросервісу генерує велику кількість подій журналу, керування якими може швидко стати скрутним. Але що ще гірше, коли щось йде не так – знайти першопричину може бути складно через взаємодію між сервісами та майже нескінченну кількість можливих режимів відмови. Саме можливість виникнення проблем призвела до зростання популярності інструментів управління журналами для Kubernetes.

Але чому на ринку так багато інструментів? Чи є один ідеальний інструмент, який задовольнить усі потреби та зробить моніторинг, ведення журналу та аналіз причин максимально ефективним та швидким? Як ви вже здогадалися, ні.

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

Читайте мій список найкращих інструментів управління журналами для Kubernetes у 2020 році.

1. Zebrium

Ви очікували, що спочатку з'явиться інший інструмент? Може, Prometheus чи ELK? Ні, я поставив Zebrium на перше місце, тому що бачу, що цей інструмент може стати наступним великим кроком у керуванні журналами Kubernetes.

Цей новий стартап нещодавно був включений до рейтингів Gartner «25 найкращих стартапів у галузі корпоративного програмного забезпечення, за якими варто стежити у 2020 році» і Forbes “Найбільш перспективні компанії Америки в галузі штучного інтелекту”.

Говорячи про успіх, Zebrium також нещодавно допоміг Sweetwater скоротити час відстеження інцидентів з 3 годин до кількох хвилин. Zebrium може навіть виявити приховані проблеми, на які раніше не звертали уваги. Це відмінна функція, оскільки вона допомагає виявити проблеми, перш ніж вони вплинуть на клієнтів.

То що відрізняє підхід Zebrium від конкурентів? Вони використовують штучний інтелект (ШІ), щоб знаходити проблеми, а також автоматично виявляти основну причину, в той час, як всі інші інструменти покладаються на додавання правил користувачами вручну. Zebrium можна також використовувати як окрему платформу управління журналами або інтегрувати зі стеком ELK (вони називають його стеком ZELK :-) або іншими менеджерами журналів.

Схоже, мрія збулася, тож я протестував її на дуже простому проекті.У цьому тесті Zebrium автоматично виявив проблему, пов'язану з тайм-аутом мережного виклику. Я не створював жодних правил та не контролював систему вручну. Zebrium визначив проблему за допомогою своїх алгоритмів на основі машинного навчання та негайно видав повідомлення.

Також важливо відзначити, що я не професійний DevOps інженер і ще не тестував Zebrium на великих проектах.

Плюси:

  1. Легко розпочати; просто скопіюйте / вставте команду helm або kubectl.
  2. Автоматичне виявлення проблем та причин без застосування ручних правил.
  3. Може використовуватися як автономний інструмент керування журналами або як надбудова машинного навчання до існуючого інструменту керування журналами, наприклад, стеку ELK.

Мінуси:

  1. Не такий відомий, як його конкуренти.
  2. Безкоштовний план обмежений 500 МБ на день із 3-денним зберіганням.
  3. Підтримує Kubernetes, Docker та найпоширеніші платформи, але поки що не підтримує Windows.

2. Sematext

Це рішення для управління журналами та моніторингу продуктивності програм. Sematex забезпечує повну видимість стану системи.

Sematext не обмежується журналами K8s, але також виконує моніторинг та оповіщення за метриками та журналами. Зібрані журнали аналізуються / структуруються автоматично для декількох відомих форматів журналів. Можна налаштувати шаблони і для журналів користувача.

Sematext також надає API-інтерфейс Elasticsearch. Тому можна використовувати будь-який інструмент, який працює з Elasticsearch. Наприклад Filebeat і Logstash. Ви можете використовувати його як варіант ELK або з власною екосистемою Sematext. Інструмент допомагає створювати певні правила для відстеження конкретних випадків та виявлення аномалій. Клієнти можуть контролювати та відстежувати всі сервіси завдяки комплексній панелі управління Sematex в режимі реального часу.

Плюси:

  1. Інтеграція з іншими інструментами Sematext Cloud, такими як Experience та Infrastructure Monitoring.
  2. Можна налаштовувати обмеження вартості, припиняючи прийом журналів.
  3. Гнучкість як у ELK.

Мінуси:

  1. Віджети Sematext та Kibana не можна змішувати на одній панелі.
  2. Користувальницький синтаксичний аналіз повинен виконуватися у відправнику журналів, Sematext аналізує лише Syslog та JSON на стороні сервера.
  3. Слабка функція трасування, хоча вони планують її покращити.

3. Loki от Grafana

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

Плюси:

  1. Велика екосистема.
  2. Широкі можливості візуалізації.
  3. Ефективність через відсутність індексації вмісту журналу.

Мінуси:

  1. Не оптимізован для керування журналами Kubernetes.
  2. Багато ручної роботи зі створення правил.
  3. Відсутність індексації контенту потенційно знижує продуктивність пошуку.

4. ELK Stack - Elastic Stack

Нарешті, ELK посідає четверте місце у списку. ELK, мабуть, найвідоміший інструмент із відкритим вихідним кодом для управління журналами загалом. ELK - це абревіатура від Elasticsearch, Logstash та Kibana; кожен компонент піклується про різні частини процесу журналювання.

Elasticsearch - це потужна та масштабована пошукова система, Logstash збирає та обробляє журнали, а Kibana надає інтерфейс для аналізу та візуалізації, який допомагає користувачам аналізувати дані. Разом вони забезпечують комплексне рішення для журналу даних для K8s. Зверніть увагу, що існує безліч інших варіантів стеку ELK (наприклад, EFK Stack - Elasticsearch, Fluentd та Kibana).

ELK використовується багатьма великими компаніями, такими як Adobe, T-Mobile та Walmart, тому ви можете бути впевнені у його надійності. В цілому це надійний інструмент, що добре зарекомендував себе. Я не поставив його на третє місце через його складність та значні ресурси, необхідні для роботи.

Плюси:

  1. Інструмент добре відомий і має величезну спільноту.
  2. Дуже широка підтримка платформи.
  3. Багаті можливості аналізу та візуалізації в Kibana.
  4. Потрібен складний аналіз журналів та ручне визначення правил.

Мінуси:

  1. Важко підтримувати під час масштабування.
  2. Багато налаштувань, особливо для великих оточеннь.
  3. Велике споживання ресурсів.
  4. Для деяких функцій потрібна платна ліцензія.

5. Google Operations - Stackdriver

Google Operations, який ви, можливо, знаєте як Stackdriver, - це вбудований інструмент для моніторингу, усунення несправностей та підвищення продуктивності програм у середовищі технологічного гіганта Google. Він збирає показники, журнали та трасування в Google Cloud та ваших додатках. Google Operations є еквівалентом CloudWatch на AWS і, як і CloudWatch, має рішення для ведення журналів та моніторингу.

Cloud Logging глибоко інтегрований з GKE і за умовчанням додається до кожного створеного вами кластера GKE. Ваші журнали зберігаються у сховищі даних та індексуються як для пошуку, так і для візуалізації. Cloud Logging підтримує гнучкі запити (які можна зберігати), прості польові дослідження та візуалізації гістограм та може бути легко інтегрований з іншими інструментами з інфраструктури Google.

Плюси:

  1. Управління та аналіз журналів у реальному часі.
  2. Вбудоване відстеження показників під час масштабування.
  3. Безліч інтеграцій.

Мінуси:

  1. Важко відстежити реальну затримку, тому що запит проходить через різні рівні Google Cloud Platform (GCP).
  2. Підходить лише для середовищ GCP.
  3. Система ціноутворення - складно заздалегідь оцінити, скільки щось коштуватиме.

6. CloudWatch

CloudWatch - це рішення для Amazon Web Services. Воно збирає моніторингові та операційні дані з AWS і візуалізує їх на єдиній автоматизованій панелі управління. Це дозволяє вам переглядати та складати журнали та показники, щоб знайти основну причину проблеми. Журнали можна аналізувати за допомогою спеціальної мови запитів CloudWatch, яка підтримує агрегування, фільтри та регулярні вирази. Ви також можете надсилати журнали в Elasticsearch через Lambda.

В цілому CloudWatch - відмінний вибір, якщо ви вже працюєте з сервісами Amazon. Його також можна використовувати в гібридних хмарних архітектурах і використовувати агент або API для моніторингу локальних ресурсів. CloudWatch використовує безліч великих компанія, таких як Airbnb, Deliveroo, 9GAG та інші. Він також може економити компаніям мільйони щорічно завдяки DynamoDB TTL.

Плюси:

  1. Створений спеціально для моніторингу ресурсів AWS.
  2. Має метрики стрибкоподібних екземплярів.
  3. Детальний моніторинг та автоматичне масштабування груп.

Мінуси:

  1. Його можна використовувати лише для сервісів AWS.
  2. Небагато варіантів налаштування дашбордів.
  3. Не підтримує трасировку транзакцій.

7. Fluentd

Fluentd - це кроссплатформенний колектор даних з відкритим вихідним кодом, що пропонує уніфікований рівень ведення журналу (але це не автономний менеджер журналів). Це досить популярний інструмент, яким користуються понад 5000 компаній, включаючи Atlassian, Microsoft та Amazon. Дивлячись на клієнтів, можна зробити висновок про високий рівень надійності та продуктивності. Крім того, Fluentd створює єдиний рівень ведення журналу, який допомагає більш ефективно використовувати дані та швидко виконувати їхню обробку у вашому програмному забезпеченні. Із цим інструментом можна обробляти до 120 000 записів за секунд.

Плюси:

  1. Велика спільнота та екосистема плагінів.
  2. Єдиний рівень ведення журналу.
  3. Перевірена надійність та продуктивність.
  4. Простий старт: можна встановити менш ніж за 10 хвилин.

Мінуси:

  1. Важко налаштувати.
  2. Обмежена підтримка перетворення даних.
  3. Не повне рішення для ведення журналу.

Висновок: Як правильно вибрати інструмент?

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

Отже, якщо вам набридло вручну шукати в журналах першопричину або створювати правила оповіщеннь та керувати ними, спробуйте Zebrium з алгоритмами на основі AI та ML. Це, ймовірно, заощадить багато часу і позбавить вас від трудомісткого завдання створення безлічі правил.

Але якщо ви шукаєте щось масове і знаєте, які правила оповіщеннь створювати - або ви не довіряєте ШІ - спробуйте Loki або Sematext. Це ефективні інструменти, які підійдуть, навіть якщо ви раніше не використовували інструменти моніторингу журналів. Вони будуть особливо корисними, якщо ви користуєтеся продуктами Grafana або Sematext Cloud/Enterprise.

Якщо ви використовуєте Google GCP для свого проекту, хорошим і цілком очевидним варіантом може бути Google Operations.

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

І, звичайно ж, якщо ви користувач AWS, CloudWatch стане вашим очевидним вибором.