Logstash 参考指南(Log4j输入插件)

Log4j输入插件

其他版本请参阅版本化的插件文档

安装

对于非默认绑定的插件,通过运行bin/logstash-plugin install logstash-input-log4j来轻松安装,有关更多细节请参见使用插件

获取帮助

有关插件的问题,请在讨论论坛中打开一个主题,对于bug或特性请求,在Github中打开一个issue,关于Elastic支持的插件列表,请参考Elastic支持矩阵

弃用通知

这个插件已经被弃用,建议你使用filebeat从log4j收集日志。

以下部分是如何从SocketAppender迁移到使用filebeat的指南。

要从log4j SocketAppender迁移到使用filebeat,你需要做3个更改:

  1. 配置你的log4j.properties(在你的应用程序中)以写入本地文件。
  2. 安装并配置filebeat以收集这些日志并将它们发送到Logstash。
  3. 配置Logstash以使用beats输入。

配置log4j以写入到本地文件,在log4j.properties文件中,移除SocketAppender,并用RollingFileAppender替换它。

例如,你可以使用以下log4j.properties配置来写入日志文件。

# 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超出了这个迁移指南的范围。

配置filebeat,接下来安装filebeat,基于上面的log4j.properties,我们可以使用这个filebeat配置:

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

有关配置filebeat的详细信息,请参阅filebeat配置指南

配置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输入配置选项

此插件支持以下配置选项以及稍后描述的通用选项。

设置输入类型要求
hoststringNo
modestring,["server", "client"]中的一个No
portnumberNo
proxy_protocolbooleanNo

还可以查看所有输入插件支持的选项列表的通用选项。

hots

  • 值类型为string
  • 默认值为“0.0.0.0”
  • 当模式是server时,要监听的地址,当模式为client时,连接到的地址。

mode

  • 值可以为:serverclient
  • 默认值为"server"
  • 操作模式,server监听客户端连接,client连接服务器。

port

  • 值类型为number
  • 默认值是4560
  • 当模式是server时,监听的端口,当模式为client时,要连接的端口。

proxy_protocol

通用选项

所有输入插件都支持以下配置选项:

设置输入类型要求
add_fieldhashNo
codeccodecNo
enable_metricbooleanNo
idstringNo
tagsarrayNo
typestringNo

细节

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服务器时也是如此。

相关推荐