首页 文章

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

提问于
浏览
1

我无法从日志文件/ 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

    不确定你是否看到丢弃你不想要的消息 . 在我的服务器上,我获得了syslog严重性级别,其中包括http://en.wikipedia.org/wiki/Syslog#Severity_levels中定义的syslog_severity_code .

    如果你在索引中获得它们,请尝试类似的东西

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

相关问题