Logstash数据处理服务的输入插件Input常见类型以及基本使用
1.Input插件常用的类型
logstash的插入插件通常有stdin(用于调试)、file、redis、kafka、beats(filebeat)类型。
2.Logstash Input常用配置参数
Input中通用的一些配置自动,这些字段可以在Redis、kakfa、filebeat、file等等各种类型的输入插件中使用。
add_field :添加一个字段到一个事件,放到事件顶部,一般用于标记日志来源。例如属于哪个项目,哪个应用
tags :添加任意数量的标签,用于标记日志的其他属性,例如表明访问日志还是错误日志
type : 为所有输入添加一个字段,例如表明日志类型
这三个配置字段都是在收集的一条日志数据中增加上这些字段信息,这三个字段只需要选择一个进行配置就可以了,在outpost输出插件中可以根据字段和值进行匹配,分别将不同字段的日志数据存储到不同的ES索引库中。
1.配置logstash
[root@elkstack-1 ~]# vim /data/elk/logstash/conf.d/test.conf
input {
file {
path => "/var/log/test/*.log"
exclude => "error.log"
start_position => "beginning"
tags => "web" #增加一个标签
type => "nginx" #增加一个字段type,值为nginx
add_field => { #在日志数据的最前面增加字段信息,project为web,app为nginx
"project" => "web"
"app" => "nginx"
}
}
}
filter {
}
output {
file {
path => "/tmp/log.txt"
}
}
2.重载配置
[root@elkstack-1 ~]# ps aux | grep logstash | grep -v grep | awk '{print $2}' |xargs kill -HUPUP
观察收集的日志数据信息,增加了我们配置的一些字段属性
{"message":"web field","app":"nginx","path":"/var/log/test/access.log","tags":["web"],"host":"elkstack-1","project":"web","@version":"1","@timestamp":"2021-12-09T09:18:58.735Z","type":"nginx"}
收集来的日志数据都是json格式,可以放到json解析器中展示
3.Input配置File类型的输入插件
以/var/log/messages为例,通过logstash将message中的日志输出到/tmp/log.txt文件中。
3.1.经典案例
1.编写配置文件
[root@elkstack-1 logstash]# cat conf.d/test.conf
input { #定义日志的来源
file { #类型为file,从文件中读取日志数据
path => "/var/log/message" #日志路径
}
}
filter { #过滤器
}
output { #定义日志输出的存储路径
file {
path => "/tmp/log.txt" #日志路径
}
}
2.重载logstash
[root@elkstack-1 logstash]# ps aux | grep logstash | grep -v grep | awk '{print $2}' |xargs kill -HUP
或者
[root@elkstack-1 logstash]# systemctl restart logstash
观察/tmp/log.txt文件中有没有logstash写入的数据内容。
1.向/var/log/messages中插入日志数据
[root@elkstack-1 ~]# echo "123456" >> /var/log/messages
3.追踪/tmp/log.txt观察日志是输出
[root@elkstack-1 ~]# tail -f /tmp/log.txt
{"path":"/var/log/messages","host":"elkstack-1","@version":"1","@timestamp":"2021-12-09T08:12:43.656Z","message":"123456"}
3.2.File类型的常用字段
path :日志的存放路径,支持通配符匹配。
exclude :排除不需要采集的日志文件。
start_position :指定日志文件从什么位置开始读取,默认是从结尾开始读取,指定参数值为beginning表示从文件开头开始读取。
示例:读取/var/log/test目录中所有的日志文件,但是排除error.log这个文件。
1.logstash配置文件内容
[root@elkstack-1 ~]# vim /data/elk/logstash/conf.d/test.conf
input {
file {
path => "/var/log/test/*.log" #读取test目录下的所有日志文件
exclude => "error.log" #不采集error日志文件
start_position => "beginning" #从文件的开头开始读取
}
}
filter {
}
output {
file {
path => "/tmp/log.txt"
}
}
2.重载logstash
[root@elkstack-1 ~]# ps aux | grep logstash | grep -v grep | awk '{print $2}' |xargs kill -HUP
观察日志采集的效果
1.向access日志中写入数据
[root@elkstack-1 ~]# echo access12332 > /var/log/test/access.log
[root@elkstack-1 ~]# echo access1 >> /var/log/test/access.log
2.日志被logstash正常的采集到了
[root@elkstack-1 ~]# tail -f /tmp/log.txt
{"path":"/var/log/test/access.log","message":"2","@version":"1","host":"elkstack-1","@timestamp":"2021-12-09T08:53:54.953Z"}
{"path":"/var/log/test/access.log","message":"access1","@version":"1","host":"elkstack-1","@timestamp":"2021-12-09T08:53:59.969Z"}
3.写入error日志则不会被采集
[root@elkstack-1 ~]# echo abc >> /var/log/test/access.log
4.logstash beats类型的插入插件
Beats插件是用来接收来自Beats数据采集器发送来的数据,常见的数据采集器有Filebeat、Metricbeat、Packetbeat、Winlogbeat、Auditbeat、Heartbeat、Functionbeat等等。
示例如下:
1.配置logstash
[root@elkstack-1 ~]# vim /data/elk/logstash/conf.d/test.conf
input {
beats {
host => "0.0.0.0"
port => 5044
}
}
filter {
}
output {
file {
path => "/tmp/log.txt"
}
}
|