Як ви аналізуєте файли журналів з машин UNIX / Linux? Ми запускаємо кілька сотень серверів, які генерують власні файли журналів, безпосередньо або через syslog. Я шукаю гідне рішення, щоб зібрати ці та вибрати важливі події. Ця проблема розпадається на 3 компоненти:
1) Транспорт повідомлень
Класичний спосіб - використовувати syslog для реєстрації повідомлень на віддаленому хості. Це добре працює для програм, які входять у syslog, але менш корисні для додатків, які записують у локальний файл. Рішення для цього можуть включати в себе запис журналу додатків у FIFO, підключений до програми для надсилання повідомлення за допомогою syslog, або написання чогось, що дозволить зірвати локальні файли та надіслати вихід на центральний хост syslog. Однак, якщо ми підемо на проблему написання інструментів для отримання повідомлень у syslog, чи краще нам замінити всю партію чимось на зразок Scribe у Facebook, який пропонує більшу гнучкість та надійність, ніж syslog?
2) Агрегація повідомлень
Записи журналу поділяються до одного з двох типів: за хостом та за послугу. Повідомлення на хост - це ті, які трапляються на одній машині; Подумайте про збої диска або підозрілі входи. Повідомлення за послугу трапляються на більшості або всіх хостах, які працюють із послугою. Наприклад, ми хочемо знати, коли Apache виявляє помилку SSI, але ми не хочемо тієї ж помилки на 100 машинах. У всіх випадках ми хочемо бачити лише одне із кожного типу повідомлень: ми не хочемо, щоб 10 повідомлень про те, що той самий диск вийшов з ладу, і ми не хочемо повідомлення кожного разу, коли пошкоджена SSI-адреса.
Один із підходів до вирішення цього питання полягає в об'єднанні декількох повідомлень одного типу в одне на кожному хості, відправлення повідомлень на центральний сервер, а потім об'єднання повідомлень одного типу в одну загальну подію. SER може це зробити, але це незручно використовувати. Навіть через пару днів неприємностей у мене працювали лише рудиментарні агрегації, і мені доводилося постійно шукати логіку використання СЕР для кореляції подій. Це потужний, але хитрий матеріал: мені потрібно щось, що мої колеги можуть забрати та використати в найкоротші терміни. Правила SER не відповідають цій вимозі.
3) Генерація сповіщень
Як ми повідомляємо своїх адміністраторів, коли трапляється щось цікаве? Надіслати групу вхідних повідомлень групи? Ін’єкції в Нагіос?
Отже, як ти вирішуєш цю проблему? Я не очікую відповіді на тарілці; Я можу опрацювати деталі самостійно, але було б чудово обговорити те, що, звичайно, є загальною проблемою. На даний момент ми використовуємо меш-мейд із роботи із крон, syslog і хто знає, що ще знайти події. Це не розширюється, не може бути гнучким або гнучким, і, як такий, ми пропускаємо багато чого, чого не повинні.
Оновлено: ми вже використовуємо Nagios для моніторингу, що чудово підходить для виявлених хостів / послуг тестування / тощо, але менш корисно для скреблінгу файлів журналів. Я знаю, що для Nagios є додатки для журналів, але мене цікавить щось більш масштабоване та ієрархічне, ніж сповіщення про кожного хоста.