程序的日志配置Elasticsearch
Contents
1. 概述
在本快速教程中,我们将逐步讨论如何将应用程序日志发送到 Elastic Stack (ELK)。
在之前的文章中 ,我们专注于设置 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>
注意:
- 我们通过使用带有TimeBasedRollingPolicy的RollingFileAppender将每天的日志保存在一个单独的文件中(有关此 appender的更多信息,请点击此处 )
- 通过将maxHistory设置为 7 ,我们将只保留一周(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}"
}
}
}
注意:
- 输入file被用作 Logstash 这次将从日志文件中读取日志
- path设置为我们的日志目录,所有带有 .log 扩展名的文件都将被处理
- index设置为新索引“logback-%{+YYYY.MM.dd}”而不是默认的“logstash-%{+YYYY.MM.dd}”
要使用新配置运行 Logstash,我们将使用:
bin/logstash -f logback.conf
4. 使用 Kibana 可视化日志
我们现在可以在 ’ logback-* ’ 索引中看到我们的 Logback 数据。
我们将创建一个新的搜索“Logback 日志”,以确保使用以下查询分隔 Logback 数据:
type:logback
最后,我们可以创建一个简单的 Logback 数据可视化:
- 导航到“可视化”选项卡
- 选择“垂直条形图”
- 选择“从保存的搜索”
- 选择我们刚刚创建的“Logback 日志”搜索
对于 Y 轴,请确保选择聚合:count
对于 X 轴,选择:
- 聚合:Terms
- 领域:level
运行可视化后,您应该会看到多个条形表示每个级别的日志计数(DEBUG、INFO、ERROR,…)