Вступление
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, в качестве пароля.
После входа в систему вы увидите страницу «Начало работы», которая выглядит следующим образом:
Чтобы просмотреть страницу входов, щелкните раскрывающийся списокSystem на панели навигации и выберитеInputs.
После этого вы увидите раскрывающееся окно с текстомSelect Input. ВыберитеSyslog UDP из этого раскрывающегося списка, а затем нажмите кнопкуLaunch new input.
Модал с формой должен появиться. Заполните следующие данные, чтобы создать свой вклад:
-
ДляNode выберите свой сервер. Это должен быть единственный пункт в списке.
-
ДляTitle введите подходящий заголовок, например
Linux Server Logs
. -
ДляBind address используйте частный IP-адрес вашего сервера. Если вы также хотите иметь возможность собирать журналы с внешних серверов (не рекомендуется, поскольку системный журнал не поддерживает аутентификацию), вы можете установить его на
0.0.0.0
(все интерфейсы). -
ДляPort введите
8514
. Обратите внимание, что мы используем порт8514
для этого руководства, потому что порты с0
по1024
могут использоваться только пользователем root. Вы можете использовать любой порт с номером выше1024
, это нормально, если он не конфликтует с другими службами.
ЩелкнитеSave. Список локальных входов обновится и покажет ваш новый вход, как показано на следующем рисунке:
Теперь, когда вход был создан, мы можем отправить некоторые журналы в 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 на панели навигации, чтобы просмотреть график источников. Это должно выглядеть примерно так:
Вы также можете щелкнуть вкладкуSearch на панели навигации, чтобы просмотреть обзор самых последних журналов.
Вы можете узнать больше о поиске вGraylog searching documentation.
Заключение
Теперь у вас есть работающий сервер Graylog с источником ввода, который может собирать журналы с других серверов.
Далее вы можете захотеть настроить панели мониторинга, оповещения и потоки. Панели инструментов обеспечивают быстрый обзор ваших журналов. Потоки классифицируют сообщения, которые вы можете отслеживать с помощью предупреждений. Чтобы узнать больше о настройке дополнительных функций Graylog, вы можете найти инструкции вGraylog documentation.