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.