Как управлять журналами с помощью Graylog 2 в Ubuntu 16.04

Вступление

Graylog - мощная платформа для управления журналами с открытым исходным кодом. Он объединяет и извлекает важные данные из журналов сервера, которые часто отправляются с использованием протокола Syslog. Это также позволяет вам искать и визуализировать журналы в веб-интерфейсе.

В этом руководстве вы установите и сконфигурируете Graylog в Ubuntu 16.04 и настроите простой ввод, который получает системные журналы.

Предпосылки

Прежде чем начать этот урок, вам необходимо:

  • Один сервер Ubuntu 16.04 с ОЗУ не менее 2 ГБ, поддержкой частных сетей и пользователем без полномочий root. Это можно настроить, следуяInitial Server Setup with Ubuntu 16.04.

  • Установлен Oracle JDK 8, что можно сделать, следуя разделу «Установка Oracle JDK» вthis Java installation article.

  • Elasticsearch 2.x, который можно установить, выполнив шаги 1 и 2 изElasticsearch installation tutorial. Некоторые версии Graylog работают только с определенными версиями Elasticsearch. Например, Graylog 2.x не работает с Elasticsearch 5.x. Обратитесь кthis Greylog-Elasticsearch version comparison table для получения точной версии. В этом руководстве используются Elasticsearch 2.4.4 и Graylog 2.2.

  • MongoDB, который можно установить, следуя указаниямMongoDB tutorial.

[[step-1 -—- configuring-elasticsearch]] == Шаг 1. Настройка Elasticsearch

Нам нужно изменить файл конфигурации Elasticsearch так, чтобы имя кластера совпадало с именем, заданным в файле конфигурации Graylog. Чтобы упростить задачу, мы установим имя кластера Elasticsearch на имя Graylog по умолчаниюgraylog. Вы можете установить его по своему усмотрению, но не забудьте обновить файл конфигурации Graylog, чтобы отразить это изменение.

Откройте файл конфигурации Elasticsearch в вашем редакторе:

sudo nano /etc/elasticsearch/elasticsearch.yml

Найдите следующую строку:

/etc/elasticsearch/elasticsearch.yml

cluster.name: 

Измените значениеcluster.name наgraylog:

/etc/elasticsearch/elasticsearch.yml

cluster.name: graylog

Сохраните файл и выйдите из редактора.

Поскольку мы изменили файл конфигурации, мы должны перезапустить службу, чтобы изменения вступили в силу.

sudo systemctl restart elasticsearch

Теперь, когда вы настроили Elasticsearch, давайте перейдем к установке Graylog.

[[step-2 -—- install-graylog]] == Шаг 2. Установка Graylog

На этом этапе мы установим сервер Graylog.

Сначала загрузите файл пакета, содержащий конфигурацию хранилища Graylog. ПосетитеGraylog download page, чтобы узнать номер текущей версии. В этом руководстве мы будем использовать версию2.2.

wget https://packages.graylog2.org/repo/packages/graylog-2.2-repository_latest.deb

Затем установите конфигурацию репозитория из файла пакета.deb, снова заменив2.2 версией, которую вы загрузили.

sudo dpkg -i graylog-2.2-repository_latest.deb

Теперь, когда конфигурация репозитория была обновлена, мы должны получить новый список пакетов. Выполните эту команду:

sudo apt-get update

Затем установите пакетgraylog-server:

sudo apt-get install graylog-server

Наконец, запустите Graylog автоматически при загрузке системы с помощью этой команды:

sudo systemctl enable graylog-server.service

Graylog успешно установлен, но еще не запущен. Мы должны настроить его до его запуска.

[[step-3 -—- configuring-graylog]] == Шаг 3 - Настройка Graylog

Теперь, когда у нас настроен Elasticsearch и установлен Graylog, нам нужно изменить несколько настроек в файле конфигурации Graylog по умолчанию, прежде чем мы сможем его использовать. Файл конфигурации Graylog по умолчанию находится в/etc/graylog/server/server.conf.

Во-первых, нам нужно установить значениеpassword_secret. Graylog использует это значение для защиты сохраненных пользовательских паролей. Мы будем использовать случайно сгенерированное 128-символьное значение.

