Logstash 參考指南(Log4j輸入插件)

Log4j輸入插件

其餘版本請參閱版本化的插件文檔html

安裝

對於非默認綁定的插件,經過運行bin/logstash-plugin install logstash-input-log4j來輕鬆安裝,有關更多細節請參見使用插件git

獲取幫助

有關插件的問題,請在討論論壇中打開一個主題,對於bug或特性請求,在Github中打開一個issue,關於Elastic支持的插件列表,請參考Elastic支持矩陣github

棄用通知

這個插件已經被棄用,建議你使用filebeat從log4j收集日誌。

如下部分是如何從SocketAppender遷移到使用filebeat的指南。apache

要從log4j SocketAppender遷移到使用filebeat,你須要作3個更改:安全

  1. 配置你的log4j.properties(在你的應用程序中)以寫入本地文件。
  2. 安裝並配置filebeat以收集這些日誌並將它們發送到Logstash。
  3. 配置Logstash以使用beats輸入。

配置log4j以寫入到本地文件,在log4j.properties文件中,移除SocketAppender,並用RollingFileAppender替換它。服務器

例如,你可使用如下log4j.properties配置來寫入日誌文件。app

# Your app's log4j.properties (log4j 1.2 only)
log4j.rootLogger=daily
log4j.appender.daily=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.daily.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.daily.RollingPolicy.FileNamePattern=/var/log/your-app/app.%d.log
log4j.appender.daily.layout = org.apache.log4j.PatternLayout
log4j.appender.daily.layout.ConversionPattern=%d{YYYY-MM-dd HH:mm:ss,SSSZ} %p %c{1}:%L - %m%n

更詳細地配置log4j.properties超出了這個遷移指南的範圍。socket

配置filebeat,接下來安裝filebeat,基於上面的log4j.properties,咱們可使用這個filebeat配置:ide

# filebeat.yml
filebeat:
  prospectors:
    -
      paths:
        - /var/log/your-app/app.*.log
      input_type: log
output:
  logstash:
    hosts: ["your-logstash-host:5000"]

有關配置filebeat的詳細信息,請參閱filebeat配置指南ui

配置Logstash從filebeat接收,最後,使用beats輸入配置Logstash:

# logstash configuration
input {
  beats {
    port => 5000
  }
}

強烈建議你也在filebeat和logstash beats輸入中啓用TLS,以保護日誌數據的安全。

有關配置beats輸入的詳細信息,請參閱logstash beats輸入文檔

描述

從Log4j SocketAppender經過TCP socket讀取事件,這個插件只適用於log4j 1.x版本。

是否能夠接受客戶端鏈接或鏈接到服務器,取決於mode,根據配置的mode,你須要在遠程端配置匹配的SocketAppenderSocketHubAppender

每接收到一個log4j LoggingEvent建立一個事件,其模式以下:

  • timestamp ⇒ 從1/1/1970開始的毫秒數,直到日誌事件被建立
  • path ⇒ 日誌記錄器的名稱
  • priority ⇒ 事件的級別
  • logger_name ⇒ 記錄器的名字
  • thread ⇒ 發出日誌請求的線程名稱
  • class ⇒ 發出日誌請求的調用者的徹底限定類名
  • file ⇒ 以冒號分隔的格式「fileName:lineNumber」發出日誌請求的調用者的源文件名和行號
  • method ⇒ 發出日誌記錄請求的調用者的方法名
  • NDC ⇒ NDC字符串
  • stack_trace ⇒ 多行堆棧跟蹤

另外,若是原始log4j LoggingEvent包含MDC散列條目,它們將做爲字段在事件中合併。

Log4j輸入配置選項

此插件支持如下配置選項以及稍後描述的通用選項。

設置 輸入類型 要求
host string No
mode string,["server", "client"]中的一個 No
port number No
proxy_protocol boolean No

還能夠查看全部輸入插件支持的選項列表的通用選項。

hots

  • 值類型爲string
  • 默認值爲「0.0.0.0」
  • 當模式是server時,要監聽的地址,當模式爲client時,鏈接到的地址。

mode

  • 值能夠爲:serverclient
  • 默認值爲"server"
  • 操做模式,server監聽客戶端鏈接,client鏈接服務器。

port

  • 值類型爲number
  • 默認值是4560
  • 當模式是server時,監聽的端口,當模式爲client時,要鏈接的端口。

proxy_protocol

通用選項

全部輸入插件都支持如下配置選項:

設置 輸入類型 要求
add_field hash No
codec codec No
enable_metric boolean No
id string No
tags array No
type string No

細節

add_field

  • 值類型爲hash
  • 默認值爲{}
  • 向事件添加字段。

codec

  • 值類型爲codec
  • 默認值爲"plain"
  • 用於輸入數據的編解碼器,在輸入數據以前,輸入編解碼器是一種方便的解碼方法,不須要在你的Logstash管道中使用單獨的過濾器。

enable_metric

  • 值類型是boolean
  • 默認值是true
  • 禁用或啓用這個特定插件實例的指標日誌,默認狀況下,咱們記錄全部咱們能夠記錄的指標,可是你能夠禁用特定插件的指標集合。

id

  • 值類型爲string
  • 這個設置沒有默認值
  • 向插件配置添加惟一的ID,若是沒有指定ID,則Logstash將生成一個,強烈建議在配置中設置此ID,當你有兩個或多個相同類型的插件時,這一點特別有用。例如,若是你有兩個log4j輸入,在本例中添加一個命名ID將有助於在使用監視API時監視Logstash。

    input {
      log4j {
        id => "my_plugin_id"
      }
    }

tags

  • 值類型爲array
  • 這個設置沒有默認值
  • 向事件添加任意數量的標記,這有助於之後的處理。

type

  • 值類型爲string
  • 這個設置沒有默認值
  • 向該輸入處理的全部事件添加type字段,類型主要用於過濾器激活,該type做爲事件自己的一部分存儲,所以你也可使用該類型在Kibana中搜索它。若是你試圖在已經擁有一個type的事件上設置一個type(例如,當你將事件從發送者發送到索引器時),那麼新的輸入將不會覆蓋現有的type,發送方的type集在其生命週期中始終與該事件保持一致,甚至在發送到另外一個Logstash服務器時也是如此。
相關文章
相關標籤/搜索