1. Обзор
В этом кратком руководстве мы шаг за шагом обсудим, как отправлять журналы приложений в Elastic Stack (ELK).
В более ранней статье мы сосредоточились на настройке Elastic Stack и отправке в него данных JMX.
2. Настройте логбэк
давайте начнем с настройки 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
(подробнее об этом приложении здесь ) - Мы будем хранить старые журналы только неделю (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 для чтения данных из файлов журналов, созданных нашим приложением, и отправки их в 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}"
}
}
}
Обратите внимание, что:
- входной
файл
используется, так как на этот раз Logstash будет читать журналы из файлов журналов. путь
установлен к нашему каталогу журналов, и все файлы с расширением .log будут обработаныindex
установлен на новый индекс «logback-%{+YYYY.MM.dd}» вместо стандартного «logstash-%{+YYYY.MM.dd}»
Чтобы запустить Logstash с новой конфигурацией, мы будем использовать:
bin/logstash -f logback.conf
4. Визуализируйте журналы с помощью Kibana
Теперь мы можем видеть наши данные Logback в индексе ' logback-*
'.
Мы создадим новый поиск «Logback logs», чтобы разделить данные Logback, используя следующий запрос:
type:logback
Наконец, мы можем создать простую визуализацию наших данных Logback:
- Перейдите на вкладку «Визуализация».
- Выберите «Вертикальная гистограмма».
- Выберите «Из сохраненного поиска».
- Выберите поиск «Logback logs», который мы только что создали.
Для оси Y обязательно выберите Aggregation: Count
Для оси X выберите:
- Агрегация:
Условия
- Поле:
уровень
После запуска визуализации вы должны увидеть несколько столбцов, представляющих количество журналов на уровне (DEBUG, INFO, ERROR, …)
5. Вывод
В этой статье мы изучили основы настройки Logstash в нашей системе, чтобы передавать генерируемые им данные журнала в Elasticsearch и визуализировать эти данные с помощью Kibana.