Graylog это полноценное open-source решение для централизованного сбора, хранения, визуализации, фильтрации и поиска логов, мониторинга и отправки оповещений. В Graylog можно отправлять логи и журналы событий с сотен сетевых устройств, будь то сервера Linux, Windows, сетевые устройства и оборудование.
Для начала нужно установить MongoDB Community Edition на нашем сервере.
Если пакет curl и gnupg еще не установлен, установите его:
sudo apt-get install gnupg curl
Чтобы импортировать публичный GPG-ключ MongoDB, выполните следующую команду:
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 [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
Обновим список доступных пакетов:
sudo apt-get update
Теперь установим последнюю доступную версию:
sudo apt-get install -y mongodb-org
После успешной установки запустим БД:
sudo systemctl daemon-reload
sudo systemctl enable mongod
sudo systemctl start mongod
Обязательно проверьте, запустилась ли MongoDB! Я сталкивался с проблемой, когда сервис запускается на Hyper-V виртуальной машине и если у вирутальной машины в настройках, в разделе Процессор/Совместимость стоит галочка «Выполнить перенос на физический компьютер с другой версией процессора», то Hyper-V срезает поддержку AVX, без которой MongoDB не запустится.
OpenSearch - основной и важнейший компонент Graylog. Для его установки загрузим последнюю версию c сайт https://opensearch.org/downloads.html
На сайте нужно выбрать версию Linux .deb
Для версии 2.13.0 можно использовать компанду:
wget https://artifacts.opensearch.org/releases/bundle/opensearch/2.13.0/opensearch-2.13.0-linux-x64.deb
OpenSearch v2.12 и выше требует установки переменной среды OPENSEARCH_INITIAL_ADMIN_PASSWORD при установке. Пароль должен состоять минимум из восьми символов, по крайней мере, одной прописной буквы, одной строчной буквы, одной цифры и одного специального символа.
Поэтому для установки скачанного пакета использум следующую команду:
sudo OPENSEARCH_INITIAL_ADMIN_PASSWORD=$(tr -dc A-Z-a-z-0-9_@#%^-_=+ < /dev/urandom | head -c${1:-32}) dpkg -i opensearch-2.13.0-linux-x64.deb
Теперь настроим OpenSearch для Graylog. Откроем файл /etc/opensearch/opensearch.yml
sudo nano /etc/opensearch/opensearch.yml
Обновите следующие поля для минимальной работы одного сервера:
cluster.name: graylog
node.name: ${HOSTNAME}
path.data: /var/lib/opensearch
path.logs: /var/log/opensearch
discovery.type: single-node
network.host: 0.0.0.0
action.auto_create_index: false
plugins.security.disabled: true
indices.query.bool.max_clause_count: 32768
Теперь настроим парметры JVM:
sudo nano /etc/opensearch/jvm.options
Обновите настройки Xms и Xmx, указав половину установленной системной памяти, как показано в примере ниже:
## JVM configuration
################################################################
## IMPORTANT: JVM heap size
################################################################
##
## You should always set the min and max JVM heap
## size to the same value. For example, to set
## the heap to 4 GB, set:
##
## -Xms4g
## -Xmx4g
##
## See https://opensearch.org/docs/opensearch/install/important-settings/
## for more information
##
################################################################
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms1g
-Xmx1g
Добавим необходимые настрйки ядра:
sudo sysctl -w vm.max_map_count=262144
sudo echo 'vm.max_map_count=262144' >> /etc/sysctl.conf
Наконец, активируем сервис:
systemctl daemon-reload
systemctl enable opensearch
systemctl start opensearch
Теперь добавим его реопозиторий и установим сам пакет:
wget https://packages.graylog2.org/repo/packages/graylog-5.0-repository_latest.deb
sudo dpkg -i graylog-5.0-repository_latest.deb
sudo apt-get update && sudo apt-get install graylog-server
После успешной установки, требуется произвести настройку, без которой Graylog не запустится. Потребуется добавить две переменных в файл /etc/graylog/server/server.conf:
< /dev/urandom tr -dc A-Z-a-z-0-9 | head -c${1:-96};echo;
Для генерации .root_password_sha2 используем:
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
Во время выполнения данной команды будет предложено ввести пароль, хеш от которого и нужно добавить в конфигуарцию. Введеный пароль и будет паролем администратора.
После запуска сервис будет доступен только локально, но мы же хотим подключаться к нему с других компьютеров, используя веб браузер. Для этого есть два пути:
1.Изменить настройку в файле etc/graylog/server/server.conf http_bind_address = 127.0.0.1:9000 на http_bind_address = 0.0.0.0:9000 и тогда сервис будет доступен с любого адреса на порт 9000:
#
# Default: 127.0.0.1:9000
http_bind_address = 0.0.0.0:9000
#
# http_bind_address = 127.0.0.1:9000
#
2.Настроить реверс-прокси на основе NGINX. Тогда сервис будет доступен на стандартном 80 порту. Примерное содержимое файла:
server {
listen 80;
server_name graylog.example.com;
access_log /var/log/nginx/graylog.access.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:9000;
proxy_read_timeout 90;
proxy_redirect http://localhost:9090 https://graylog.example.com;
}
}
Теперь запустим сам сервис:
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service
Для подключения используем логин admin и пароль, что создавали выше, в переменной root_password_sha2
Для начала создаём UDP Input для системных логов:
System/Overview → Inputs
Выбираем тип Input:
Select input → Syslog UDP
Этих настроек будет достаточно:
Title: SyslogUDP
Bind address: 0.0.0.0
Port: 10514
Для отправки логов с Debian например, настроим службу rsyslog на отправку все логов. Для этого добавим файл:
nano /etc/rsyslog.d/90-graylog2.conf
Содержание:
*.* @10.0.0.10:10514;RSYSLOG_SyslogProtocol23Format