Рубрики
Без рубрики

Вход в серый журнал с помощью Spring Boot

Смотрите, как сохранить журналы в Graylog из приложения Spring Boot.

Автор оригинала: Michael Pratt.

1. введение

Graylog – это служба агрегирования журналов. Проще говоря, он способен собирать миллионы сообщений журнала из нескольких источников и отображать их в одном интерфейсе.

Кроме того, он также предоставляет ряд других функций, таких как оповещения в режиме реального времени, информационные панели с графиками и диаграммами и многое другое.

В этом руководстве мы рассмотрим, как настроить сервер Graylog и отправлять на него сообщения журнала из приложения Spring Boot.

2. Настройка серого журнала

Существует несколько способов установки и запуска Graylog. В этом уроке мы обсудим два самых быстрых способа: Docker и веб-службы Amazon.

2.1. Докер

Следующие команды загрузят все необходимые образы Docker и запустят контейнер для каждой службы:

$ docker run --name mongo -d mongo:3
$ docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
    -e ES_JAVA_OPTS="-Xms2g -Xmx4g" \
    -e "discovery.type=single-node" -e "xpack.security.enabled=false" \
    -e "bootstrap.memory_lock=true" --ulimit memlock=-1:-1 \
    -d docker.elastic.co/elasticsearch/elasticsearch:5.6.11
$ docker run --name graylog --link mongo --link elasticsearch \
    -p 9000:9000 -p 12201:12201 -p 514:514 -p 5555:5555 \
    -e GRAYLOG_WEB_ENDPOINT_URI="http://127.0.0.1:9000/api" \
    -d graylog/graylog:2.4.6-1

Панель мониторинга Graylog теперь доступна по URL-адресу http://localhost:9000/ и имя пользователя и пароль по умолчанию являются admin .

Хотя настройка Docker является самой простой, она требует значительного объема памяти. Он также не работает в Docker для Mac, поэтому может не подходить для всех платформ.

2.2. Веб-сервисы Amazon

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

Мы можем быстро развернуть экземпляр EC2 с помощью AMI Graylog, нажав здесь и выбрав регион. Graylog рекомендует использовать экземпляр с памятью не менее 4 ГБ .

После запуска экземпляра нам нужно подключиться по SSH к хосту и внести несколько изменений. Следующие команды настроят для нас службу Graylog:

$ sudo graylog-ctl enforce-ssl
$ sudo graylog-ctl set-external-ip https://:443/api/
$ sudo graylog-ctl reconfigure

Нам также необходимо обновить группу безопасности, созданную с помощью экземпляра EC2, чтобы разрешить сетевой трафик на определенных портах. На рисунке ниже показаны порты и протоколы, которые необходимо включить:

Панель мониторинга Graylog теперь доступна по URL https://<ОБЩЕДОСТУПНЫЙ IP-адрес EC2>/ , а имя пользователя и пароль по умолчанию – admin .

2.3. Другие установки Graylog

Помимо Docker и AWS, существуют также пакеты Graylog для различных операционных систем. При таком подходе нам также необходимо настроить службу ElasticSearch и MongoDB .

По этой причине Docker и AWS намного проще в настройке, особенно для целей разработки и тестирования.

3. Отправка сообщений журнала

Теперь, когда Graylog запущен и запущен, мы должны настроить наше приложение Spring Boot для отправки сообщений журнала на сервер Graylog.

Любая платформа ведения журнала Java может поддерживать отправку сообщений на сервер Graylog с использованием протокола GELF.

3.1. Log4J

В настоящее время единственной официально поддерживаемой платформой ведения журнала является Log4J. Graylog предоставляет приложение, которое доступно на Maven central .

Мы можем включить его, добавив следующую зависимость Maven в любой pom.xml файл:


    org.graylog2
    gelfj
    1.1.16

Мы также должны исключить модуль запуска ведения журнала в любом месте, где мы используем модуль запуска Spring Boot:


    org.springframework.boot
    spring-boot-starter-web
    
        
            org.springframework.boot
            spring-boot-starter-logging
        
    

Теперь мы можем определить новое приложение в вашем log4j.xml файл:


    
    
    
    
    
    
    
    

Это настроит все сообщения журнала с уровнем информации или выше для перехода в приложение Graylog, которое, в свою очередь, отправляет сообщение журнала на сервер Graylog.

3.2. Другие Системы Ведения Журнала

В Graylog marketplace есть дополнительные библиотеки, которые поддерживают множество других фреймворков ведения журнала, таких как Logback, Log4J2 и другие. Просто имейте в виду, что эти библиотеки не поддерживаются Graylog . Некоторые из них заброшены, а другие практически не имеют документации или вообще отсутствуют.

Следует соблюдать осторожность при использовании этих сторонних библиотек.

3.3. Коляска для сбора серого журнала

Другим вариантом сбора журналов является коляска Сборщика серого журнала . Коляска-это процесс, который выполняется вдоль сборщика файлов, отправляя содержимое файла журнала на сервер серого журнала.

Коляска-отличный вариант для приложений, в которых изменение файлов конфигурации журнала невозможно. И поскольку он считывает файлы журналов непосредственно с диска, его также можно использовать для интеграции сообщений журналов с любой платформы и языка программирования .

4. Просмотр сообщений в сером журнале

Мы можем использовать панель мониторинга Graylog для подтверждения успешной доставки наших сообщений журнала. Использование фильтра источник:localhost покажет сообщения журнала из нашего примера log4j конфигурации выше:

5. Заключение

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

Для интеграции Graylog в приложение Spring Boot требуется всего несколько строк конфигурации и без какого-либо нового кода.

Примеры кода, как всегда, можно найти на GitHub .