2016-05-24 60 views
1

我目前正在Bluemix容器上設置ELK堆棧。通過遵循此blog,我能夠創建logstash Drain,並將Bluemix Web應用程序中的所有Cloud Foundry日誌都轉換爲logstash。過濾Bluemix雲代工廠ERR日誌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}" } 
    } 

我想這樣,當檢測到與ERR日誌級別的鬆弛網絡掛接添加到logstash.conf輸出,錯誤消息是張貼到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 > [email protected] 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用戶界面中,可以根據通道ERR或OUT過濾日誌。我無法想象如何在logstash上做同樣的事情。

感謝您查看此問題。

+0

您應該提供一些相關的示例日誌行。 – Val

+0

@Val:我已經添加了上面的一些日誌,請看一看。 –

回答

0

在那篇文章中提供的grok是爲了解析端口5000來的系統日誌消息所有syslog過濾器已運行後,您的應用程序日誌(即你在你的問題已經顯示的示例日誌行)都在@message領域。

因此,您需要另一個grok來解析該消息。所以最後mutate後就可以補充一點:這個過濾器運行

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

後,您將有一個名爲loglevel場將包含兩種ERROUT在前者的情況下會激活你的slack輸出。

+0

你需要更多信息嗎? – Val

+0

我遇到的問題是,何時將日誌從雲代工loggregator發送到logstash。我沒有看到日誌級別被傳遞。我只看到日誌級別應該存在的空白空間。例如。請注意空格btw - - .133 <14> 1 2016-05-27T20:49:00.83113 + 00:00 loggregator aa497970-3f76-45ee-8e43-d4ca79768480 [App/0] - - 新遺蹟成功配置。因此,我無法過濾掉ERR消息。你知道這是爲什麼發生嗎? –

+0

您在評論中顯示的日誌行與您在問題中顯示的日誌行並不完全相同。那麼哪一個是真正的? – Val