【问题标题】:Filtering specific lines from log file in logstash从logstash中的日志文件中过滤特定行
【发布时间】:2014-07-31 11:49:53
【问题描述】:

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

以下是logstash-forwarder file-name:logstash-forwarder in client-server的配置

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

有什么问题吗?

【问题讨论】:

  • 您能否更详细地描述您想删除哪些消息?你似乎理解条件,所以我不确定问题是什么。如果您不希望某些消息发送到 ES,则不应将它们发送到那里...
  • 我只喜欢从 /var/log/messages 查看 kibana 中的 WARNING 和 ERROR 日志,对于 /var/log/secure 也是如此。在这种情况下,我只关心 /var/log/messages 首先。
  • 问题:您是否希望“错误”消息类型仅到达 elasticsearch,而不是其他类型?
  • yes 错误和警告日志在 kibana 中查看

标签: logstash


【解决方案1】:

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

如果您将它们放入索引中,请尝试类似

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多