logstash
https://www.elastic.co/guide/en/logstash/current/first-event.html
输入→过滤器→输出
logstash有两个必要的元素,input与output;filter为可选元素。 input使用 data source ,filter过滤修改数据,output将数据写入目标。
例:bin/logstash -e 'input { stdin { } } output { stdout {} }'
从标准输入获取输入stdin,stdout以结构化格式将该输入输出到标准输出 。
看到Pipeline main started后,在输入hello world;
hello world 2013-11-21T01:22:14.405+0000 0.0.0.0 hello world。
############################################################
OUTPUT输出到Elasticsearch
output { elasticsearch { hosts => [ "localhost:9200" ] } }
############################################################
config例子:
# This is a comment. You should use comments to describe
# parts of your configuration.
input {
...
}
filter {
...
}
output {
...
}
1.标准输入
常用的输入
file:从文件系统上的读取文件。
syslog:在已知端口514上侦听syslog消息并根据RFC3164格式进行解析。
redis:使用redis通道和redis列表从redis服务器读取。
beats:处理 Beats发送的事件。
input{
stdin{
add_field=>{"key"=>"value"}
codec=>"plain"tags=>["add"]
type=>"stdin"
}
}
## type=>"std" 是logstash中两个特殊的字段 type标记事件类型。
##tags=>["add"] tags数据处理过程中,由具体插件添加或者删除。
input {
file {
path => "/var/log/messages"
type => "syslog"
}
file {
path => "/var/log/apache/access.log"
type => "apache"
}
}
2.文件输入
input{
file{
path=>["/var/log/*.log","/var/log/messages"]
type=>"std"=>"system_log"
start_position=>beginning
}
}
##start_position logstash从什么时候开始读取文件,默认为结束;beginning进程从头开始读取文件。
Value can be any of: beginning, end
Default value is "end"
logstash::input::file不支持path=>"/path/to/%{+yyyy/mm/dd/hh}.log"写法
path=>"/path/to/*/*/*.log" 或者path=>"/path/to/**/*.log" //**递归所有子目录
3.TCP输入
input{
tcp{
port=>80
mode="server"
ssl_enable="false"
}
}