Записывая для VPSVille три ролика по Graylog понял, что на хабре по нему только одна обзорная статья, а мануалы на любом языке запутаны из-за различной работы компонентов в разных версиях ПО. Потратив сутки на переваривание всей этой красоты пишу мануал: как настроить сервер Graylog для сбора событий из Windows и Linux.

Кто очень хочет понимать Linux, но не поймет с чего начинать — прошу ко мне на канал.

image

Вместо введения: Graylog это open source программное обеспечение, предназначенное для сбора логов в гигантских сетях их огромного количества источников различными способами. В нем можно удобно организовать сбор событий, фильтрацию, поиск, автоматизацию (всякие алерты) и т.д. Аналогичных средств множество, но Graylog предлагает нереальную производительность с использованием современных компонентов, удобную аналитику и красивый интерфейс.
Для работы ему нужна Java, конфигурацию он будет хранить в MongoDB, для поиска и хранения логов — использовать ElasticSearch. Про сбор информации из WIndows будет ниже, но спойлер — агенту больше не нужна Java.

Итак, у нас есть официальный мануал, по которому мы должны с вами собрать Graylog. Но в нем очень многое упущено, это просто обрывки информации, поэтому пойдем поэтапно сами (использую Ubuntu 14.04, так как именно ее и советуют разработчики на данный момент). Так как изначально Graylog предназначен для огромнейших сетей, рекомендуется ставить БД, поисковый движок и сам Graylog на разные сервера, создавать из этого всего кластеры, узлы и т.д. Я беру простейший конфиг, в котором все крутится на одной машине.

Первая часть: установка Graylog. (видеоинструкция)

Сначала Java (не ниже восьмой версии):
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer


Затем MongoDB (вдруг что изменится, вот вам мануал):
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
sudo apt-get update
sudo apt-get install mongodb-org


Следом ElasticSearch (у которого тоже есть свой мануал):
sudo wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - 
echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
sudo apt-get update
sudo apt-get install elasticsearch


Эластику нужны:
настройка автозапуска:
sudo update-rc.d elasticsearch defaults 95 10

редактирование файла конфигурации:
sudo vi /etc/elasticsearch/elasticsearch.yml

а именно указать имя кластера, например: cluster.name: graylog

и запретить доступ к нему по сети (так как вся система у нас на одной машине): network.bind_host: localhost

еще рекомендуют запретить динамические скрипты, но у меня эластик на эту опцию ругается: script.disable_dynamic: true


Рестартуем Эластик:
sudo service elasticsearch restart

И проверяем
 curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'

Если на выводе нет откровенных ошибок, то все в порядке.

Установка и пробный запуск Graylog:
sudo apt-get install apt-transport-https
wget https://packages.graylog2.org/repo/packages/graylog-2.0-repository_latest.deb
sudo dpkg -i graylog-2.0-repository_latest.deb
sudo apt-get update
sudo apt-get install graylog-server
sudo rm -f /etc/init/graylog-server.override
sudo start graylog-server


Теперь устанавливаем пароль доступа к нему (у меня «123456789»), шифрованный, как и полагается у взрослых (кому будет непонятен смысл команд ниже: смотрите видео, или пишите вопросы):
sudo apt-get install pwgen
SECRET=$(pwgen -s 96 1)
sudo -E sed -i -e 's/password_secret =.*/password_secret = '$SECRET'/' /etc/graylog/server/server.conf
PASSWORD=$(echo -n 123456789 | shasum -a 256 | awk '{print $1}')
sudo -E sed -i -e 's/root_password_sha2 =.*/root_password_sha2 = '$PASSWORD'/' /etc/graylog/server/server.conf


В том же файле конфигурации указываю ip своего будущего сервера Graylog и префикс (он же — имя кластера Эластика выше).
sudo vi /etc/graylog/server/server.conf
rest_listen_uri = http://10.0.1.10:12900/
web_listen_uri = http://10.0.1.10:9000/
elasticsearch_index_prefix = graylog


