1. 下载logstash
从官方网址下载安装包。
2. 配置logstash.conf
input { stdin { } }
input {
tcp {
#不配置默认是安装服务器ip
#host => "localhost"
#开启的端口
port => 8084
mode => "server"
tags => ["tags"]
#输出json格式,需要装插件
codec => json_lines
}
}
这里配置了两个输入,一个是标准输入stdin;
另一个是tcp输入源,由tcp输入插件提供对应功能,其中
- host: 绑定的IP地址,默认值为0.0.0.0;
- port: 8084,端口为8084;
- mode:
server或
client,默认值为server;
- tags: 数组类型,可以添加多个标签,后续的处理可以参考该参数配置;
- type: 字符串类型,没有默认值,用于激活过滤器;
- id: 输入源id,当有多个相同类型的输入源时,可以根据该参数进行区分;
- codec: 编码,类型为codec,默认值为"line"
以上时通用属性配置。
参考地址:
Tcp input plugin | Logstash Reference [7.16] | Elastic
这里配置了两个输出,一个是标准输出,另外一个是elasticsearch,由对应的插件完成数据输出功能:
output {
stdout{codec =>rubydebug}
elasticsearch {
#es地址,可多个
hosts => ["localhost:9200"]
flush_size => 1000
action => "index"
# 获取输出参数"indexname"值当做索引,如果没有则会自动创建对应索引(需要es开启自动创建索引)
index => "%{indexname}"
}
}
hosts: elasticsearch的主机名;
index: 索引名称;
action: 类型为字符串,数据流的默认值是create,非时间序列数据的默认值是index;可以是下列的值:
- index,建立一个文档索引;
- delete,根据id删除一个文档;
- create,建立一个文档索引,如果索引id已经存在,则返回失败;
- update,根据id更新一个文档;
flush_size:
password:密码
user: 用户名
参考配置:
https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html
3. 启动logstash服务
logstash -f logstash.conf
4. 项目中添加依赖
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.6</version>
</dependency>
5. logback.xml或者logback-spring.xml中添加配置
<?xml version="1.0" encoding="UTF-8"?>
<included>
<!-- logback 和 logstash 通讯配置 -->
<appender name="SOCKET" class="net.logstash.logback.appender.LogstashSocketAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<host>${logstash.host}</host>
<port>${logstash.port}</port>
</appender>
<!-- logstash远程日志配置-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>${logstash.host}:${logstash.port}</destination>
<!--输出打印json格式-->
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<pattern>
<pattern>
<!--输出日志可自定义,可根据自己需要配置-->
{
<!--es索引名称 -->
"indexname":"test_logstash",
<!--应用名称 -->
"appname":"${spring.application.name}",
<!--服务器ip -->
"host": "%ip",
<!--应用端口 -->
"port": "${spring.application.index}",
<!--打印时间 -->
"timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}",
<!--线程名称 -->
"thread": "%thread",
<!--日志级别 -->
"level": "%level",
<!--日志名称 -->
"logger_name": "%logger",
<!--日志信息 -->
"message": "%msg",
<!--日志堆栈 -->
"stack_trace": "%exception"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="SOCKET"/>
<appender-ref ref="LOGSTASH"/>
</root>
</included>
6. application.yml配置文件配置logstash对应的elasticsearch地址和端口
#logstash服务器地址
logstash:
host: 127.0.0.1
#logstash端口
port: 9600