Logstash数据处理服务的输入插件Input常见类型以及基本使用

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解析器中展示

image-20211209172508186

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

image-20211209161310062

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

image-20211209165801998

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

猜你喜欢

转载自blog.csdn.net/weixin_44953658/article/details/124344580