Отправить журналы Java-приложения в Elastic Stack (ELK)

1. Обзор

В этом кратком руководстве мы шаг за шагом обсудим, как отправить журналы приложений в Elastic Stack (ELK).

В ссылке:/tomcat-jmx -astic-stack[предыдущая статья]мы сосредоточились на настройке Elastic Stack и отправке в него JMX-данных.

2. Настроить Logback

Начнем с настройки Logback для записи журналов приложений в файл с помощью FileAppender

<appender name="STASH" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logback/redditApp.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>logback/redditApp.%d{yyyy-MM-dd}.log</fileNamePattern>
        <maxHistory>7</maxHistory>
    </rollingPolicy>
    <encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
<root level="DEBUG">
    <appender-ref ref="STASH"/>
</root>

Обратите внимание, что:

  • Мы храним журналы каждого дня в отдельном файле, используя

RollingFileAppender с TimeBasedRollingPolicy (подробнее об этом ссылка на appender:/java-logging-roll-file-appenders[здесь]) ** Мы будем хранить старые журналы только неделю (7 дней), установив maxHistory

до 7

Также обратите внимание на то, как мы используем LogstashEncoder для кодирования в формате JSON, который проще использовать с Logstash.

Чтобы использовать этот кодер, нам нужно добавить следующую зависимость в наш pom.xml :

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>4.11</version>
</dependency>

Наконец, давайте удостоверимся, что у приложения есть разрешения на доступ к каталогу регистрации:

sudo chmod a+rwx/var/lib/tomcat8/logback

3. Настроить Logstash

Теперь нам нужно настроить Logstash для чтения данных из файлов журнала, созданных нашим приложением, и отправки их в ElasticSearch.

Вот наш файл конфигурации logback.conf :

input {
    file {
        path => "/var/lib/tomcat8/logback/** .log"
        codec => "json"
        type => "logback"
    }
}

output {
    if[type]=="logback" {
         elasticsearch {
             hosts =>["localhost:9200"]             index => "logback-%{+YYYY.MM.dd}"
        }
    }
}

Обратите внимание, что:

  • input file используется, так как Logstash будет читать журналы на этот раз из журнала

файлы ** path установлен в наш каталог журналирования и все файлы с .log

расширение будет обработано ** index установлен на новый индекс «logback -% \ {YYYY.MM.dd}» вместо

по умолчанию «logstash -% \ {YYYY.MM.dd}»

Чтобы запустить Logstash с новой конфигурацией, мы будем использовать:

bin/logstash -f logback.conf

4. Визуализация журналов с использованием Kibana

Теперь мы можем увидеть наши данные Logback в индексе log logback - ** ‘.

Мы создадим новый поиск "Logback logs", чтобы убедиться, что данные Logback разделены, используя следующий запрос:

type:logback

Наконец, мы можем создать простую визуализацию наших данных Logback:

  • Перейдите на вкладку «Визуализация»

  • Выберите «Вертикальная гистограмма»

  • Выберите "Из сохраненного поиска"

  • Выберите «Logback logs» поиск, который мы только что создали

Для оси Y обязательно выберите Aggregation: Count

Для оси X выберите:

  • Агрегация: Terms

  • Поле: level

После запуска визуализации вы должны увидеть несколько столбцов, представляющих количество журналов на уровень (DEBUG, INFO, ERROR, …​)

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

В этой статье мы изучили основы настройки Logstash в нашей системе, чтобы поместить данные журнала, которые он генерирует, в Elasticsearch - и визуализировать эти данные с помощью Kibana.

Related