Logstash 參考指南(日誌記錄)

日誌記錄

Logstash在其操做期間發出內部日誌,這些日誌位於LS_HOME/logs(或/var/log/logstash用於DEB/RPM)中,默認的日誌級別是INFO。Logstash的日誌框架基於Log4j 2框架,其大部分功能都直接向用戶公開。html

在調試問題時,特別是插件問題時,增長日誌級別到DEBUG以得到更詳細的消息是頗有幫助的。之前,你只能設置應用於整個Logstash產品的日誌級別,從5.0開始,你能夠在Logstash中爲特定的子系統配置日誌記錄。例如,若是你正在調試Elasticsearch輸出的問題,你能夠僅爲該組件增長日誌級別,經過這種方式,你能夠減小因爲過分日誌記錄而產生的噪音,並有效地關注問題區域。node

日誌文件位置

你可使用--path.logs設置指定日誌文件的位置。apache

Log4j 2配置

Logstash帶有一個使用log4j2.properties文件的開箱即用的設置,你能夠修改此文件以更改旋轉策略、類型和其餘log4j2配置,你必須從新啓動Logstash以應用對此文件所作的任何更改。json

Slowlog

Logstash的慢日誌功能能夠在特定事件須要異常長的時間才能經過管道時進行日誌記錄,與普通的應用程序日誌同樣,你能夠在--path.logs目錄中找到慢日誌,使用如下選項在logstash.yml設置文件中配置Slowlog:api

slowlog.threshold.warn (default: -1)
slowlog.threshold.info (default: -1)
slowlog.threshold.debug (default: -1)
slowlog.threshold.trace (default: -1)

默認狀況下,這些值被設置爲-1nanos,表示不會調用slowlog的無限閾值,這些slowlog.threshold字段是使用時間值格式配置的,該格式支持普遍的觸發間隔。可使用如下時間單位指定正數值範圍:nanos(納秒)、micros(微秒)、ms(毫秒)、s(秒)、m(分鐘)、h(小時)、d(天)。ruby

這裏有一個例子:app

slowlog.threshold.warn: 2s
slowlog.threshold.info: 1s
slowlog.threshold.debug: 500ms
slowlog.threshold.trace: 100ms

在上面的配置中,將記錄在過濾器中處理耗時超過兩秒的事件,日誌將包含致使緩慢的完整事件和過濾器配置。框架

日誌記錄API

你能夠修改log4j2.properties文件並從新啓動你的Logstash,但這既乏味又會致使沒必要要的停機,相反,你能夠經過日誌記錄API動態更新日誌記錄級別,這些設置當即生效,不須要從新啓動。curl

默認狀況下,日誌API試圖綁定到 tcp:9600,若是該端口已經被另外一個Logstash實例使用,你須要使用 --http.port標誌啓動Logstash指定綁定到另外一個端口,有關更多信息,請參閱命令行標誌。

要更新日誌級別,請使用你感興趣的子系統/模塊並預先設置logger.,例如:jvm

curl -XPUT 'localhost:9600/_node/logging?pretty' -H 'Content-Type: application/json' -d'
{
    "logger.logstash.outputs.elasticsearch" : "DEBUG"
}
'

當這個設置生效時,Logstash爲配置中指定的全部Elasticsearch輸出發出DEBUG級別日誌,請注意,這個新設置是暫時的,不會在從新啓動時存活。

應該向log4j2.properties添加持久性更改,例如:

logger.elasticsearchoutput.name = logstash.outputs.elasticsearch
logger.elasticsearchoutput.level = debug

要檢索運行時可用的日誌記錄子系統列表,能夠對_node/logging執行GET請求:

curl -XGET 'localhost:9600/_node/logging?pretty'

示例響應:

{
...
  "loggers" : {
    "logstash.agent" : "INFO",
    "logstash.api.service" : "INFO",
    "logstash.basepipeline" : "INFO",
    "logstash.codecs.plain" : "INFO",
    "logstash.codecs.rubydebug" : "INFO",
    "logstash.filters.grok" : "INFO",
    "logstash.inputs.beats" : "INFO",
    "logstash.instrument.periodicpoller.jvm" : "INFO",
    "logstash.instrument.periodicpoller.os" : "INFO",
    "logstash.instrument.periodicpoller.persistentqueue" : "INFO",
    "logstash.outputs.stdout" : "INFO",
    "logstash.pipeline" : "INFO",
    "logstash.plugins.registry" : "INFO",
    "logstash.runner" : "INFO",
    "logstash.shutdownwatcher" : "INFO",
    "org.logstash.Event" : "INFO",
    "slowlog.logstash.codecs.plain" : "TRACE",
    "slowlog.logstash.codecs.rubydebug" : "TRACE",
    "slowlog.logstash.filters.grok" : "TRACE",
    "slowlog.logstash.inputs.beats" : "TRACE",
    "slowlog.logstash.outputs.stdout" : "TRACE"
  }
}

要重置任何可能經過日誌API動態更改的日誌級別,請向_node/logging/reset發送PUT請求,全部日誌級別都將恢復到log4j2.properties文件中指定的值。

curl -XPUT 'localhost:9600/_node/logging/reset?pretty'
相關文章
相關標籤/搜索