Мы будем использоватьpwgen для генерации пароля, поэтому установите его, если он еще не установлен:

sudo apt install pwgen

Сгенерируйте пароль и поместите его в файл конфигурации Graylog. Мы будем использовать программуsed, чтобы ввести значениеpassword_secret в файл конфигурации Graylog. Таким образом, нам не нужно копировать и вставлять какие-либо значения. Выполните эту команду, чтобы создать секрет и сохранить его в файле:

sudo -E sed -i -e "s/password_secret =.*/password_secret = $(pwgen -s 128 1)/" /etc/graylog/server/server.conf

Для получения дополнительной информации об использованииsed см.this DigitalOcean sed tutorial.

Далее нам нужно установить значениеroot_password_sha2. ЭтоSHA-256 hash желаемого пароля. И снова мы воспользуемся командойsed для изменения файла конфигурации Graylog, чтобы нам не приходилось вручную генерировать хэш SHA-256 с помощьюshasum и вставлять его в файл конфигурации.

Выполните эту команду, но заменитеpassword ниже желаемым паролем администратора по умолчанию:

[.note] #Note: В команде есть начальный пробел, который предотвращает сохранение вашего пароля в виде обычного текста в истории Bash.
#

 sudo sed -i -e "s/root_password_sha2 =.*/root_password_sha2 = $(echo -n 'password' | shasum -a 256 | cut -d' ' -f1)/" /etc/graylog/server/server.conf

Теперь нам нужно внести еще пару изменений в файл конфигурации. Откройте файл конфигурации Graylog в вашем редакторе:

sudo nano /etc/graylog/server/server.conf

Найдите и измените следующие строки, раскомментируя их и заменивgraylog_public_ip общедоступным IP-адресом вашего сервера. Это может быть IP-адрес или полное доменное имя.

/etc/graylog/server/server.conf

...
rest_listen_uri = http://your_server_ip_or_domain:9000/api/

...
web_listen_uri = http://your_server_ip_or_domain:9000/

...

Сохраните файл и выйдите из редактора.

Поскольку мы изменили файл конфигурации, мы должны перезапустить (или запустить) службуgraylog-server. Команда перезагрузки запустит сервер, даже если он в данный момент остановлен.

sudo systemctl restart graylog-server

Далее проверьте состояние сервера.

sudo systemctl status graylog-server

Вывод должен выглядеть примерно так:

