Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Настройка docker-compose.yml

Для того чтобы поднять Graylog из docker-compose, необходимо предварительно настроить docker-compose.

Настройка учётной записи администратора Graylog

Сначала необходимо задать настройки супер-администратора. В Graylog обязательно должна быть одна учётная запись супер-администратора, настраиваемая в конфигурации Graylog.

Настроить учетную запись администратора через docker-compose можно с помощью следующих переменных:

- GRAYLOG_ROOT_USERNAME=admin
- GRAYLOG_PASSWORD_SECRET=somepasswordpepper
- GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

GRAYLOG_ROOT_USERNAME – имя учётной записи супер-администратора. По-умолчанию admin.

GRAYLOG_PASSWORD_SECRET – секрет, который будет использоваться при сохранении хэшей в базу. Минимальная длина секрета 16 символов, рекомендуемая – 64.

Сгенерировать секрет можно с помощью команды: pwgen -N 1 -s 96

GRAYLOG_ROOT_PASSWORD – SHA2 хэш пароля супер-администратора. По-умолчанию пароль admin.

Сгенерировать можно с помощью команды: echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1

Настройка внешнего адреса Graylog

Для корректной работы Graylog в связке с различными load-balancer'ами и reverse proxy необходимо настроить переменную

- GRAYLOG_HTTP_EXTERNAL_URI=http://localhost:9195/

По-умолчанию GRAYLOG_HTTP_EXTERNAL_URI указывает на адрес контейнера oauth-proxy, адрес которого проброшен на localhost.

Если в текущем решении будет использоваться ещё один reverse-proxy, например nginx для SSL-терминации, необходимо указывать адрес сервера nginx.

Для того чтобы Graylog мог принимать заголовки SSO только от доверенных хостов необходимо настроить переменную

- GRAYLOG_TRUSTED_PROXIES=127.0.0.1/32, 0:0:0:0:0:0:0:1/128, oauth-proxy/32, graylog/32

По умолчанию заголовки принимаются только из локальной подсети контейнера graylog и сети docker-compose.

Настройка oauth2-proxy

Для работы SSO необходимо настроить контейнер oauth-proxy.

- OAUTH2_PROXY_CLIENT_ID=<ID>
- OAUTH2_PROXY_CLIENT_SECRET=<secret>
- OAUTH2_PROXY_OIDC_ISSUER_URL=http://<ip-address>/auth/realms/b2b

OAUTH2_PROXY_CLIENT_ID – OpenID Connect ID Клиента

OAUTH2_PROXY_CLIENT_SECRET – OpenID Connect Secret Клиента

OAUTH2_PROXY_OIDC_ISSUER_URL – адрес Keycloak Realm'а

Для того чтобы поставить какой либо сервис за этот прокси, необходимо указать upstream адрес сервиса. Адрес на котором поднят Graylog в сети docker-compose: http://graylog:9000.

- OAUTH2_PROXY_UPSTREAMS=http://graylog:9000/


После аутентификации механизм OpenID Connect должен перенаправить пользователя на обратный адрес сервиса. Этот адрес задается в переменной OAUTH2_PROXY_REDIRECT_URL.

- OAUTH2_PROXY_REDIRECT_URL=http://localhost:9195/oauth2/callback

Указан внешний адрес oauth-proxy и адрес авторизации ouath2-proxy по умолчанию.

Можно использовать внешнюю систему авторизации, если требуется.

Если контейнер oauth-proxy находится за reverse proxy или load balancer'ом, например за nginx, то здесь необходимо будет указать адрес сервера nginx.


Адрес на котором поднимается прокси задается через переменную OAUTH2_PROXY_HTTP_ADDRESS

- OAUTH2_PROXY_HTTP_ADDRESS=oauth-proxy:9195

По умолчанию прокси поднят на адресе внутри контейнера, а порт проброшен наружу.


Если сервис будет поднят за reverse proxy с SSL-терминацией (HTTPS), то необходимо выставить переменную OAUTH2_PROXY_COOKIE_SECURE=true.

Для того чтобы Cookie не передавались в открытом виде необходимо сгенерировать новый Cookie-Secret: OAUTH2_PROXY_COOKIE_SECRET=HPxBYevNHGXVumRg

Для этого можно воспользоваться командой: pwgen -N 1 -s 96


Более подробные сведения о настройке Graylog можно найти на сайте с документацией.

