Управление логами с помощью Graylog 2 в Ubuntu 16.04
Java, Ubuntu | Комментировать запись
Graylog – это производительная платформа с открытым исходным кодом, предназначенная для управления логами. Graylog собирает и извлекает важные данные из логов сервера, которые обычно отправляются с помощью протокола Syslog. Также Graylog позволяет искать и визуализировать логи в веб-интерфейсе.
В этом руководстве показано, как установить и настроить Graylog на сервере Ubuntu 16.04.
Требования
- Сервер Ubuntu 16.04, 2 Гб RAM минимум.
- Частная сеть.
- Пользователь с доступом к sudo (инструкции – здесь).
- Oracle JDK 8 (советы по установке можно найти в специальном разделе этого руководства).
- Elasticsearch 2.x (инструкции вы найдёте в специальном разделе этого руководства). Каждая конкретная версия Graylog совместима только с одной конкретной версией Elasticearch. К примеру, Graylog 2.x не работает с Elasticsearch 5.x. Подробную информацию о совместимости версий вы найдёте в этой таблице (в данном руководстве используется Elasticsearch 2.4.4 и Graylog 2.2).
- MongoDB (установить БД вам поможет это руководство).
1: Настройка Elasticsearch
Отредактируйте конфигурационный файл Elasticsearch и укажите имя кластера, которое также будет указано в конфигурации Graylog. Для простоты можно использовать стандартное имя кластера Graylog – это graylog. Конечно, при необходимости вы можете выбрать любое другое имя; в таком случае не забудьте откорректировать настройки Graylog.
Откройте конфигурационный файл Elasticsearch:
sudo nano /etc/elasticsearch/elasticsearch.yml
Найдите строку:
cluster.name: <CURRENT CLUSTER NAME>
Измените значение cluster.name на graylog:
cluster.name: graylog
Сохраните и закройте файл.
Перезапустите сервис, чтобы обновить настройки.
sudo systemctl restart elasticsearch
2: Установка Graylog
Загрузите пакет с настройками репозитория Graylog. Актуальную версию можно найти на сайте проекта. В руководстве используется версия 2.2.
wget https://packages.graylog2.org/repo/packages/graylog-2.2-repository_latest.deb
Установите репозиторий из пакета .deb:
sudo dpkg -i graylog-2.2-repository_latest.deb
Примечание: Если вы используете другую версию, укажите её в команде вместо 2.2.
Теперь нужно извлечь новый список пакетов. Выполните команду:
sudo apt-get update
Установите пакет graylog-server:
sudo apt-get install graylog-server
Добавьте Graylog в автозагрузку:
sudo systemctl enable graylog-server.service
Сервис Graylog успешно установлен.
3: Настройка 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
Затем нужно установить значение root_password_sha2. Это хэш SHA-256 пароля. Снова используйте команду sed, чтобы внести изменения в конфигурационный файл Graylog (чтобы не генерировать хэш SHA-256 с помощью shasum и не вставлять его в конфигурационный файл вручную).
Выполните следующую команду, вместо password укажите свой пароль администратора.
Примечание: Команда начинается с пробела, благодаря чему пароль не будет храниться в виде простого текста в истории 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
Найдите следующие строки, раскомментируйте их и укажите внешний IP-адрес или домен сервера Graylog.
...
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 и изменили все значения, указанные в разделе 3. Затем снова попробуйте запустить Graylog.
Если вы настроили брандмауэр ufw, добавьте в его правила исключение для TCP-порта 9000, чтобы получить доступ к интерфейсу:
sudo ufw allow 9000/tcp
Запустив сервис Graylog, откройте в браузере страницу:
http://your_server_ip:9000
После перезагрузки сервиса страница может загружаться около 5 минут. Кроме того, нужно убедиться, что БД MongoDB запущена.
4: Создание input
Создайте input, чтобы получать данные логов, собранные Graylog. Input сообщает, какой порт и протокол нужно прослушивать при сборе логов. Добавьте input для Syslog UDP (наиболее распространённый протокол логирования).
Открыв в браузере http://your_server_ip:9000, вы увидите страницу входа. В поле username введите admin, а в поле password – пароль, созданный в разделе 3.
После аутентификации вы получите доступ к интерфейсу. На экране появится приветственная страница Getting Started.
Чтобы открыть страницу input, разверните меню System и выберите Inputs.
Затем вы увидите раскрывающийся список Select Input. Выберите Syslog UDP, а затем нажмите кнопку Launch new input.
Появится форма, которую нужно заполнить.
- В поле Node выберите свой сервер.
- В Title выберите описательное название (например, Linux Server Logs).
- В Bind address укажите внутренний IP-адрес сервера. Чтобы собирать данные логов с внешних серверов, выберите 0.0.0.0 (все интерфейсы), однако такой вариант использовать не рекомендуется, так как Syslog не поддерживает аутентификации.
- В Port введите 8514. В руководстве используется порт 8514, поскольку порты от 0 до 1024 может использовать только пользователь root.
- Нажмите Save. Список input обновится.
5: Отправление логов в Graylog
Теперь у вас есть input, который прослушивает порт 8514, но пока что не передаёт никаких данных. Утилита rsyslog используется для пересылки логов; она предварительно установлена в Ubuntu. В этом руководстве показано, как настроить сервер Ubuntu, на котором установлен сервис Graylog, для отправки логов.
Примечание: Выполните этот раздел на других серверах, чтобы собирать их данные в Graylog. Кроме того, чтобы отправлять в Graylog данные с других серверов, нужно добавить правило брандмауэра для порта UDP 8514.
sudo ufw allow 8514/udp
Создайте и откройте конфигурационный файл rsyslog:
sudo nano /etc/rsyslog.d/60-graylog.conf
Добавьте в него следующую строку (вместо your_server_private_ip укажите внутренний IP сервера Graylog).
*.* @your_server_private_ip:8514;RSYSLOG_SyslogProtocol23Format
Сохраните и закройте файл.
Перезапустите сервис rsyslog:
sudo systemctl restart rsyslog
Повторите этот раздел на каждом сервере, логи которого нужно собирвать.
Теперь вы можете просмотреть данные в интерфейсе. Откройте вкладку Sources в меню навигации, чтобы просмотреть графики ресурсов.
Чтобы получить общие сведения о ресурсах, откройте Search.
Заключение
Теперь у вас есть полностью рабочий сервер Graylog, который собирает и анализирует данные логов.
После этого вы можете настроить дашборды и оповещения. Дашборды предоставляют краткий обзор логов.
Больше информации о Graylog можно найти в документации проекта.
Tags: ElasticSearch, Graylog, Graylog 2, MongoDB, Oracle JDK 8, Ubuntu 16.04