Установка и первоначальная настройка Graylog

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

Из чего состоит:

  • Graylog Server: приём логов, обработка, веб-интерфейс.
  • MongoDB: настройки, пользователи, дашборды.
  • Data Node (OpenSearch): хранение и индексация самих логов.

Как принимает логи: Syslog, GELF, Beats (Filebeat, Winlogbeat), HTTP/JSON, NetFlow и другие. Агенты настраиваются централизованно через Sidecar.

Основные понятия:

  • Input: порт, на котором Graylog принимает логи.
  • Stream: правила, по которым сообщения раскладываются по потокам.
  • Index set: хранилище со своим сроком хранения.
  • Pipeline: разбор и обогащение сообщений.
  • Dashboard и Event: графики и оповещения.

Для нескольких компаний: для каждой делаете отдельные stream, index set и роль, тогда данные и сроки хранения разделены. Изоляция логическая, в рамках одного экземпляра. Если нужна жёсткая изоляция, ставьте отдельный Graylog на компанию.

Лицензия: Graylog Open бесплатен, лицензия SSPL. Часть функций (аудит действий, расширенные парсеры) только в платных версиях.

Плюсы: простой поиск, удобные дашборды и оповещения, хорошо подходит для логов серверов и сетевых устройств.

Минусы: требовательнее к ресурсам, чем Loki (нужно минимум 8 ГБ RAM), три компонента нужно обслуживать, нет полноценной мультитенантности.

Из чего состоит

  • Graylog Server принимает логи, обрабатывает и показывает веб-интерфейс.
  • MongoDB хранит настройки, пользователей, права и дашборды (сами логи в ней не лежат).
  • Data Node / OpenSearch хранит и индексирует сами логи. В новых версиях Graylog есть собственный Data Node, который упрощает установку.

Все три компонента ставятся на один сервер для небольших объёмов или разносятся для больших.

Как логи попадают в Graylog

  • Syslog (UDP/TCP): сетевое оборудование, Linux через rsyslog, MikroTik, firewall’ы.
  • GELF: собственный формат Graylog, удобен для приложений и Docker.
  • Beats (Filebeat, Winlogbeat): чтение файлов логов и журнала Windows.
  • Sidecar: центральное управление конфигурацией сборщиков (Filebeat и др.) прямо из интерфейса Graylog.
  • Также HTTP/JSON, NetFlow, IPFIX и другие входы.

В Graylog Open поддерживаются Syslog, CEF, GELF, Beats, HTTP-JSON, IPFIX, Netflow и обычный текст, а также Sidecar, потоки (Streams) и конвейеры (Pipelines). graylog

Типичная схема подключения: серверы клиента отправляют логи на ваш Graylog по TLS (Syslog TLS или Beats) либо через VPN (WireGuard). Либо в сети клиента стоит небольшой пересылающий сервер (rsyslog или Graylog Forwarder), который шлёт логи наружу одним каналом.

Лицензия и ограничения (важно)

  • Graylog Open бесплатен для самостоятельной установки, но лицензирован по SSPL v1: это не одобренная OSI лицензия, хотя использовать Graylog бесплатно можно. Для внутреннего использования и администрирования клиентов это обычно не мешает, но юридическую сторону стоит прочитать, если вы планируете предлагать «логи как услугу». tech-insider
  • В Open доступны основные функции: входы, потоки, конвейеры, поиск, дашборды, алерты. Часть возможностей только в платных версиях, например журнал аудита действий пользователей и Enterprise Forwarder. graylog
  • Готовые пакеты разбора логов (Illuminate) в Open ограничены: Open поддерживает очень небольшое число парсеров, а для установки Illuminate нужно подключить Enterprise-плагин. graylog
  • Цены на платные версии указываются по запросу, ориентиры из обзоров: Enterprise от 15 000 долларов в год. Для небольших объёмов вроде бы есть бесплатная Enterprise-лицензия (ссылаются на порог 5 ГБ/день), но условия лучше проверить на graylog.org/pricing, они меняются.

Стек из трёх служб: MongoDB (настройки), Data Node (хранит и индексирует логи, это управляемый OpenSearch) и Graylog Server. Ресурсы: каждая из трёх служб потребляет 1-2 ГБ памяти, поэтому берите минимум 4 vCPU, 8 ГБ RAM (лучше 16) и быстрый диск под ваши логи.

0. Подготовка

bash

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl gnupg wget pwgen chrony
sudo timedatectl set-timezone Europe/Warsaw     # свой часовой пояс

Точное время важно: по нему строятся индексы и поиск, поэтому стоит chrony.

Data Node (OpenSearch) требует увеличить лимит карт памяти:

bash

echo "vm.max_map_count=262144" | sudo tee /etc/sysctl.d/99-graylog.conf
sudo sysctl --system

1. MongoDB 7.0

bash

curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo apt update
sudo apt install -y mongodb-org
sudo apt-mark hold mongodb-org
sudo systemctl enable --now mongod
sudo systemctl status mongod

Репозиторий jammy используется и на Ubuntu 24.04 (так делают в протестированных инструкциях). apt-mark hold не даёт MongoDB случайно обновиться до версии, которую Graylog не поддерживает.

2. Репозиторий Graylog и Data Node

