Comments 30
Ansible проследит что бы везде был одинаковый формат. Syslog-ng направит поток из файла логов nginx на stdin парсера.
150 тысяч записей лога в минуту (многострочные данные мы считаем за одну запись) — в сумме со всех серверов дает <10%CPU нагрузки.
Я смотрю на пример конфигурации Heka, и я считаю что сплиттер строк нужно было назвать не RegexSplitter
, а как-нибудь типа JavaLogSplitter
.
А то RegexpSplitter
не говорит нам ни о чём. Дла это сплиттер, да он работает на регулярках — но в имя лучше вынести специфику применения, а не специфику реализации.
[SplitterName]
type = "RegexSplitter"
delimiter = ‘here_is_delimeter’
delimiter_eol = true/false
И в боевых конфигах мы используем имена реальных сервисов в заголовках всех блоков, для удобочитаемости. Но для статьи пришлось их поменять на нейтральные названия.
То, что logstash тормозной и тяжёлый уже и самим разработчикам ELK понятно, и ему есть более шустрые альтернативы.
В HEKA, всё-же, смущает, что она deprecated и не развивается — вместо неё Мозилла начала новый проект Hindsight, по их бенчмаркам в 7-10 раз шустрее и легче, чем HEKA. Но насколько он готов, стабилен и как долго его будут сопровождать — трудно сказать.
Рассматривался ли вами во многом похожий на HEKA движок от Триваго — Gollum. Из статьи неясно, когда ваш проект был начат, но по довольно старым бенчмаркам Gollum в сравнении с LogStash и HEKA смотрится вполне достойно и по-прежнему жив, в отличие от HEKA.
А чем, всё-таки, kafka не устроила? Вроде как многие её активно в production используют и не особо жалуются…
С Gollum мы не экспериментировали, но как видно из описанного в статье исходного
Kafka мощный инструмент, но его не просто готовить, появляется промежуточный слой, добавляется точка отказа, появляется Zookiper и т.д. Люди регулярно борются с Kafka «из коробки», например, тут Bubuku. Скорее всего, придется бороться и нам, но уже для других целей. У нас основые проблемы возникли с Flume, перестроение кластера останавливало всю систему до полной перезагрузки. Потратив несколько дней, мы поняли, что можно проще, что Kafka не нужен, и наши усилия по налаживанию кластера лучше направить в другое русло. В итоге, получилось проще и дешевле по админским затратам.
а как логируете и храните сообщения при работе с МПСами?
как PA\PCI DSS по всем этим проходите?
Он быстрее logstash (и потребляет меньше ресурсов) и он развивается.
если есть сетевые проблемы (у вас, вроде, с сетью все ok) -> ведет себя плохо
проблемы с плагином для elasticsearch (вроде не сложно их исправить, но нужно время) -> ведет себя плохо
были проблемы с vmware (баги были в версии 5.0 или около того, не помню точно, хотя и сейчас всплывают, но они глобальные и все касаются сети), но это не про вас, если я не ошибаюсь :)
Параметр es_index_from_timestamp нужен для указания, что дата и время для формирования имени индекса берутся не из приходящих данных, а из локального времени сервера. Позволяет избежать бардака, когда серверы работают в разных временных зонах и кто-то пишет в логи время в UTC, а кто-то в MSK.— «при обрыве соединения или деградации канала», получится, что данные будут писаться в ES с временем, серьёзно отличающимся от реального?
Если — да, то было бы интересно послушать ваше мнение относительно выбора.
Почти все они работали неидеально: кластер Kafka был ненадежен, Flume периодически вис, отчего ES впадал в ступор
а можно как-то поподробнее? как другие-то работают?
по Kafka — какие именно были проблемы? и пытались ли вы их решить?
Думаю рассказать, как мы его виртуализировали, как переезжали с версии 2.2 на 5.3 и перевозили с собой 24 миллиарда записей, не потеряв при этом веру в человечество.
Мне довелось переносить более 20 миллиардов записей с 1.x на 2.x, потом с 2.x на 5.x, но ресурсов было гораздо меньше… будет интересно почитать как это делается «в нормальных условиях» ;)
А вместо него сделать сплиттер на LPEG.
Но они к производительности подходили очень серьезно — лишнюю инструкцию в цикле в фильтре не вставляли, чтобы скорость не падала.
И еще, возможно вам, или еще кому-то пригодится: https://github.com/timurb/heka_mock
Это мокер, чтобы можно было тесты к фильтрам писать.
Работа с потоком логов в реальном времени с помощью Heka. Опыт Яндекс.Денег