【问题标题】:Filtering Bluemix cloud foundry ERR logs on logstash在 logstash 上过滤 Bluemix Cloud Foundry ERR 日志
【发布时间】:2016-09-22 02:37:40
【问题描述】:

我目前正致力于在 Bluemix 容器上设置 ELK 堆栈。通过关注这个blog,我能够创建一个logstash Drain 并将所有Cloud Foundry 日志从Bluemix Web 应用程序获取到logstash 中。

有没有办法根据日志级别过滤掉日志?我正在尝试过滤掉logstash输出中的ERR并将它们发送到Slack。

以下代码为logstash.conf文件的过滤器配置:

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOG5424PRI}%{NONNEGINT:syslog5424_ver} +(?:%{TIMESTAMP_ISO8601:syslog5424_ts}|-) +(?:%{HOSTNAME:syslog5424_host}|-) +(?:%{NOTSPACE:syslog5424_app}|-) +(?:%{NOTSPACE:syslog5424_proc}|-) +(?:%{WORD:syslog5424_msgid}|-) +(?:%{SYSLOG5424SD:syslog5424_sd}|-|) +%{GREEDYDATA:syslog5424_msg}" }
    }

我正在尝试将 Slack webhook 添加到 logstash.conf 输出,以便在检测到带有 ERR 的日志级别时,将错误消息发布到 Slack 通道中。

我的 Slack HTTP 帖子的输出 conf 文件类似于以下代码:

output {

 if [loglevel] == "ERR" {
        http {
            http_method => "post"
            url => "https://hooks.slack.com/services/<id>"
            format => "json"
            mapping => {
                "channel" => "#logstash-staging"
                "username" => "pca_elk"
                "text" => "%{message}"
                "icon_emoji" => ":warning:"
            }
        }
    }

    elasticsearch { }
}

来自 cloud Foundry 的示例日志:

2016-05-25T13:14:51.269-0400[App/0]ERR npm ERR! There is likely additional logging output above.
2016-05-25T13:14:51.269-0400[App/0]ERR npm ERR! npm owner ls pca-uiapi
2016-05-25T13:14:51.274-0400[App/0]ERR npm ERR! /home/vcap/app/npm-debug.log
2016-05-25T13:14:51.274-0400[App/0]ERR npm ERR! Please include the following file with any support request:
2016-05-25T13:14:51.431-0400[API/1]OUT App instance exited with guid cc73db5d-   6e8c-4ff4-b20f-a69d7c2ba9f4 payload: {"cc_partition"=>"default", "droplet"=>"cc73db5d-6e8c-4ff4-b20f-a69d7c2ba9f4", "version"=>"f9fb3e09-f234-43d4-94b1-a337f8ad72ad", "instance"=>"9d7ad0585b824fa196a2a64e78df9eef", "index"=>0, "reason"=>"CRASHED", "exit_status"=>1, "exit_description"=>"app instance exited", "crash_timestamp"=>1464196491}
2016-05-25T13:16:10.948-0400[DEA/50]OUT Starting app instance (index 0) with guid cc73db5d-6e8c-4ff4-b20f-a69d7c2ba9f4
2016-05-25T13:16:36.032-0400[App/0]OUT > pca-uiapi@1.0.0-build.306 start /home/vcap/app
2016-05-25T13:16:36.032-0400[App/0]OUT > node server.js
2016-05-25T13:16:36.032-0400[App/0]OUT
2016-05-25T13:16:37.188-0400[App/0]OUT PCA REST Service is listenning on port: 62067
2016-05-25T13:19:02.241-0400[App/0]ERR at Layer.handle_error (/home/vcap/app/node_modules/express/lib/router/layer.js:71:5)
2016-05-25T13:19:02.241-0400[App/0]ERR at /home/vcap/app/node_modules/body-parser/lib/read.js:125:7
2016-05-25T13:19:02.241-0400[App/0]ERR at Object.module.exports.log (/home/vcap/app/utils/Logger.js:35:25)

有没有办法让它工作?有没有办法检查每条消息的日志级别?我有点卡住了,想知道你能不能帮帮我。

在 Bluemix UI 中,可以根据通道 ERR 或 OUT 过滤日志。我不知道如何在logstash上做同样的事情。

感谢您调查此问题。

【问题讨论】:

  • 您应该提供一些相关的示例日志行。
  • @Val : 我在上面添加了一些日志,请看一下。

标签: containers logstash ibm-cloud elastic-stack docker-container


【解决方案1】:

该文章中提供的grok 旨在解析端口 5000 上的系统日志消息。在所有系统日志过滤器运行后,您的应用程序日志(即您在问题中显示的示例日志行)位于@message 字段。

因此,您需要另一个 grok 才能解析该消息。所以在最后一个mutate 之后你可以添加这个:

grok {
    match => {"@message" => "%{TIMESTAMP_ISO8601:timestamp}\[%{WORD:app}/%{NUMBER:num}\]%{WORD:loglevel} %{GREEDYDATA:log}"}
}

运行此过滤器后,您将拥有一个名为 loglevel 的字段,其中将包含 ERROUT,在前一种情况下将激活您的 slack 输出。

【讨论】:

  • 您需要更多信息吗?
  • 我遇到的问题是,当日志从 Cloud Foundry loggregator 发送到 logstash 时。我没有看到正在传递的日志级别。我只看到应该存在日志级别的空白区域。例如。注意空格 btw - -.133 &lt;14&gt;1 2016-05-27T20:49:00.83113+00:00 loggregator aa497970-3f76-45ee-8e43-d4ca79768480 [App/0] - - New relic Successfully Configured。因此,我无法过滤掉 ERR 消息。你知道为什么会这样吗?
  • 您在评论中显示的日志行与您在问题中显示的日志行完全不同。那么哪个是真的呢?
  • bluemix 应用程序的日志如下所示:2016-05-27T20:49:00.83113+00:00 [App/0] OUT New relic Successfully Configured
  • 来自logstash的相同日志看起来像:133 &lt;14&gt;1 2016-05-27T20:49:00.83113+00:00 loggregator aa497970-3f76-45ee-8e43-d4ca79768480 [App/0] - - New relic Successfully Configured
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多