Перезапускаю Graylog и пробую войти в него через веб-интерфейс:
10.0.1.10:9000/
(само собой все указанные в конфиге порты должны быть открыты). При старте Graylog может пару минут дурачится и писать в веб-интерфейсе что все плохо, не принимать пароль и выбрасывать на главную. Дайте ему время прийти в себя и пробуйте.

Вторая часть: настройка приема логов в Graylog из Linux. (видеоинструкция)

В консоль сервера приема логов нам больше попадать не нужно. Идем в веб-морду и создаем Input для логов. Расписывать навигацию по веб-интерфейсу дело гиблое, потому есть видео. Если кратко:
  • в меню «Система» создается UDP Input;
  • указывается syslog udp;
  • указывается порт (по умолчанию 512, но чтобы graylog мог использовать порты ниже 1024 нужно много возьни), поэтому, например 1234;
  • указывается адрес для прослушивания входящих сообщений, у меня 10.0.1.10;
  • нажимаем Launch.

Для проверки работы Input можно в консоли того же сервера graylog выполнить
echo "Hello Graylog" | nc -w 1 -u 10.0.1.10 1234
и посмотреть в веб-интерфейсе сообщения, полученные на Input.

Конфигурация машин Linux на отправку логов, в принципе проста. Почти везде релизы syslogd ведут себя одинаково. Кто ничего не помнит о демонах журналирования — освежите память у меня на канале. Итак debian и redhat.
Создается файл задания rsyslog:
 sudo vi /etc/rsyslog.d/90-graylog2.conf

c текстом (адрес и порт взят из настроенного Input):
$template GRAYLOGRFC5424,"<%PRI%>%PROTOCOL-VERSION% %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% %STRUCTURED-DATA% %msg%\n"
*.* @10.0.1.10:1234;GRAYLOGRFC5424


Демон журналов перезапукается командой
sudo service rsyslog restart
(ну или как там в вашей ОС).
И можно смотреть в веб-интерфейсе Graylog полученные сообщения.

Третья часть: настройка приема логов в Graylog из Windows. (видеоинструкция)

В версиях Graylog младше второй использовался graylog collector на java. Во второй (актуальной) он просто игнорируется и дает ошибки (полдня пытался починить, пока не понял это). Вместо него используется graylog sidecar, который получает конфиг с сервера Graylog (что очень удобно, так как нет необходимости лазить по виндовым серверам для редактирования настроек) и передает его в nxlog (или что вам больше нравится), который события собирает и отправляет.
image

Для приема сообщений из Windows надо создать отдельный Input через веб-интерфейс:
  • выбираем GELF UDP;
  • указываем узел, айпишник сервера graylog;
  • запоминаем или редактируем порт приема сообщений (по умолчанию 12201).


Для создания конфигурации отправки логов для nxlog на винде, нужно создать коллектор через веб-интерфейс в graylog:
  • выбираем Collectors;
  • выбираем Manage Configuration;
  • создаем конфигурацию;
  • указываем метку (именно по метке sidecar на windows поймет какую конфигурацию для nxlog ему скачивать к себе на машину);
  • создаем Output для nxlog (в котором просто указываем настройки Input из предыдущего шага: GELF UDP Output, ip, порт);
  • создаем Input для nxlog (указываем простейший вариант: Windows Event Log).


Отправляемся в Windows, Скачиваем и устанавливаем nxlog и graylog-sidecar.
Убираем как службу nxlog, и ставим как службу sidecar:
'C:\Program Files (x86)\nxlog\nxlog.exe' -u
'C:\Program Files (x86)\graylog\collector-sidecar\graylog-collector-sidecar.exe' -service install


Редактируем файл конфигурации Sidecar (C:\Program Files (x86)\graylog\collector-sidecar\collector_sidecar.yml), а именно указываем порт прослушки глобальный (12900), ip сервера, и самое главное: метку, по которой будет принят конфиг. У меня это выглядит так:
server_url: http://10.0.1.10:12900
node_id: graylog-collector-sidecar
collector_id: file:C:\Program Files (x86)\graylog\collector-sidecar\collector-id
tags: windows
log_path: C:\Program Files (x86)\graylog\collector-sidecar
update_interval: 10
backends:
- name: nxlog
enabled: true
binary_path: C:\Program Files (x86)\nxlog\nxlog.exe
configuration_path: C:\Program Files (x86)\graylog\collector-sidecar\generated\nxlog.conf


