ELK之Logstash采集web服务日志

简介
Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到“存储库”中。Logstash由三个组件构造成,分别是input、filter和output。input组件支持文件输入、数据库输入、TCP/UDP输入等多种数据源。

通过TCP方式采集web服务日志

1.在logstash/config/路径下创建logstash.conf文件

2.编辑logstash.conf,输入以下配置

#输入
input {
  tcp {
    mode => "server" #操作模式, server:监听客户端连接, client:连接到服务器
    host => "0.0.0.0" #指定监听地址, 默认0.0.0.0
    port => 4560 #端口号
    codec => json_lines #数据格式,如json,json_lines等
  }
}
#输出到ES
output {
  elasticsearch {
    hosts => "127.0.0.1:9200" #es的地址
    action=>"index" #es要执行的动作 index, delete, create, update
    index => "index-logstash-%{+YYYY.MM.dd}" #索引名称
  }
}

3.修改logstash.yml文件

#指定配置文件路径
path.config: ELK_6.4.3/logstash-6.4.3/config/logstash.conf

4.web项目中添加logstash依赖

<!--集成logstash-->
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>5.3</version>
</dependency>

5.创建logback.xml文件,新增appender

 <!--输出到logstash的appender-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    <!--logstash日志收集端口-->
    <destination>127.0.0.1:4560</destination>
    <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
<root level="INFO">
    <appender-ref ref="LOGSTASH"/>
</root>

6.启动logstash

./bin/logstash

采集多个服务的日志

input {
  tcp {
   add_field => {"service" => "admin"}
    mode => "server"
    host => "0.0.0.0"
    port => 4560
    codec => json_lines
  }
  tcp {
   add_field => {"service" => "auth"}
    mode => "server"
    host => "0.0.0.0"
    port => 4561
    codec => json_lines
  }
}
output {
   if [service] == "admin"{
    elasticsearch {
      hosts => "127.0.0.1:9200"
      index => "admin-logstash-%{+YYYY.MM.dd}"
    }
   }
  if [service] == "auth"{
    elasticsearch {
      hosts => "127.0.0.1:9200"
      index => "auth-logstash-%{+YYYY.MM.dd}"
    }
   }
}

你可能感兴趣的:(ELK)