- PVSM.RU - https://www.pvsm.ru -
Записывая для VPSVille три ролика [1] по Graylog [2] понял, что на хабре по нему только одна обзорная статья [3], а мануалы на любом языке запутаны из-за различной работы компонентов в разных версиях ПО. Потратив сутки на переваривание всей этой красоты пишу мануал: как настроить сервер Graylog для сбора событий из Windows и Linux.
Кто очень хочет понимать Linux, но не поймет с чего начинать — прошу ко мне на канал [4].
Вместо введения: Graylog это open source программное обеспечение, предназначенное для сбора логов в гигантских сетях их огромного количества источников различными способами. В нем можно удобно организовать сбор событий, фильтрацию, поиск, автоматизацию (всякие алерты) и т.д. Аналогичных средств множество, но Graylog предлагает нереальную производительность с использованием современных компонентов, удобную аналитику и красивый интерфейс.
Для работы ему нужна Java [5], логи он будет хранить в MongoDB [6], для поиска использовать ElasticSearch [7]. Про сбор информации из WIndows будет ниже, но спойлер — агенту больше не нужна Java.
Итак, у нас есть официальный мануал [8], по которому мы должны с вами собрать Graylog. Но в нем очень многое упущено, это просто обрывки информации, поэтому пойдем поэтапно сами (использую Ubuntu 14.04, так как именно ее и советуют разработчики на данный момент). Так как изначально Graylog предназначен для огромнейших сетей, рекомендуется ставить БД, поисковый движок и сам Graylog на разные сервера, создавать из этого всего кластеры, узлы и т.д. Я беру простейший конфиг, в котором все крутится на одной машине.
Первая часть: установка Graylog. (видеоинструкция [9])
Сначала Java (не ниже восьмой версии):
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
Затем MongoDB (вдруг что изменится, вот вам мануал [10]):
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 (у которого тоже есть свой мануал [11]):
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»), шифрованный, как и полагается у взрослых (кому будет непонятен смысл команд ниже: смотрите видео [9], или пишите вопросы):
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 [12]:9000/
(само собой все указанные в конфиге порты должны быть открыты). При старте Graylog может пару минут дурачится и писать в веб-интерфейсе что все плохо, не принимать пароль и выбрасывать на главную. Дайте ему время прийти в себя и пробуйте.
Вторая часть: настройка приема логов в Graylog из Linux. (видеоинструкция [13])
В консоль сервера приема логов нам больше попадать не нужно. Идем в веб-морду и создаем Input для логов. Расписывать навигацию по веб-интерфейсу дело гиблое, потому есть видео [13]. Если кратко:
Для проверки работы Input можно в консоли того же сервера graylog выполнить
echo "Hello Graylog" | nc -w 1 -u 10.0.1.10 1234
и посмотреть в веб-интерфейсе сообщения, полученные на Input.
Конфигурация машин Linux на отправку логов, в принципе проста. Почти везде релизы syslogd ведут себя одинаково. Кто ничего не помнит о демонах журналирования — освежите память у меня на канале [14]. Итак 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. (видеоинструкция [15])
В версиях Graylog младше второй использовался graylog collector на java. Во второй (актуальной) он просто игнорируется и дает ошибки (полдня пытался починить, пока не понял это). Вместо него используется graylog sidecar [16], который получает конфиг с сервера Graylog (что очень удобно, так как нет необходимости лазить по виндовым серверам для редактирования настроек) и передает его в nxlog [17](или что вам больше нравится), который события собирает и отправляет.
Для приема сообщений из Windows надо создать отдельный Input через веб-интерфейс:
Для создания конфигурации отправки логов для nxlog на винде, нужно создать коллектор через веб-интерфейс в graylog:
Отправляемся в Windows, Скачиваем и устанавливаем nxlog [18]и graylog-sidecar [19].
Убираем как службу nxlog, и ставим как службу sidecar:
'C:Program Files (x86)nxlognxlog.exe' -u
'C:Program Files (x86)graylogcollector-sidecargraylog-collector-sidecar.exe' -service install
Редактируем файл конфигурации Sidecar (C:Program Files (x86)graylogcollector-sidecarcollector_sidecar.yml), а именно указываем порт прослушки глобальный (12900), ip сервера, и самое главное: метку, по которой будет принят конфиг. У меня это выглядит так:
server_url: http://10.0.1.10:12900
node_id: graylog-collector-sidecar
collector_id: file:C:Program Files (x86)graylogcollector-sidecarcollector-id
tags: windows
log_path: C:Program Files (x86)graylogcollector-sidecar
update_interval: 10
backends:
- name: nxlog
enabled: true
binary_path: C:Program Files (x86)nxlognxlog.exe
configuration_path: C:Program Files (x86)graylogcollector-sidecargeneratednxlog.conf
Запускаем sidecar 'C:Program Files (x86)graylogcollector-sidecargraylog-collector-sidecar.exe' -service start
Создаем событие eventcreate /l Application /t INFORMATION /id 1 /d “Suck it”
Смотрим логи в его директории (C:Program Files (x86)graylogcollector-sidecar), и если все ок — отправляемся в веб-морду смотреть логи винды на инпуте.
Нюансы:
Ну а дальше уже начинается работа в веб-интерфейсе: какие именно логи откуда брать, как на какие события реагировать, что отфильтровывать и т.д. Начнете копать — разберетесь. Вот на всякий случай еще раз мануал [8].
Автор: semaev
Источник [20]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/it-infrastruktura/119999
Ссылки в тексте:
[1] три ролика: https://www.youtube.com/user/vpsville
[2] Graylog: https://www.graylog.org/
[3] статья: https://habrahabr.ru/post/132116/
[4] канал: https://www.youtube.com/user/itsemaev
[5] Java: https://www.java.com/ru/
[6] MongoDB: https://www.mongodb.org/
[7] ElasticSearch: https://www.elastic.co/
[8] мануал: http://docs.graylog.org/en/latest/pages/getting_started.html
[9] видеоинструкция: https://www.youtube.com/watch?v=GUX6hkfoqVg
[10] мануал: https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
[11] мануал: https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-repositories.html
[12] 10.0.1.10: http://10.0.1.10
[13] видеоинструкция: https://www.youtube.com/watch?v=poFNT6X8tTk
[14] канале: http://it-semaev.ru/course/lpic1_102/lpic-1082-gurnali-sobitiy-68.html
[15] видеоинструкция: https://www.youtube.com/watch?v=k2wmHy4qW_Q
[16] graylog sidecar: https://www.graylog.org/blog/48-fifth-alpha-of-graylog-v2-0-released-with-message-processor-pipeline-and-collector-sidecar
[17] nxlog : http://nxlog.org/
[18] nxlog : https://nxlog.org/products/nxlog-community-edition/download
[19] graylog-sidecar: https://github.com/Graylog2/collector-sidecar/releases
[20] Источник: https://habrahabr.ru/post/282974/
Нажмите здесь для печати.