Запускаем sidecar 'C:\Program Files (x86)\graylog\collector-sidecar\graylog-collector-sidecar.exe' -service start

Создаем событие eventcreate /l Application /t INFORMATION /id 1 /d “Suck it”

Смотрим логи в его директории (C:\Program Files (x86)\graylog\collector-sidecar\), и если все ок — отправляемся в веб-морду смотреть логи винды на инпуте.

Нюансы:
  1. бывает что файл конфига нужно создать вручную пустой C:\Program Files (x86)\graylog\collector-sidecar\generated\nxlog.conf;
  2. бывает что нужно перезапустить винду, чтобы все сервисы все схватили;
  3. у меня был косяк с опечаткой в названии метки, убил час, разбираясь;
  4. сама метка должна отметиться в веб-интерфейсе в рамочку, иначе это не метка.


Ну а дальше уже начинается работа в веб-интерфейсе: какие именно логи откуда брать, как на какие события реагировать, что отфильтровывать и т.д. Начнете копать — разберетесь. Вот на всякий случай еще раз мануал.

Комментарии (50)


  1. rudenkovk
    04.05.2016 22:31
    +2

    прошу меня простить, это не вброс guano на вентилятор. Но все же…

    Для работы ему нужна Java, логи он будет хранить в MongoDB, для поиска использовать ElasticSearch.

    Мне кажется — это адский треш, если логи валятся очень быстро и очень много. ( ну скажем от 5k events/sec и масса среза, ну скажем >1Тб )

    А вот почитать что-то вроде graylogUI vs kibana было бы интересно.


    1. ZurgInq
      04.05.2016 23:31

      Встречный вопрос, что не так в этой связке? MongoDB как NoSql база должна показывать хорошую производительность на вставку данных.


      1. rudenkovk
        05.05.2016 08:47
        +2

        С одной стороны компетентные товарищи говорят, что монгу, со времен 2,6 допилили. С другой стороны, в моем опыте использования mongo — это были вечные проблемы с консистентностью, и диском, с запутанной системой кластеризации. ES точно так же может выступать как nosql база, а масштабируется он куда проще и удобнее.
        Возможно я не прав, но без должного ухода (читай как: elasticsearch, как хранилище его не требует) хранить в монге много много данных выглядит не целесообразно.


        1. semaev
          05.05.2016 19:24

          Мой косяк — действительно, теперь MongoDB используется только для хранения конфига graylog — всего того, что мы настраиваем через веб-интерфейс. Сами логи лежат в Эластике.


    1. tubecleaner
      04.05.2016 23:33
      +5

      Автор ошибся. Он уже давно не хранит логи в MongoDB ( сейчас там хранится только конфигурация ). Для хранения и поиска используется ElasticSearch.

      Сам использую GrayLog2 и мне показалось, что документация у него довольно понятная и подробная, так что было бы интереснее узнать опыт реальной эксплуатации продукта, «подводные камни» и т.п.

      Например: GraylogCollector не поддерживает новую архитектуру EventLog, так что его использование на Windows сильно ограничено. Бесплатный NXLog Community имеет ограниченный функционал ( правда, которого хватит почти всем ), за расширение надо доплачивать.


      1. rudenkovk
        05.05.2016 08:49

        Я давно и плотно сижу на ELK стеке, но приглядываю за конкурентами. Собственно а почему он не хранит конфигурацию в ES, как та же kibana например?


        1. hc4
          05.05.2016 13:59
          +1

          Например что бы иметь возможность стартовать без ES.
          А ещё ES для хранения логов подразумевает возможность большой нагрузки на ES.
          Будет неприятно, если из-за очередного запроса логов отвалятся все сессии у пользователей (ведь в эластике очередь запросов ограничена, и если очередь заполнена, запросы режектятся).
          Ах да, ещё у ES есть проблема с изменением данных. Любое изменение — это создание новой записи и удаление старой (причём физически данные удаляются только после переиндексирования).


          1. rudenkovk
            05.05.2016 14:02

            Например что бы иметь возможность стартовать без ES.

            а смысл?

            А ещё ES для хранения логов подразумевает возможность большой нагрузки на ES.
            Будет неприятно, если из-за очередного запроса логов отвалятся все сессии у пользователей (ведь в эластике очередь запросов ограничена, и если очередь заполнена, запросы режектятся).


            при 150k event/sec на 4 головы ES + 1 голова только на http. Все машины 12 ядер на 16 гигов оперативы, обычные SAS диски, полет нормальный. А кластер работает с приличным запасом по мощности.

            Ах да, ещё у ES есть проблема с изменением данных. Любое изменение — это создание новой записи и удаление старой (причём физически данные удаляются только после переиндексирования).

            иииииииии? в чем тут проблема?


            1. hc4
              05.05.2016 14:08
              +1

              1. Graylog умеет скидывать логи в журнал, если не может залить их в elastic. Мне например это позволяет спокойно перезапускать/обновлять единственную ноду ELK без страха потерять данные (сыпятся не только логи, но и реалтайм статистика, которая не хранится на хостах)

              2. А у меня один слабенький сервер на виртуалке и очередь эластика частенько забивается. Особенно если запускать поиски на большие периоды. А ещё я использую Grafana для графиков, а она не умеет отменять запросы. И если несколько раз тыкнуть refresh на графиге — генерятся тысячи запросов (хоть и не сложных).

              3. В том что модификации внутри сессии веб-морды происходят постоянно => индекс будет распухать непонятно ради чего.


              1. rudenkovk
                05.05.2016 14:16

                1. Опять же — а смысл? При приличном потоке евентов память забьется моментально. А если эвентов мало, то и syslog достаточно. Хотя каждый городит свой огород. В моем понимании — это скорее минус. Прием который может привести к неявной деградации системы или падению.
                2. Может просто перейти на syslog+grep? Я не троллю, просто не вижу смысла использовать подобные системы не имея для них железа.
                3. ЭЭЭЭЭ… и? Я не понимаю то же тут проблемы. настроить чистку индекса не проблема от слова вообще. Я пользуюсь кибаной, и даже в объемных конфигурациях ее метаданные больше пары мегабайт не весили. Если что-то там так пухнет, такую систему надо на помойку.

                А если хранить в монго — это лишняя память на сервис, лишние IO на перечитывание данных, это свои очереди, а не эластика.


                1. hc4
                  05.05.2016 14:27

                  1. Журнал хранится на диске. В грейлоге данные поступают в Input (которых может быть много и они плагины), оттуда в Process, либо в Journal, если очередь Process занята.
                  2. Syslog+grep вообще не пойму зачем. Я собираю логи с кучи хостов (на винде и лине) + с роутеров по SNMP.
                  3. ES предназначен для хранения огромных объёмов данных с возможность быстрого поиска. Mongo — быстрая in-memory база. По моему логично под каждую задачу использовать подходящий инструмент. Kibana использует ES думаю только для продвижения своей платформы.


                  1. rudenkovk
                    05.05.2016 14:33

                    Угу, я понял. Комментариев больше не имею. Мы говорим о слишком разных объемах данных, стабильности и удобстве. :)


                    1. hc4
                      05.05.2016 16:00

                      У вас «150k event/sec на 4 головы ES + 1 голова только на http» и syslog+grep удобнее? Или я что-то не так понял?
                      У меня действительно нагрузка поменьше — 3k/sec и одна нода ES.


                      1. rudenkovk
                        05.05.2016 16:01

                        не так поняли :)
                        если мало логов, то и грепа достаточно. Если много, то зачем городить непонятные огороды.


                        1. hc4
                          05.05.2016 16:08

                          Очень удобно, когда все логи с машин в одном месте.
                          Легче находить корреляции при анализе, можно строить дашборды, алерты, управлять доступом к логам.

                          Если например стоит один сервер apache, то наверное толку не оч много.
                          А если надо обслуживать несколько взаимодействующих между собой программ, разбросанных по разным хостам — то я не представляю жизни без грейлога.


                          1. rudenkovk
                            05.05.2016 16:10

                            Я о том и говорю. Но только с моей точки зрения, использование двух сторов для этой цели — вещь избыточная, а значит костыльная и не стабильная.


                            1. hc4
                              05.05.2016 16:18

                              Так mongo стоит только рядом с грейлогом, так же как и его журнал.
                              И оба они используются исключительно для внутренних нужд грейлога.

                              ES'же — это распределённое хранилище логов, которым может пользоваться не только сам graylog.
                              Я например графики строю при помощи Grafana напрямую по данным из ES, а грейлог использую для наполнения ES, анализа логов и алертов.
                              А ещё у меня ganglia для сбора реалтайм статистики, которая пишет в rrd, к которому имеет доступ graphite, через который Grafana может получать статистические данные и отображать их на одном графике с данными из ES :)

                              и как не странно — всё работает как часы.


                              1. rudenkovk
                                05.05.2016 16:24

                                Так mongo стоит только рядом с грейлогом, так же как и его журнал.
                                И оба они используются исключительно для внутренних нужд грейлога.


                                Я еще раз повторюсь: не понимаю ЗАЧЕМ нужна еще одна точка отказа. ELK прекрасно все хранит в ES и проблем нет, от слова вообще.

                                У меня схема другая, у меня ELK + Influxdb + grafana. Logstas, еще до ES считает нужные метрики по логам, и кидает эти метрики в influx. RRD мне не удобен, так как бывают нужны детализированные данные. Частично kibana и grafana перекрывают друг друга по визуализации, но это скорее взаимодополнение.


                                1. hc4
                                  05.05.2016 16:30

                                  Думаю на вопрос ЗАЧЕМ могут ответить только сами разработчики :)
                                  С моей точки зрения mongo больше подходит для хранения небольшого количества часто меняющихся данных.
                                  А ещё у них в доке написано, что планируется сделать возможность использовать любое хранилище вместо mongo.


                                  1. rudenkovk
                                    05.05.2016 16:32

                                    Ну вот мы друг друга и поняли. :)

                                    Для меня, если нет альтернатив, монго лучше вообще не использовать. Все же graylog догоняющий, от от ELK отстает сильно.


                                    1. hc4
                                      05.05.2016 16:38

                                      Кстати мы относительно недавно озадачились системой сбора логов (около полугода назад)
                                      И при выборе пробовали в том числе Kibana.
                                      Но graylog понравился больше, хоть он и догоняющий.


                                      1. rudenkovk
                                        05.05.2016 16:42

                                        У kibana порог вхождения повыше, на сколько я понял по документации graylog. Но она гораздо гибче.
                                        Во-первых ELK у нас исторически.
                                        Во-вторых он используется для визуализации данных не только для саппорта, разрабов или девопсов, но и PM и прочих бизнес-аналитиков.


                                        1. hc4
                                          05.05.2016 16:58

                                          В Kibana можно дать доступ только к части логов?
                                          В graylog мы роутим эвенты в разные стримы и доступ даём только к конкретным стримам.


                                          1. rudenkovk
                                            05.05.2016 17:03

                                            Мы не заморачивались с этой темой, но думаю можно. Так как каждый лог пишется в свой индекс (это очень условно, просто долго расписывать иначе).

                                            А дальше преднастроенные дашборды.


                                    1. nucleusv
                                      12.05.2016 09:38

                                      Graylog позволяет парсить и обогащать данные по условиям. Logstash тоже умеет и в последних версиях logstash в этом вопросе улучшили. Но в grayloge это удобней. Graylog прекрасно скейлится, ставите перед ним haproxy например и будет вам счастье. Самое не приятное в graylog — пишет ВСЕ сообщения только в «один» индекс, нельзя роутить собщения в разные индексы, надеюсь в следующих версиях поправят.


        1. nucleusv
          12.05.2016 09:31

          Основная причина — в ELK нет аунтификации без Shield. Поэтому и используется база с разграничением прав доступа.


      1. chesterfie1d
        05.05.2016 13:58

        Пол года назад ставил Graylog2. Необходимость была хранить логи с прод серверов глубиной до года, и иметь возможность посмотреть логи за определенный период. Но столкнулся с проблемой хранения. Логи сыпались 1.5к-2к/s, каждый индекс Elastic'a имел лимит 5гб. В неделю забивилось около 18 индексов по 5 гигов каждый итого ~90 гигов. В настройках ES можно настроить сколько индексов держать(старые закрываются и удаляются). Если увеличивать кол-во индексов, то поиск происходит дольше. Штатного инструмента по архивации старых индексов насколько я помню не было. Были некоторые самописные скрипты(http://tech.superhappykittymeow.com/?p=296), которые закрывали индексы и мувили их из ES допустим в /backup. В случае необходимости просмотра этих индексов, приходилось мувить их в хранилище ES и строить переиндексацию. Для долгосрочного хранения Graylog2 увы не подошел, из-за нехватки штатных инструментов. Возможно сейчас что изменилось?


        1. hc4
          05.05.2016 14:30
          +1

          Изменилось.
          Теперь они используют elastic 2, в котором значительно улучшена работа doc_value индексов.
          doc_value — это такой индекс, которым можно пользоваться не загружая его в память.

          У меня на старом грейлоге хранилось порядка 1млрд сообщений в эластике (около 50 индексов) и любой запрос выполнялся десятки секунд минимум. Теперь же при наличии >2млрд сообщение и более 60 индексов графики строятся за секунды. При этом железо не менялось.

          Ну и кроме того очень сильно улучшена вебка + теперь графики это тоже плагины + pipeline для обработки сообщений


          1. tubecleaner
            05.05.2016 17:42

            Надо добавить, что эти возможности появились в версии 2.0, которая зарелизилась в конце апреля. Архивация индексов появилась в ней, но как «коммерческая» функция.


      1. hc4
        05.05.2016 14:01

        Можете попробовать WinLogBeat + BeatsInput


      1. semaev
        05.05.2016 19:27

        Спасибо, ошибся с хранением, поправил. Про новую архитектуру читаю сейчас. Фишка нового graylog как раз в том, что он использует не collector, а sidecar для windows: https://www.graylog.org/blog/55-announcing-graylog-v2-0-ga и у меня все логи хорошо читаются


        1. hc4
          06.05.2016 11:02

          Sidecar же просто удобняшка для настройки collector через web-интерфейс грейлога, не?


  1. tgz
    05.05.2016 08:53

    1. А оно может работать на паре серверов? Master/slave или master/master, например?
    2. Наверняка же есть библиотеки для писания логов из java приложений сразу в greylog, без системного syslogd?


    1. johndow
      05.05.2016 08:58

      библиотеки для писания логов из java приложений

      https://github.com/pukkaone/logback-gelf
      https://github.com/Moocar/logback-gelf


    1. DuD
      05.05.2016 13:58

      Elasticsearch легко и непринужденно кластеризуется. Умеет сам находить ноды своего кластера.
      www.elastic.co/guide/en/elasticsearch/reference/current/_installation.html


      1. hc4
        05.05.2016 15:05

        Graylog кстати тоже умеет кластеризоваться.


      1. tgz
        06.05.2016 11:33

        Elastic то да, а вот greylog…


    1. nucleusv
      12.05.2016 09:42

      Может, скейлится горизонтально. Перед нодами graylog нужно установить балансировщик, haproxy например.
      Механизм healthcheck поддерживается в веб-интерфейсе graylog, можно прям из морды выводить из баланса.


  1. RicoX
    05.05.2016 09:07
    -1

    Что в ELK что в GrayLog2 меня отталкивает необходимость использовать Java, может кто подскажет серверное решение не требующее особого напильника и умеющее:
    1) Очень много логов в пиках до 10К/sec, не требующее сверхмощного железа.
    2) Генерацию алярм по определенным шаблонам, например с одного узла сети за минуту пришло больше Х сообщений содержащих «Error»
    3) Умеющее SNMP-trap или которое можно подружить с SNMP, а не только генерация mail, нужно для того чтоб подружить с общей системой мониторинга а не иметь 10 морд для разных аспектов.
    4) Желательно cli для генерации выборок прямо в терминале или использования в скриптах, вебморда это конечно красиво, но на большом количестве событий медленно и неудобно.

    Использоваться будет в сети ISP где более 10К управляемых железок шлют свои логи на сервер, сейчас используется syslog-ng с собственными фильтрами, плюс скриптовая обвязка, но ели ворочается и требует постоянного напильника, хочется более красивое и желательно готовое решение, но весь гугл забит ссылками на ELK и GrayLog, может я что-то упускаю.


    1. rudenkovk
      05.05.2016 09:18

      имхо: если opensource — то ничего не упускаешь.
      А так, я живу на ELK, у меня среднее 5-7k/sec (очень разных событий, от однострочников a la «mail sand to ...», до портянок килобайт на 300-500 с дампами ошибок), в пике 25-30k/sec, все адекватно крутится на 3 головах ES (виртуалки не на ssd, 8 ядер, 8 гигов оперативы, глубина хранения от недели до месяца, в зависимости от типа), logstash выделен на отдельную машину. И в этой конфигурации я еще не особо игрался с настройками индексов, а это влияет на производительность. Виртуалки загружены на ~60%.


      1. RicoX
        05.05.2016 09:48

        Похоже придется развернуть пару стендов и посмотреть в сторону elasticsearch и его api, он используется в обоих продуктах, а вебморда мне как таковая не нужна совсем. Нашел даже плагин для ES для своего syslog-ng, меньше всего переделывать придется — буду пробовать, раз альтернатив особо нет.


        1. rudenkovk
          05.05.2016 09:50

          посмотри logstash заодно, возможно не надо будет городить огород с плагинами.
          А так же глянь на beats (это проект ребят эластика), возможно еще меньше огорода будет.


          1. RicoX
            05.05.2016 10:20

            Если я правильно понял описание, то Beats заменяет logstash, то-есть занимается принятием логов и передачей их на ES, при этом для передачи используется что-то типа diff, а не логи целиком? Если я ничего не напутал из их описания проекта, то так должно быть еще быстрее и меньше нагрузка на систему принятия логов.


            1. rudenkovk
              05.05.2016 10:21

              Можно и так. Я все гоню в logstash на мутаторы. Пока этот момент я не смотрел глубоко и не перенастраивал. beats использую как локальные агенты.


              1. RicoX
                05.05.2016 10:25

                Спасибо за консультацию, буду пробовать в варианте когда логи принимает logstash и когда beats, сравню производительность, локальных агентов мне не нужно, т.к. почти все устройства — это коммутаторы и маршрутизаторы, на которые агента не поставить.


                1. rudenkovk
                  05.05.2016 10:28

                  Обращайтесь.
                  Думаю тогда имеет смысл смотреть на logstash

                  https://www.elastic.co/guide/en/logstash/current/plugins-inputs-snmptrap.html


                  1. RicoX
                    05.05.2016 10:44

                    Не совсем, мне нужен не inputs трапов, а outputs смысл в том что принимать трапы умеет система мониторинга (zabbix) а вот от системы обработки логов требуется их генерация, так что от костыля zabbix_sender мне похоже никуда не деться.


                    1. rudenkovk
                      05.05.2016 10:46

                      Ну тут я не очень готов вникать, голова совсем в другом. Если что обращайся по настройке ES.


    1. k3NGuru
      05.05.2016 09:22
      -2

      Icinga2 https://habrahabr.ru/post/262115/
      http://docs.icinga.org/icinga2/latest/doc/module/icinga2/toc


      1. RicoX
        05.05.2016 09:33
        +1

        Icinga2 — это же вроди клон nagios и логи оно не умеет собирать и обрабатывать само по себе.