Вход в Graylog с помощью Spring Boot

Вход в Graylog с помощью Spring Boot

1. Вступление

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

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

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

2. Настройка Graylog

Есть несколько способов установить и запустить Graylog. В этом руководстве мы обсудим два самых быстрых способа: Docker и Amazon Web Services.

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 Web Services

Следующим простым способом настройки Graylog для тестирования является Amazon Web Services. Graylog provides an official AMI that includes all the required dependencies, хотя после установки требуется дополнительная настройка.

Мы можем быстро развернуть экземпляр EC2 с помощью Graylog AMI, щелкнувhere и выбрав регион. Graylog recommends using an instance with at least 4GB memory.

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

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

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

image

Панель управления Graylog теперь доступна с использованием URL-адресаhttps://<EC2 PUBLIC IP>/, а имя пользователя и пароль по умолчанию -admin.

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

Помимо Docker и AWS, есть такжеGraylog packages для различных операционных систем. With this approach, we also have to set up an ElasticSearch and MongoDB service.

По этой причине 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:


    
    
    
    
    
    
    
    

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

3.2. Другие каркасы

Graylog marketplace имеет дополнительные библиотеки, которые поддерживают множество других фреймворков, таких как Logback, Log4J2 и другие. Just beware that these libraries are not maintained by Graylog. Некоторые из них заброшены, а у других практически нет документации.

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

3.3. Серый коллектор Коляска

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

Sidecar - отличный вариант для приложений, в которых изменение файлов конфигурации журнала невозможно. И поскольку он читает файлы журналов прямо с диска,it can also be used to integrate log messages from any platform and programming language.

4. Просмотр сообщений в Graylog

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

image

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

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

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

Примеры кода, как всегда, могут бытьfound on GitHub.

Related