从logstash中的日志文件中过滤特定行

时间:2014-07-31 11:49:54

标签: logstash

我无法从日志文件/ var / log / messages获取特定行。我在客户端 - 服务器中使用logstash-forwarder,在log-server中使用logstash,elasticsearch和kibana。我尝试安装grep过滤器,但它给了我一些错误,所以我尝试用grok实现下面的。我原来的帖子是here。我发现this但是我很不满意。

以下是logstash-forwarder文件名的配置:客户端 - 服务器中的logstash-forwarder

{
  "network": {
    "servers": [ "logstashserver-ip:5000" ],
    "timeout": 15,
    "ssl ca": "xxx.crt"
  },
  "files": [
    {
      "paths": [
        "/var/log/messages"
       ],
      "fields": { "type": "syslog" }
    }
   ]
}

以下是logstashserver中的logstash配置

文件名:input.conf中

input {
  lumberjack {
    port => 5000
    type => "logs"
    ssl_certificate => "xxx.crt"
    ssl_key => "xxx.key"
  }
}

文件名:filter.conf

filter {
    grok {
        match => ["message", "\[%{WORD:messagetype}\]: %{GREEDYDATA}"]
    }
}

文件名:output.conf

output {
  elasticsearch { host => "logstashserver-ip" }
  if [messagetype] == "ERROR" {
        stdout {
            codec => "rubydebug"
        }
}
}

有什么不对吗?

1 个答案:

答案 0 :(得分:0)

不确定您是否仍然遇到此问题,但我会考虑删除您不想要的邮件。在我的服务器上,我获得了syslog严重性级别,其中包括http://en.wikipedia.org/wiki/Syslog#Severity_levels中定义的syslog_severity_code。

如果您在索引中获取它们,请尝试类似

的内容
filter {
    if [type] == 'syslog' and [syslog_severity_code] > 5  {
        drop { }
    }
}