# ELK 集成

# 一 集成方式

# SpringBoot篇(主动使用TCP方式)

  1. 自行引入logstash-logback包
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>4.11</version>
</dependency>
1
2
3
4
5
  1. 在资源文件夹跟目录【src/main/resources】新增文件【logback-spring.xml

内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="10 seconds">
    <springProperty scope="context" name="LOGGING_LOGSTASH_DESTINATION" source="logging.logstash.destination"/>

    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <appender name="LOGSTASH"
              class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>${LOGGING_LOGSTASH_DESTINATION}</destination>
        <encoder charset="UTF-8"
                 class="net.logstash.logback.encoder.LogstashEncoder">
            <!-- 必须修改appname为你的应用名称,不得和其他应用名称重复 -->
            <customFields>{"appname":"purchaser"}</customFields>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
        <appender-ref ref="LOGSTASH"/>
    </root>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  1. application-logging.yml中配置
logging:
  logstash:
    # 暂时有两个logstash采集器可供选择
    # 另一个是 192.168.1.214:3456
    destination: 192.168.1.251:3456
1
2
3
4
5

# 传统Tomcat篇(定时扫描日志文件方式)

小贴士

Tomcat也可使用TCP方式集成,但是需要在源码中集成logstash-logback包,需要自行调试,这里不做过多讲解。

选择一个可以访问到日志文件的logstash服务,最好是同一台服务器。如果不是,也可以采用文件夹挂载的方式

这里以192.168.1.251服务器上的/usr/tool/elk作为例子

  1. 修改startLogstash.sh文件

在docker的启动配置中,添加一个日志文件的映射,左边为你的日志文件,右边为容器内的日志文件

-v /usr/tool/tomcat/Tomcat60_BI/logs/catalina.out:/logs/yourAppNameCatalina.out \
1
  1. 修改logstash.conf文件

添加一个input配置项

input {
  # 假设原本存在一个tcp的输入定义,你可以这样并列添加一个file的定义
  # 建议一个tomcat对应一个file配置项
  tcp {
    mode => "server"
    port => 3456
    codec => json_lines
  }
  file {
    # 注意:这里的路径指的是docker容器内的路径,详见第一步的配置
    path => ["/logs/yourAppNameCatalina.out"]
    type => 'filelog'
    # 所有tomcat的配置均使用这个tags,后面的filter用这个来区分日志的格式化
    tags => 'tomcat'
    add_field => {
      # 请求改为您的应用名称
      "appname" => 'test'
    }
  }
}

3. 重启logstash

执行" ./startLogstash.sh"即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 二 集成结果查看

  1. 创建索引
  • 访问http://kibana.jfbrother.com/

  • 在左侧菜单中点击Management,在打开的页面中继续点击Index Patterns

  • 点击按钮【Create Index Pattern】,使用标准格式创建你的索引logstash-[your app name]-*

如:logstash-test-*

小贴士

应用名为你上述配置的应用名,必须一一对应。

如果无法创建,请确保日志生成后再来创建。因为如果在ES中未搜集到日志数据,Kibana是不允许创建索引的。

  1. 进入左侧Discover菜单,选择对应的日志索引名称进行查看。