Skip to content

Instantly share code, notes, and snippets.

@patsevanton
Created August 11, 2019 14:10
Show Gist options
  • Save patsevanton/0c28b19dca2ae9c40ddff87bd4d67389 to your computer and use it in GitHub Desktop.
Save patsevanton/0c28b19dca2ae9c40ddff87bd4d67389 to your computer and use it in GitHub Desktop.
journald - unify data collection
kvaps, [11.08.19 04:06]
By the way, обновил journalbeat в кластере, помимо add_kubernetes_metadata добавил decode_json_fields processor, теперь если сервис пишет логи в JSON, он автоматически распознаёт и парсит его
Alexander Shinkarenko, [11.08.19 08:18]
[In reply to George Gaál]
А в чем его преимущество?
George Gaál, [11.08.19 08:27]
[In reply to Alexander Shinkarenko]
тем, что он сохраняет логи в локальном хранилище и не ломает docker logs (мы не говорим про docker-ee)
kvaps, [11.08.19 12:01]
[In reply to Alexander Shinkarenko]
1. Собираются не только логи докера, но также и все системные логи тоже, один единственный демон journalbeat на ноду передаёт их все в эластик
2. Journald - является central point для всех логов в системе. Докер пишет логи в системный journald а не складывет в json рядом с контейнером.
3. Бинлог journald занимает в десятки меньше места чем текстовые логи, тем более в формате json, кроме того
Journald автоматически ротейтит все логи
4. Journalbeat поддерживает т.н. cursor, т.е. умеет запоминать позицию где остановился, и после перезапуска начинать с неё же
5. Не нужно заморачиваться с настройкой часов и таймзон для контейнеров. Journald автоматически пишет правильное время системы.
6. Ну и в добавок вышеупомянутые add_kubernetes_metadata и decode_json_fields, позволяют, без проблем, обогатить логи метаданными из кубернетиса и рекурсивно распарсить JSON в логах
kvaps, [11.08.19 12:08]
[In reply to Ivan Urgent]
Да, то есть теперь можно не думать о настройке каждого приложения отдельно: если контейнер пишет лог в JSON, он будет автоматически распарсен и засунут в эластик
Павел Селиванов, [11.08.19 12:23]
[In reply to kvaps]
Все правда.
Две вещи из за которых я отказался от логов всего и вся в journald:
1. Ограничение на длину лога. Как минимум json бывает разрывает и это не очень. Неприятней если разрыв случается в логе на русском. Разрывает посередине буквы и в итоге сохраняет кракозябру в конце и начале кусков сообщения вместо буквы.
2. Есть лимиты по сообщениям в единицу времени. Тюнится в конфиге, но всегда упирается в самое неподходящее время. При достижении рейтлимита начинает просто отбрасывать сообщения.
Если кто решит перейти, нужно учитывать.
Anton Patsev, [11.08.19 13:07]
[In reply to Павел Селиванов]
Чем теперь собираете сисмные логи?
Павел Селиванов, [11.08.19 17:30]
[In reply to Anton Patsev]
Одним fluentbitом. Логи контейнеров из файлов, логи системы из journald.
Vadim Rutkovsky, [11.08.19 17:31]
[In reply to Павел Селиванов]
Ограничение на размер сообщения или всего лога?
Anton Patsev, [11.08.19 17:36]
[In reply to Павел Селиванов]
Обычные не JSON логи собираете fluentbit, а логи контейнеров и системные логи journald? Правильно понял?
kvaps, [11.08.19 18:29]
[In reply to Vadim Rutkovsky]
При достижении определённой величины journald создаёт новый файл, емнип 250мб по умолчанию
Павел Селиванов, [11.08.19 19:54]
[In reply to Vadim Rutkovsky]
Одного сообщения. Если я правильно помню то кап 2048 байт.
Павел Селиванов, [11.08.19 19:55]
[In reply to Anton Patsev]
Системные демоны пишут логи в журналд. Контейнеры в файлы (json log driver). Из обоих источников забирает один и тот же fluentbit с двумя инпутами.
Vadim Rutkovsky, [11.08.19 19:56]
[In reply to Павел Селиванов]
https://github.com/systemd/systemd/commit/ec20fe5ffb8a00469bab209fff6c069bb93c6db2 - тоже твикается
Павел Селиванов, [11.08.19 20:01]
[In reply to Vadim Rutkovsky]
Круто 👍
Журналд растёт над собой.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment