Правильний збір логів

  1. Зміст статті Є у мене одна слабкість - я люблю різні системи моніторингу. Тобто для мене ідеальна...
  2. loggly
  3. PaperTrail
  4. Logentries
  5. NewRelic
  6. logstash
  7. Fluentd

Зміст статті

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

Завдання насправді не така вже тривіальна. По-перше, потрібно агрегувати логи з абсолютно різних систем, які часто не мають нічого спільного між собою. По-друге, потрібно прив'язувати їх до однієї тимчасової шкалою, щоб події можна було між собою корелювати. І по-третє, потрібно ефективно влаштувати зберігання і пошук по цьому величезного масиву даних. Втім, як це зазвичай буває, про складну частини вже подбали до нас. Я пробую кілька різних варіантів і тому зроблю міні-огляд того, з чим уже встиг попрацювати.

Найпростіший варіант, який на перших порах відмінно працював для мене, - використовувати хмарний сервіс. Подібні інструменти активно розвиваються, надають підтримку все більшої кількості технологічних стеків і підлаштовуються по специфіку окремих IaaS / PaaS'ов начебто AWS і Heroku.

Splunk

Про цей сервіс писав в колонці і я, і недавно Олексій Синцов. Взагалі кажучи, це не просто агрегатор логів, а потужна система аналітики з багаторічною історією. Тому завдання зібрати логи і агрегувати їх для подальшої обробки і пошуку - для нього нікчемна справа. Існує більше 400 різних додатків, в тому числі понад ста в області IT Operations Management, які дозволяють збирати інформацію з твоїх серверів і додатків.

loggly

Цей сервіс вже спеціально заточений для аналізу журналів і дозволяє агрегувати будь-які види текстових логів. Ruby, Java, Python, C / C ++, JavaScript, PHP, Apache, Tomcat, MySQL, syslog-ng, rsyslog, nxlog, Snare, роутери та свитчи - неважливо. Безкоштовно можна збирати до 200 Мб в день (що чимало), а найближчий платний тариф починається від 49 доларів. Працює дуже здорово.

Працює дуже здорово

windows-loggly

PaperTrail

Відмінний сервіс, який агрегує логи додатків, будь-які текстові журнали, syslog та інше. Що цікаво: з агрегованими даними можна працювати через браузер, командний рядок або API. Пошук здійснюється простими запитами на кшталт «3pm yesterday» (отримати дані з усіх систем о третій годині ночі за вчорашній день). Всі пов'язані події будуть згруповані. Для будь-якої умови можна зробити Алерт, щоб вчасно отримати попередження (змінилися налаштування в конфігах). Для зберігання логів можна використовувати S3. У перший місяць дають 5 Гб бонусом, далі безкоштовно надається тільки 100 Мб на місяць.

У перший місяць дають 5 Гб бонусом, далі безкоштовно надається тільки 100 Мб на місяць

papertrail

Logentries

Ще один непоганий сервіс для збору даних, що дозволяє збирати до гігабайта логів в місяць безкоштовно. А можливості все ті ж: потужний пошук, tail в режимі реального часу (виводиться все, що «прилітає» з логів на поточний момент), зберігання даних в AWS, моніторинг PaaS, IaaS і популярних фреймворків, мов. На безкоштовному тарифі можна зберігати дані за сім днів.

На безкоштовному тарифі можна зберігати дані за сім днів

logentries

NewRelic

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

Мої експерименти з онлайн-сервісами закінчилися, коли даних стало так багато, що за їх агрегацію довелося б платити тризначні суми. Втім, виявилося, що розгорнути подібне рішення можна і самому. Тут два основні варіанти.

logstash

Це відкрита система для збору подій і балок, яка добре себе зарекомендувала в співтоваристві. Розгорнути її, звичайно, нескладно - але це вже й не готовий сервіс з коробки. Тому будь готовий до Багам в скупий документації, глюків модулів і подібного. Але зі своїм завданням logstash справляється: логи збираються, а пошук здійснюється через веб-інтерфейс.

Fluentd

Якщо вибирати standalone-рішення, то Fluentd мені сподобався більше. На відміну від logstash, яка написана на JRuby і тому вимагає JVM (яку я не люблю), вона реалізована на CRuby і критичні по продуктивності ділянки написані на C. Система знову ж відкрита і дозволяє збирати великі потоки логів, використовуючи понад 1500 різних плагінів. Вона добре документована і гранично зрозуміла. Поточний варіант збирача логів у мене розгорнуто саме на Fluentd.

Вперше опубліковано в Хакер # 03/182

Дополнительная информация

rss
Карта