Graylog — это сервер сбора и анализа логов, в этой статье будет описана установка этого сервера версии 6.1 на Debian 12.
О решении Graylog
Graylog это сервер для сбора и анализа логов. Который позволяет собирать логи с других серверов или устройств (роутеров, принтеров) различными способами. Graylog может выполнять широкий спектр функций:
- централизированный сбор логов;
- аналитика собранных данных;
- мониторинг за событиями безопасности;
- обнаружение инцидентов и оповещения.
Официальную документацию по этому решению вы найдёте здесь.
Есть несколько версий данного решения:
- Graylog Open. Бесплатная версия с открытым исходным кодом, доступна для разворачивания на своих серверах;
- Graylog Enterprise. Платное решение предлагающее работу на своём железе. Предоставляет все возможности Graylog Open, а также дополнительные возможности и доступ к службе поддержки.
- Graylog Security. Предоставляет все функции Graylog Enterprise, а также набор инструментов для обнаружения, расследования и реагирования на угрозы (TDIR). Ориентированный на обеспечение кибербезопасности.
- Graylog Cloud. Облачный сервис, который сокращает издержки, обеспечивает быстрое развертывание и бесперебойное обновление.
Этот сервер работает на Java. Для хранения сообщений журнала и метаданных используется NoSQL база данных MongoDB. А в качестве поисковой системы можно использовать OpenSearch или ElasticSearch. Я же буду использовать DataNode — это самоуправляемый OpenSearch для Graylog.
Таким образом мы установим:
- Java (на нём работает Graylog и DataNode);
- MongoDB (хранит метаданные и конфигурационные данные, действует как постоянное хранилище данных для узлов OpenSearch);
- DataNode (служба, которая управляет OpenSearch, так что вам не нужно устанавливать и настраивать OpenSearch отдельно);
- Graylog (сервер сбора и анализа данных со встроенным веб-интерфейсом).

Кстати! Как заметили в комментариях, при установке Mongodb на KVM (proxmox), можно столкнуться с проблемой совместимости CPU, для решения можно установить тип процессора на host.
Системные требования
Что касается системных требований. На рисунке выше, сами разработчики предъявляют следующие системные требования:
- При суточной загрузки логов в 1-10GB. Graylog + OpenSearch = 40 GB.
Сервер на самом деле потребляет очень много оперативной памяти. Но в моём случае (при суточной загрузке логов в 10 МБ) необходимо 5 GB оперативки. На это влияют три процесса сервера:
- opensearch = 1.63 GB;
- graylog = 1.27 GB;
- graylog-datanode = 1GB.
То-есть, как минимум, у вас должно быть 5 GB оперативки, но лучше выделить 6 GB с запасом.
Установка Java
Установим Java и чтобы проверить правильность установки посмотрим на её версию:
# apt install -y openjdk-17-jre # java -version
Установка MongoDB
Настроим репозиторий:
# apt install -y curl gnupg # curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor # echo "deb [signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" > /etc/apt/sources.list.d/mongodb-org-7.0.list
Установим MongoDB:
# apt update # apt install -y mongodb-org
Включим и добавим в автозагрузку службу сервера mongodb, проверим её статус и зафиксируем версию:
# systemctl enable --now mongod # systemctl status mongod # apt-mark hold mongodb-org
Установка Data Node
Настроим репозиторий:
# wget https://packages.graylog2.org/repo/packages/graylog-6.1-repository_latest.deb # dpkg -i graylog-6.1-repository_latest.deb
Установим Data Node:
# apt update # apt install -y graylog-datanode
Сгенерируем секретный пароль и запишем его в конфиг:
# head -c 96 /dev/urandom | base64 | tr -dc 'A-Za-z0-9' | head -c 96; echo # nano /etc/graylog/datanode/datanode.conf password_secret = <сгенерированный пароль>
По умолчанию Data Node использует каталог mmapfs для хранения своих индексов. Ограничения операционной системы по умолчанию на количество mmap, скорее всего, будут слишком низкими, что может привести к нехватке памяти. Исправим это:
# nano /etc/sysctl.d/graylog.conf vm.max_map_count=262144 # sysctl -p /etc/sysctl.d/graylog.conf vm.max_map_count = 262144
Включим службу сервера и добавим её в автозагрузку, а также посмотрим на статус службы:
# systemctl enable --now graylog-datanode # systemctl status graylog-datanode
Установка Graylog
Установим Graylog сервер:
# apt install graylog-server
Сгенерируем хэш пароль от админки:
# echo -n '<пароль>' | sha256sum
В конфиг добавим секретный пароль (который мы генерировали для Data Node) и хеш пароля от админки. А также укажем, на каком адресе работает сервер:
# nano /etc/graylog/server/server.conf password_secret = <сгенерированный секрет> root_password_sha2 = <сгенерированный хэш пароль> http_bind_address = <ip_сервера>:9000
Запустим службу сервера и добавим её в автозагрузку:
# systemctl daemon-reload # systemctl enable --now graylog-server # systemctl status graylog-server
После запуска посмотрим первые логи:
# tail /var/log/graylog-server/server.log
Там должна быть ссылка с логином и паролем для первого входа, например такая — http://admin:GjVZHoYPQU@192.168.0.28:9000. При первом входе перейдите по этой ссылке в вашем браузере.
Настройка сертификатов
При первом входе нужно будет настроить сертификаты. Вы можете загрузить на сервер свой CA файл, если у вас есть такой, или создать CA и использовать его. Я покажу как создать новый CA.
Выбираем вкладку «Create new CA» и нажимаем на кнопку «Create CA».

