如何让Logstash消耗自己的日志

如何让Logstash消耗自己的日志,logstash,logstash-grok,Logstash,Logstash Grok,基本上,我希望LogStash使用自己的日志并填充字段,如@timestamp,level,以便在Kibana中使用 我当前的配置如下所示: input { file { path => "/path/to/logstash/logs/*.log" type => "logstash" } } 这似乎很难做到——如果不重新编写Grok过滤器的话。LogStash真的不能使用自己的日志吗?(很难用谷歌搜索,我什么也找不到。) 或者这是一开始的错误方法 LogS

基本上,我希望LogStash使用自己的日志并填充字段,如
@timestamp
level
,以便在Kibana中使用

我当前的配置如下所示:

input {
  file {
    path => "/path/to/logstash/logs/*.log"
    type => "logstash"
  }
}
这似乎很难做到——如果不重新编写Grok过滤器的话。LogStash真的不能使用自己的日志吗?(很难用谷歌搜索,我什么也找不到。)

或者这是一开始的错误方法

LogStash的日志输出示例:

{
  :timestamp=>"2014-09-02T10:38:08.798000+0200", 
  :message=>"Using milestone 2 input plugin 'file'. This plugin should be stable, but if you see strange behavior, please let us know! For more information on plugin milestones, see http://logstash.net/docs/1.4.2/plugin-milestones",
  :level=>:warn
}

是的,你可以这样做。 请将日志存储控制台日志保存到文件中。 然后,您可以使用
ruby-filter
grok-filter
解析信息

以下是一个例子:

input {
    file {
            path => "/path/to/logstash/logs/*.log"
    }
}

filter {
    ruby {
            code => "
                    mes = event['message'];
                    startPos = mes.index('level=>');
                    endPos = mes.length;
                    event[':level'] = mes[startPos+7..endPos-2];
            "
    }
}

output {
    stdout {
            codec => "rubydebug"
    }
}

您必须使用
grok
,因为logstash无法将
rubydebug
用作输入编解码器

日志的格式是固定的,因此执行此操作的
grok
是直接的。然后,我们使用
日期
替换
@时间戳

filter {
  grok {
      match => ["message", '{:timestamp=>"(?<timestamp>.*)", :message=>"(?<msg>.*)", :level=>:(?<level>.*)}']
  }
  mutate {
      replace => ["message", "%{msg}" ]
      remove_field => msg
  }
  date {
      match => [ "timestamp", "ISO8601" ]
      remove_field => 'timestamp'
  }
}
过滤器{
格罗克{
match=>[“message”,“{:timestamp=>”(?*),:message=>“(?*”,:level=>:(?*)}']
}
变异{
替换=>[“消息”,“%{msg}”]
删除\u字段=>msg
}
日期{
匹配=>[“时间戳”,“ISO8601”]
删除\u字段=>“时间戳”
}
}

需要
mutate
步骤,因为如果您将
放入匹配项中,它会将
消息
变成一个数组,并将提取的消息添加到其中,因此捕获为不同的名称,然后替换消息。

但这真的是唯一的方法吗?对不起,这似乎是对LogStash应该直接支持的东西的攻击。无法读取自己日志的日志框架???:-)