Более подробные сведения о настройке oauth2-proxy можно найти на сайте с документацией.

Настройка плагина SSO после поднятия docker-compose.yml

  1. В файле docker-compose.yml настроить переменные окружения контейнеров graylog и oauth-proxy.
  2. Выполнить команду docker-compose up
  3. Произвести аутентификацию в SSO, затем зайти в Graylog под учетной записью системного администратора. Учётная запись по-умолчанию: admin/admin. Адрес по-умолчанию http://localhost:9195
  4. В настройках System->Authentication->Configure Provider Order включить Single Sign-On и выставить на самый верх.
  5. В настройках Single Sign-On (SSO) выставить следующие настройки:
    • Username Header: x-forwarded-preferred-username
    • Automatically create users включить
    • Full Name Header: x-forwarded-preferred-username
    • Default User Role: Admin
  6. Сохранить настройки Single Sign-On, теперь можно выйти из учетной записи администратора.
  7. После того как будет совершен выход из учётной записи администратора, должна произойти аутентификация через SSO.

Настройка NxLog

После установки новой версии пакета eltex-eap-tls необходимо настроить и запустить Nxlog для передачи форматированных логов eltex-eap-tls в систему Graylog.

Для начала нужно убедиться что на сервере с eltex-eap-tls существует файл /var/log/eltex-eap-tls/eaplinelog. Если файла нет то его необходимо создать и дать права на файл не ниже 766 чтобы радиус и докер могли читать и писать.

Конфигурация NxLog выглядит так:

########################################
# Global directives                    #
########################################
User nxlog
Group nxlog

LogFile /var/log/nxlog/nxlog.log
LogLevel WARNING

########################################
# Modules                              #
########################################
<Extension gelf>
    Module      xm_gelf
</Extension>

<Extension json>
    Module      xm_json
</Extension>

<Extension _fileop>
    Module      xm_fileop
</Extension>

<Input in>
    Module      im_file
    File        "/log/eaplinelog" 
    Exec        parse_json();
</Input>

<Output out>
    Module      om_udp
    Host        graylog
    Port        12206
    OutputType  GELF_UDP
</Output>

########################################
# Routes                               #
########################################
<Route 1>
    Path        in => out
</Route>

ВАЖНО

Для запуска Graylog NxLog и eltex-eap-tls на одном сервере с помощью docker-compose не нужно менять конфигурацию NxLog 

ВАЖНО

NxLog должен быть запущен на одном сервере с eltex-eap-tls, т.к. ему нужен прямой доступ к логам сервиса

Если eltex-eap-tls и NxLog настраиваются на отдельном сервере, то необходимо указать адрес, по которому будет доступен Graylog в блоке <Output out>:

########################################
# Global directives                    #
########################################

...
########################################
# Modules                              #
########################################

... <Output out> Module om_udp Host <адрес graylog> Port 12206 OutputType GELF_UDP </Output> ######################################## # Routes # ########################################
...

Вместо <адрес graylog> - нужно указывать адрес, по которому доступен Graylog

После указания настроек доступа необходимо запустить nxlog, для этого можно использовать docker-compose так:

docker-compose up -d nxlog


Либо запустить одиночный докер:

docker run --network host -v ./nxlog.conf:/etc/nxlog.conf -v /var/log/eltex-eap-tls/eaplinelog:/log/eaplinelog -d nxlog/nxlog-ce 


Настройка dashboard в Graylog

Сначала нужно настроить входной порт для приема данных с NxLog, это настраивается в меню System/Inputs.

Выбираем GELF UDP и нажимаем LAUNCH NEW INPUT в открывшемся диалоговом окне продолжаем настройку важных полей:

  1. Title - nxlog
  2. Bind address - 0.0.0.0
  3. Port - 12201
  4. Node - выбираем доступный

Теперь Graylog будет принимать сообщения от NxLog.

Далее необходимо настроить сам dashboard, для этого необходимо перейти в меню Dashboards нажать CREATE DASHBOARD указать название и описание и после этого нажать Save

Необходимые виджеты на созданный dashboard можно добавить из потока Streams для этого нужно создать новый Stream и указать при его создании созданный ранее Input

В настройках Stream нужно указать что принимаемый формат данных - json 

В созданный поток будут попадать все сообщения из созданного Input для Nxlog

Далее в созданном потоке можно выбирать необходимые метрики и перемещать их на созданный dashboard

  • Нет меток