Pull to refresh

Comments 24

если есть свободная память, может туда писать? все равно работать будет как временная папка.
Не понял комментария, писать на каком этапе?
Вот что вы писали:
… мы принимаем их Rsyslog и складываем в файл
...Из файла эти логи затем читаются logstash, который их обрабатывает и отправляет в ES…
Я предположил что можно было бы попробовать их в tmpfs / shm писать и читать оттуда. Вопрос только в их размерах.
А не пробовали логи писать прямиком в JSON? Их тогда и не придётся обрабатывать GROK'ом.
К сожалению, такой возможности нет, логи пишутся не нами.
Из того, отчего пришлось отказаться от логшеттера:
  1. Надо было слать логи дальше в http POST батчами — перепилили стандартный плагин, не было критичным
  2. jruby медленный и не обрабатывал нормально системные сигналы: кажется, кто-то их перехватывал, точно не вспомню, но стандартный убунтовый (14.04) init-script не отрабатывал должным образом.
  3. Внешне удобные grok иногда скрывают под собой жуткие конструкции, которые катастрофически сказываются на производительности
  4. Если логшеттер спотыкается об строчку в файле (тоже не вспомню, на input или уже на обработке), он падает и больше не поднимается (невозможно заставить его даже сказать, на какой строчке он упал)
  5. У нас возникла проблема в месте сохранения состояния. ЕМНИП, LS считает «успешным» момент обработки строки по её прочтению. Если после этого не удаётся её отправить — who cares?
  6. Было что-то ещё, но за последний год, к сожалению, забылось

Прошу не воспринимать коммент как «технология говно», просто у нас не полетело даже на тестах. Для прода пришлось писать самим.
Спасибо, но уже год как крутится самописная конструкция без всего этого на внутренних инструментах, которая шлёт метрики в графит
Так это же замечательно! Раз работает уже год — не трогайте)

Про jruby я сталкивался с пренеприятным явлением, что файловые локи не поддерживались на Solaris — приходилось писать обертку для локов в java и вызывать из logstash jruby плагина.
Я посмотрел презентацию, но не нашел цифр по производительности, вы не знаете сколько логов в секунду им удается обработать?
Кстати, немного на грани оффтопа.
Недавно пошла мода все переписывать, типа как puppet на clojure. Про logstash/fluentd такого не слышно?
У вас индексы партиционируются по дням? Попробуйте сделать их по часам-десяткам минут. В зависимости от объема логов.
А вообще тут как и в любой оптимизации надо сначала собрать метрики с серверов и посмотреть в чем проблемы, и только потом оптимизировать.

У нас система справлялась с гораздо большим количеством событий в кластере из 6 ES серверов.

Для мониторинга Elasticsearch много решений, для dev целей с ограничениями marvel был бесплатным
Если данные не особо важны, то можно не делать fsync или делать его еще реже. см. index translog. Т.е. в период 1 нужно перестраивать индекс, а в период 2 делать fsync, при этом принимать данные в только память.
А умеет ли он при этом сохранять данные в буферы, если elasticsearch недоступен? Как, например, fluentd?
В теории да
На практике я не проверял, у меня объём логов был с ~5 серверов.
Если интересно попробовать именно Rsyslog — доклад по разгону пропускной способности от Райнера.
В этом случае будет проблема с пиками нагрузок, такая же, что с LS была. Буфер все равно нужен.
А что вы логгируете в таких количествах, если не секрет?
Буквально только что ставил эксперименты по производительности elasticsearch кластера. Сгенерировал логсташем файл с миллионом json логами и заливал их в кластер программой на си, которая читала данные со стандартного ввода и загружала в кластер через http bulk api (размер запроса ограничен 1мб). Экспериментировал на 2-х кластерах из 4-х и 10-ти машин (48гб, 24-х ядерный ксеон 2ггц). На 4-х машинном кластере удалось выжать 200к логов в секунду, на 10-ти машинном 170к. Я допускаю, что что-то делал не так и из конфигураций выше можно выжать больше, но предварительный вывод, что у elasticsearch кластера не все хорошо с масштабированием. С учетом того, что мне надо обрабатывать порядка 2м логов в секунду похоже придется искать нечто отличное от elasticsearch. Буду крайне признателен за наводки на работающие решения.
если не ошибаюсь, грейлог также использует ES
да, но при этом он является буфером и парсером перед ES. он горизонтально скейлится.
если не ошибаюсь, грейлог также использует ES
И вот что у нас получилось: вместо того, чтобы отправлять логи напрямую в Logstash мы принимаем их Rsyslog и складываем в файл.

А можно немного подробнее? Если можно, чтобы было понятнее, командой… Особенно логсташа. Спасибо
Sign up to leave a comment.

Articles