Logstash的整个pipleline分为三个部分:
-
input插件:提取数据。 这里可以来自file类型日志文件、TCP/UDP侦听器、syslog/IRC等若干协议特定插件,甚至是排队系统(如Redis/AQMP/Kafka)。 此阶段使用围绕事件来源的元数据标记传入事件。
-
filter 插件:插件转换过滤并丰富数据。
-
output插件: 将已处理的事件加载到其他内容中,例如ElasticSearch或其他文档数据库,或排队系统,如Redis,AQMP或Kafka。 它还可以配置为与API通信。 也可以将像PagerDuty这样的东西连接到Logstash输出。
这里的input可以支持多个input,同时多个worker可以处理filter及output:
首先我们来看看单入单出的配置文件是怎么样的?
//nginx 日志文件为例
input {
file {
path => "/var/log/nginx_access.log"
type => "nginx"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
grok {
match => ["message", "%{TIME}\s+(?<Level>(\S+)).*?\((?<http>(\S+))\)\s*%{TIMESTAMP_ISO8601:time}\s+\[(?<