Ссылку на актуальный пакет репозитория возьмите на странице Ubuntu Installation в документации. Для 7.0 она по шаблону выглядит так (раньше, например, было graylog-5.2-repository_latest.deb):

bash

wget https://packages.graylog2.org/repo/packages/graylog-7.0-repository_latest.deb
sudo dpkg -i graylog-7.0-repository_latest.deb
sudo apt update
sudo apt install -y graylog-datanode

Секрет, общий для Data Node и Graylog

bash

pwgen -N 1 -s 96

Сохраните вывод: это password_secret, он должен быть одинаковым на Data Node и на сервере Graylog. Им шифруются данные в MongoDB и связь между компонентами.

Настройте Data Node:

bash

sudo nano /etc/graylog/datanode/datanode.conf

ini

password_secret = <ваш_секрет_из_pwgen>
mongodb_uri = mongodb://localhost/graylog
# при необходимости задайте память OpenSearch (не более половины RAM):
# opensearch_heap = 4g

Запуск:

bash

sudo systemctl daemon-reload
sudo systemctl enable --now graylog-datanode
sudo systemctl status graylog-datanode

3. Graylog Server

bash

sudo apt install -y graylog-server

Пароль администратора хранится в виде SHA-256:

bash

echo -n "Ваш_надёжный_пароль" | shasum -a 256

Правим конфиг:

bash

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

ini

password_secret = <тот_же_секрет_что_в_datanode>
root_password_sha2 = <хэш_из_команды_выше>
http_bind_address = 0.0.0.0:9000
http_external_uri = http://<IP-или-имя-сервера>:9000/

По умолчанию веб-интерфейс слушает только 127.0.0.1, поэтому http_bind_address нужно менять, иначе снаружи он недоступен. Если закрываете его reverse-прокси с HTTPS, оставьте 127.0.0.1 и укажите http_external_uri с внешним https://-адресом.

Запуск:

bash

sudo systemctl daemon-reload
sudo systemctl enable --now graylog-server

4. Первоначальная настройка (preflight)

При первом запуске с Data Node Graylog открывает режим предварительной настройки. Временные логин и пароль для него выводятся в журнал:

bash

sudo journalctl -u graylog-server | grep -i -A2 "initial configuration"
# или
sudo tail -n 100 /var/log/graylog-server/server.log
  1. Откройте http://<IP-сервера>:9000 и войдите временными данными из журнала.
  2. Дождитесь, пока Data Node определится в списке.
  3. Создайте центр сертификации (CA) и выдайте сертификат для Data Node (мастер на странице всё предложит).
  4. Нажмите Resume startup и дождитесь загрузки Graylog.
  5. Войдите постоянными данными: логин admin, пароль, из которого вы делали хэш.

5. Файрвол

bash

sudo ufw allow 9000/tcp          # веб-интерфейс (лучше только из вашей сети/VPN)
sudo ufw allow 1514/tcp          # Syslog
sudo ufw allow 1514/udp
sudo ufw allow 12201/udp         # GELF
sudo ufw allow 5044/tcp          # Beats

Порты 9200, 9300, 8999 (Data Node) и 27017 (MongoDB) наружу не открывайте: они нужны только самим компонентам. Для клиентских сетей разрешайте входящие только с их IP или через VPN. Лучше использовать TLS на входах для внешних клиентов.

Syslog лучше принимать на порту 1514, а не 514: порты ниже 1024 требуют привилегий, а Graylog работает не от root.

6. Первый приём логов

В интерфейсе: System → Inputs → Select input → Syslog TCP → Launch new input.

  • Bind address: 0.0.0.0, Port: 1514.
  • Сохраните и запустите (Start input).

Проверка с любого Linux-сервера:

bash

sudo apt install -y rsyslog
echo '*.* @@&lt;IP-graylog>:1514;RSYSLOG_SyslogProtocol23Format' | sudo tee /etc/rsyslog.d/90-graylog.conf
sudo systemctl restart rsyslog
logger "тестовое сообщение для Graylog"

Откройте Search: сообщение должно появиться через несколько секунд.

7. Что сделать сразу, чтобы не переделывать

  • Streams и Index sets под каждую компанию: System → Indices (срок хранения и ротация) и Streams (правила попадания сообщений). Делайте это до массового подключения серверов.
  • Роли и пользователи: System → Users and Teams, с привязкой к потокам компаний.
  • HTTPS для веб-интерфейса: проще всего через nginx или Caddy перед Graylog.
  • Резервное копирование: MongoDB (mongodump) и снимки индексов Data Node, плюс сохранение password_secret: без него данные из MongoDB не расшифровать.
  • Запрет автообновления: sudo apt-mark hold graylog-server graylog-datanode, обновляйте по инструкции и после бэкапа.

8. Частые проблемы

СимптомЧто проверить
Data Node не стартуетjournalctl -u graylog-datanode -f; sysctl vm.max_map_count; хватает ли RAM
Graylog не стартует/var/log/graylog-server/server.log; одинаков ли password_secret; запущена ли MongoDB
Интерфейс не открывается снаружиhttp_bind_address, файрвол, `ss -tlnp
Сообщения не приходятзапущен ли Input (зелёный статус), порт и протокол (TCP/UDP), файрвол на обеих сторонах
Нет места на дискесроки хранения в Index set, ротация и удаление старых индексов

Добавить комментарий