● graylog-server.service - Graylog server
   Loaded: loaded (/usr/lib/systemd/system/graylog-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-03-03 20:10:34 PST; 1 months 7 days ago
     Docs: http://docs.graylog.org/
 Main PID: 1300 (graylog-server)
    Tasks: 191 (limit: 9830)
   Memory: 1.2G
      CPU: 14h 57min 21.475s
   CGroup: /system.slice/graylog-server.service
           ├─1300 /bin/sh /usr/share/graylog-server/bin/graylog-server
           └─1388 /usr/bin/java -Xms1g -Xmx1g -XX:NewRatio=1 -server -XX:+ResizeTLAB -XX:+UseConcMarkSweepGC -XX:+CMSCon

Вы должны увидетьactive для статуса.

Если вывод сообщает, что система не работает, проверьте/var/log/syslog на наличие ошибок. Убедитесь, что вы установили Java при установке Elasticsearch, и что вы изменили все значения на шаге 3. Попытка перезапустить сервис Graylog снова.

Если вы настроили брандмауэр сufw, добавьте исключение брандмауэра для TCP-порта9000, чтобы вы могли получить доступ к веб-интерфейсу:

sudo ufw allow 9000/tcp

После запуска Graylog вы сможете получить доступ кhttp://your_server_ip:9000 с помощью своего веб-браузера. Возможно, вам придется подождать до пяти минут после перезапускаgraylog-server до запуска веб-интерфейса. Кроме того, убедитесь, что MongoDB работает.

Теперь, когда Graylog работает правильно, мы можем перейти к обработке журналов.

[[step-4 -—- Creating-an-input]] == Шаг 4 - Создание ввода

Давайте добавим новый вход в Graylog для получения логов. Входы сообщают Graylog, какой порт прослушивать и какой протокол использовать при получении журналов. Мы добавим вход Syslog UDP, который является широко используемым протоколом ведения журнала.

Когда вы посещаетеhttp://your_server_ip:9000 в своем браузере, вы увидите страницу входа. Используйтеadmin в качестве имени пользователя и пароль, который вы ввели на шаге 3, в качестве пароля.

После входа в систему вы увидите страницу «Начало работы», которая выглядит следующим образом:

Getting Started

Чтобы просмотреть страницу входов, щелкните раскрывающийся списокSystem на панели навигации и выберитеInputs.

После этого вы увидите раскрывающееся окно с текстомSelect Input. ВыберитеSyslog UDP из этого раскрывающегося списка, а затем нажмите кнопкуLaunch new input.

Модал с формой должен появиться. Заполните следующие данные, чтобы создать свой вклад:

  1. ДляNode выберите свой сервер. Это должен быть единственный пункт в списке.

  2. ДляTitle введите подходящий заголовок, напримерLinux Server Logs.

  3. ДляBind address используйте частный IP-адрес вашего сервера. Если вы также хотите иметь возможность собирать журналы с внешних серверов (не рекомендуется, поскольку системный журнал не поддерживает аутентификацию), вы можете установить его на0.0.0.0 (все интерфейсы).

  4. ДляPort введите8514. Обратите внимание, что мы используем порт8514 для этого руководства, потому что порты с0 по1024 могут использоваться только пользователем root. Вы можете использовать любой порт с номером выше1024, это нормально, если он не конфликтует с другими службами.

ЩелкнитеSave. Список локальных входов обновится и покажет ваш новый вход, как показано на следующем рисунке:

Screenshot of local inputs

Теперь, когда вход был создан, мы можем отправить некоторые журналы в Graylog.

[[step-5 -—- configure-servers-to-send-logs-to-graylog]] == Шаг 5. Настройте серверы для отправки журналов в Graylog

У нас есть настроенный вход, который прослушивает порт8514, но мы еще не отправляем на вход никаких данных, поэтому мы не увидим никаких результатов. rsyslog - это программная утилита, используемая для пересылки журналов и предустановленная в Ubuntu, поэтому мы настроим ее для отправки журналов в Graylog. В этом руководстве мы настроим сервер Ubuntu, на котором выполняется Graylog, для отправки его системных журналов на вход, который мы только что создали, но вы можете выполнить эти шаги на любых других ваших серверах.

[.Примечание]##

Если вы хотите отправлять данные в Graylog с других серверов, вам необходимо добавить исключение брандмауэра для UDP-порта8514.

sudo ufw allow 8514/udp

Создайте и откройте новый файл конфигурацииrsyslog в вашем редакторе.

sudo nano /etc/rsyslog.d/60-graylog.conf

Добавьте в файл следующую строку, заменивyour_server_private_ip частным IP-адресом вашего сервера Graylog.

/etc/rsyslog.d/60-graylog.conf

*.* @your_server_private_ip:8514;RSYSLOG_SyslogProtocol23Format

Сохраните и выйдите из редактора.

Перезапустите службуrsyslog, чтобы изменения вступили в силу.

sudo systemctl restart rsyslog

Повторите эти шаги для каждого сервера, с которого вы хотите отправлять журналы.

Теперь вы сможете просматривать свои журналы в веб-интерфейсе. Щелкните вкладкуSources на панели навигации, чтобы просмотреть график источников. Это должно выглядеть примерно так:

Screenshot of sources

Вы также можете щелкнуть вкладкуSearch на панели навигации, чтобы просмотреть обзор самых последних журналов.

Вы можете узнать больше о поиске вGraylog searching documentation.

Заключение

Теперь у вас есть работающий сервер Graylog с источником ввода, который может собирать журналы с других серверов.

Далее вы можете захотеть настроить панели мониторинга, оповещения и потоки. Панели инструментов обеспечивают быстрый обзор ваших журналов. Потоки классифицируют сообщения, которые вы можете отслеживать с помощью предупреждений. Чтобы узнать больше о настройке дополнительных функций Graylog, вы можете найти инструкции вGraylog documentation.

Related