2014-12-05 56 views
0

任何人都可以請解釋如何通過電子郵件在logstash中發送java日誌異常作爲附件嗎?將提交的附件中的文件位置是什麼?請找到配置文件,在那裏有一個過濾器來獲取例外。 輸入{ 文件{ 類型=> 「日誌」 路徑=> 「」 add_field => [ 「文件」, 「a.log」] }logstash:電子郵件附件中提交的文件位置應該是什麼?

} 


filter { 
     if ("INFO" in [message]){ 
        mutate { 
         add_field => [ "level", "INFO" ] 
         } 
        } 

     else if ("error" in [message]){ 
        mutate { 
          add_field => [ "level", "ERROR" ] 
          } 
       } 

     else if ("Debug" in [message]){ 
        mutate { 
          add_field => [ "level", "DEBUG" ] 
         } 
       } 

     multiline{ 
        pattern => "^\s" 
        what => "previous" 
        add_tag => ["exception"] 
       } 

     if ("multiline" in [tags]) { 
       mutate { 
          add_field => [ "level", "exception" ] 
        } 
       } 
      } 
output { 
    if [message] =~ /exception/ { 
      email { 
        type => "syslog" 
        body => "Triggered in: %{@message}" 
        attachments => 
        from => "[email protected]" 
        subject => "This is a LogStash alert" 
        to => "[email protected]" 
        } 
     } 


} 
+0

恐怕這是不可能的,至少不是沒有使用ruby過濾器將異常數據刷新到臨時文件並將其傳遞到電子郵件輸出。這似乎不值得付出努力。 – 2014-12-05 07:25:47

+0

我們是否可以像上面那樣爲彈性搜索輸出提供過濾器,並將該數據保存在文件中,併爲該電子郵件輸出提供此文件位置? – 2014-12-05 08:10:50

+0

理論上我可以肯定,但比修改電子郵件輸出以做你想要的更困難。 – 2014-12-05 09:34:03

回答

0

我還沒有嘗試過,但似乎可以使用'文件'輸出來創建文件,然後將其提供給'email'輸出的'attachment'參數。

我沒有看到清理已創建文件的方法,但是一個簡單的cron作業可以做到這一點(或者您可以修改電子郵件輸出以刪除附件)。

編輯:

當您使用文件{}輸出,您指定的文件名可以使用:

output { 
    file { 
    path => "foo.txt" 
    } 
} 

你會然後指定該文件名作爲電子郵件輸出附件:

output { 
    email { 
    attachments => [ "foo.txt" ] 
    } 
} 

您可以在文件名中使用變量,太: 「富 - %{+ YYYY-MM-DD} .TXT」 等

請注意,電子郵件節是僞代碼,因爲文檔中沒有附件語法的示例。

+0

我能夠得到輸出到一個文件,並將此文件附加到電子郵件。但是,你是否知道如何找到磁盤上的最新文件並附上它? – 2014-12-12 08:52:26

+0

嗨阿蘭我可以創建日期明智的文件,但事情是附件字段不需要正則表達式,因此我不能指定一個正則表達式來選擇最新的文件的附件,它應該是文件的完整名稱。關於如何將最後的日期文件作爲附件獲得任何意見嗎? – 2014-12-16 06:47:32

+0

是的,它可以被啓用或變爲啓用變量。你非常接近 - 如何對輸出/ email.rb進行必要的更改? – 2014-12-16 07:01:54