简介
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}"
}
}
}