文章目录
- logstash概述
- logstash安装运行
- logstash配置详解
- 输入
- 过滤
- 输出
- 案例
- 举例1:使用Logstash展示标准输入、输出
- 举例2:使用Logstash收集日志文件并输出到控制台
- 举例3:使用Logstash收集日志文件并输出到es
- 举例4:使用logstash输入 filebeat收集上的日志 并输出到控制台
- 举例5:使用logstash输入 filebeat收集的日志 并解析字段 输出到es
logstash概述
LogStash是开源的服务器端数据处理管道,能够同时从多个来源采集数据、转换数据,然后将数据发送到喜欢的"存储库"
Logstash管道有两个必需的元素,输入和输出,以及一个可选元素filter。输入插件使用来自源的数据,过滤器插件根据您的指定修改数据,输出插件将数据写入目标。
logstash安装运行
安装须知:要求jdk1.8+
logstash下载页面
解压安装包,运行./bin/logstash
即可
logstash配置详解
logstash的配置有三部分,如下
input { #输入
stdin { ... } #标准输入
}
filter { #过滤,对数据进行分割、截取等处理
...
}
output { #输出
stdout { ... } #标准输出
}
输入
采集各种样式、大小和来源的数据,数据往往以各种各样的形式,或分散或几种地存在于很多系统中。
logstash支持各种输入选择,可以在同一时间从众多常用来源捕捉事件,能够以连续的流式传输方式,轻松地从日志、指标、web应用、数据存储等采集数据
过滤
实时解析和转换数据
数据从源传输到es的过程中,logstash过滤器能够解析各个事件,识别已命名的字段已构建结构,并将它们转换成通用格式,以便更轻松、快速地分析和实现商业价值
输出
logstash提供众多输出选择,可以将数据发送到要指定的地方。
案例
举例1:使用Logstash展示标准输入、输出
./bin/logstash -e 'input { stdin { } } output { stdout {} }'
## 输入
你好
## 输出
{
"@timestamp" => 2020-09-27T08:41:12.947Z,
"host" => "wojiushiwo-2.local",
"message" => "你好",
"@version" => "1"
}
举例2:使用Logstash收集日志文件并输出到控制台
input {
file {
path => "/Users/wojiushiwo/Software/logstash-6.5.4/logs/a.log"
start_position => "beginning"
}
}
filter {
mutate {
split => {"message"=>"|"}
}
}
output {
stdout { codec => rubydebug }
}
配置文件的意思是 读取a.log文件,并按照分隔符|进行分隔,最后输出到控制台
备注:a.log中内容为2020-09-25 15:40:21|INFO|读取数据|参数:id=1003
{
"@version" => "1",
"message" => [
[0] "2020-09-25 15:40:21",
[1] "INFO",
[2] "读取数据",
[3] "参数:id=1003"
],
"@timestamp" => 2020-09-27T08:44:58.808Z,
"path" => "/Users/wojiushiwo/Software/logstash-6.5.4/logs/a.log",
"host" => "wojiushiwo-2.local"
}
举例3:使用Logstash收集日志文件并输出到es
input {
file {
path => "/Users/wojiushiwo/Software/logstash-6.5.4/logs/a.log"
start_position => "beginning"
}
}
filter {
mutate {
split => {"message"=>"|"}
}
}
output {
elasticsearch { hosts => ["127.0.0.1:9200"] }
}
默认es 索引命名规则:logstash-日期
举例4:使用logstash输入 filebeat收集上的日志 并输出到控制台
filebeat_logstash.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /Users/wojiushiwo/Software/wojiushiwo/log/*.log
output.logstash:
hosts: ["localhost:5044"]
logstash.conf
input {
beats {
port => "5044"
}
}
output {
stdout { codec => rubydebug }
}
启动filebeat、logstash即可。
举例5:使用logstash输入 filebeat收集的日志 并解析字段 输出到es
filebeat_logstash.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /Users/wojiushiwo/Software/wojiushiwo/log/*.log
output.logstash:
hosts: ["localhost:5044"]
日志格式如 c.w.mapstruct.MapStructApplication : DAU|1737|浏览页面|2020-09-25 02:16:05
logstash.conf
input {
beats {
port => "5044"
}
}
filter {
mutate {
split => {"message"=>"|"}
}
mutate {
add_field => {
"userId"=> "%{message[1]}"
"visit"=> "%{message[2]}"
"date"=> "%{message[3]}"
}
}
mutate {
convert => {
"userId"=> "integer"
"visit"=> "string"
"date"=> "string"
}
}
}
output {
elasticsearch {
hosts => [ "127.0.0.1:9200" ]
}
}
从filebeat读入数据,根据分隔符|进行分隔,并解析每个字段即类型,输出至es