Contents

程序的日志配置Elasticsearch

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>

注意:

  • 我们通过使用带有TimeBasedRollingPolicyRollingFileAppender将每天的日志保存在一个单独的文件中(有关此 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,…)