2017-05-04 89 views
1

根據documentation有兩種方法將日誌信息發送到SwisscomDev ELK服務。通過STDOUT如何將PHP應用程序日誌直接發送到ELK服務?

  1. 標準方式:每輸出到標準輸出發送到Logstash
  2. 直接發送到Logstash

詢問有關辦法2.如何在此實現,尤其是如何被輸入的預期?

我們在我們基於PHP buildpack的應用程序中使用Monolog,使用其stdout_handler工作正常。

我正在嘗試使用VCAPServices logstashHostlogstashPort作爲API端點/主機發送日誌到的GelfHandler(連接被拒絕),SyslogUdPHandler(沒有錯誤,但沒有結果)。

綁定工作,env變量已設置,但我不知道如何從我們的應用程序發送SwisscomDev ELK服務Logstash API端點兼容日誌信息。

回答

2

Logstash配置爲tcp input,可通過logstashHost:logstashPort聯繫。 tcp輸入配置了其默認編解碼器,即line編解碼器(source code;而不是documentation中所述的plain編解碼器)。

日誌事件的有效負載應該用JSON編碼,以便Elasticsearch自動識別這些字段。如果是這種情況,整個日誌事件將被轉發,而不需要進一步處理到Elasticsearch。 如果有效負載不是JSON,則整個日誌行將結束於字段message

對於你的使用情況與獨白,我建議你在組合使用SocketHandler(指着它logstashHost:logstashPort)與LogstashFormatter這會照顧JSON編碼與日誌事件被界定線。

相關問題