Graylog2 став зручніше і швидше

Записуючи для 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. сама мітка повинна відзначитися у веб-інтерфейсі в рамочку, інакше це не тег.


Ну а далі вже починається робота в веб-інтерфейсі: які саме логи звідки брати, як на які події реагувати, що фільтрувати і т. д. Почнете копать — розберетеся. Ось на всяк випадок ще раз мануал.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.