Дальше настроим политику обновления сертификатов, например я указал обновлять сертификаты раз в год:

Дальше нажмите на кнопку «Provision certificate and continue»:

Ну и наконец нажмите на кнопку «Resume startup»:

Первый вход в систему
После проделанного вы сможете зайти под пользователем admin и вашим придуманным паролем (вы для него создавали хэш):

Настройка Nginx как Reverse Proxy
Для удобства теперь мы можем установить и настроить Nginx в качестве Reverse Proxy.
Установим Nginx и настроим конфиг для проксирования на Graylog:
# apt install nginx # nano /etc/nginx/sites-available/graylog.conf server { listen 80; server_name srv-graylog; # Переадресация всех запросов на HTTPS return 301 https://$host$request_uri; } server { listen 443 ssl; server_name srv-graylog; ssl_certificate <путь к сертификату>; ssl_certificate_key <путь к ключу>; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location / { proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Graylog-Server-URL http://$server_name/; proxy_pass http://127.0.0.1:9000; } }
Внимание! В примере выше у вас должны быть сертификаты TLS, их получение я в этой статье не рассматриваю. Пути к сертификату и ключу вы должны указать в параметрах ssl_certificate и ssl_certificate_key.
Применим изменения:
# rm -rf /etc/nginx/sites-enabled/default # ln -s /etc/nginx/sites-available/graylog.conf /etc/nginx/sites-enabled/ # systemctl restart nginx
Перенастроим сервер Graylog:
# nano /etc/graylog/server/server.conf http_bind_address = 127.0.0.1:9000 web_listen_uri = http://127.0.0.1:9000/ web_endpoint_uri = http://<адрес сервера>/api/ # systemctl restart graylog-server.service
Теперь доступ к Graylog будет не по 9000 порту, а по 443 (протокол https).
Итог
После того, как установка Graylog окончена, у вас в системе появятся три службы с конфигами:
- graylog-server.service
- /etc/graylog/server/server.conf
- graylog-datanode.service
- /etc/graylog/datanode/datanode.conf
- mongod.service
- /etc/mongod.conf
Дополнительно, но не знаю на сколько это повлияло на потребление памяти (в моём случае оно уменьшилось и больше не растёт), я в конфиг graylog добавил следующее:
# nano /etc/graylog/server/server.conf enabled_index_rotation_strategies = count,size,time,time-size-optimizing rotation_strategy = size elasticsearch_max_size_per_index = 2147483648
То есть ротация индексов будет по размеру, а максимальный размер индекса равен 2 GB.
Дополнительно есть конфиг для opensearch (но его редактировать не получится, он управляется службой graylog-datanode и постоянно перегенерируется):
- /var/lib/graylog-datanode/opensearch/config/opensearch/opensearch.yml
База данных opensearch лежит в каталогах:
- данные — /var/lib/graylog-datanode/opensearch/data
- логи — /var/log/graylog-datanode/opensearch
Логи сервера:
- /var/log/graylog-server/server.log
- /var/log/graylog-datanode/datanode.log
- /var/log/mongodb/mongod.log
О том, как начать собирать логи с ваших серверов я опишу в отдельных статьях.
Если понравилась статья, подпишись на мой канал в VK или Telegram.
Приветсвую.
в статье не раскрыты минимальные и оптимальные системные требования.
Согласен, сам только начинаю использовать это решение, поэтому на момент написание статьи не знал сколько потребуется ресурсов. Уже знаю, так что добавлю в статью. Кстати, оперативной памяти требуется не мало, как минимум 5GB для 6 серверов и 2 роутеров, при хранении логов в течении 20 дней.
Хочу обратить внимание, те кто будут устанавливать Mongodb на KVM (proxmox), могут столкнуться с проблемой совместимости CPU.
Одно из решений, установить тип процессора на host
Да, это верно
Добрый день.
Во многих инструкциях написано, что для работы GreyLog требуется Java. У вас так же указано, что ее необходимо установить.
Но на оф сайте про нее ни слова…
Прошел все по инструкции без установки Java и все работает.
Не пойму, зачем тогда требуется Java?
Если вы установили Graylog, посмотрите какие процессы запущены, например с помощью top или htop, там должна быть Java. Возможно что Java в вашем случае была установлена по зависимостям, а я её устанавливал вручную. В конфигах Graylog даже можно управлять выделяемой памятью для Java. Посмотрите, есть у вас Java процессы?
Если проверить наличие java командой: java —version , то ничего не покажет, как будто она не установлена.
Но вот в процессах она есть, запущена от имени сервиса greylog+. Возможно она ставится вместе с graylog-datanode
Здравствуйте, нет доступа к репозиторию 403 ошибка, видимо он недоступен из России? Есть ли нормальное зеркало с файлами graylog?
Здравствуйте, вообще большая беда с этими блокировками, приходится обходными путями пользоваться. Но репозиторий не подскажу, сам не знаю, если найдёте напишите, добавлю его в статью.