Log4j 输入插件

编辑
  • 插件版本:v3.1.3
  • 发布日期:2018-04-06
  • 变更日志

有关其他版本,请参阅 版本化插件文档

安装

编辑

对于默认情况下不捆绑的插件,可以通过运行 bin/logstash-plugin install logstash-input-log4j 轻松安装。有关更多详细信息,请参阅 使用插件

获取帮助

编辑

如有关于插件的问题,请在 Discuss 论坛中发布主题。对于错误或功能请求,请在 Github 中打开问题。有关 Elastic 支持的插件列表,请参阅 Elastic 支持矩阵

弃用通知

编辑

此插件已弃用。建议您使用 Filebeat 收集来自 Log4j 的日志。

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

要从 Log4j SocketAppender 迁移到使用 Filebeat,您需要进行以下更改

  • 将您的 log4j.properties(在您的应用程序中)配置为写入本地文件。
  • 安装并配置 Filebeat 以收集这些日志并将其发送到 Logstash
  • 配置 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 输入文档

描述

编辑

通过 TCP 套接字从 Log4j SocketAppender 读取事件。此插件仅适用于 Log4j 版本 1.x。

可以接受来自客户端的连接或连接到服务器,具体取决于 mode。根据配置的 mode,您需要在远程端使用匹配的 SocketAppender 或 SocketHubAppender。

每个接收到的 Log4j LoggingEvent 都创建一个事件,其架构如下

  • timestamp ⇒ 从 1970 年 1 月 1 日开始到创建日志事件为止经过的毫秒数。
  • path ⇒ 记录器的名称
  • priority ⇒ 此事件的级别
  • logger_name ⇒ 记录器的名称
  • thread ⇒ 发出日志请求的线程名称
  • class ⇒ 发出日志请求的调用者的完全限定类名。
  • file ⇒ 发出日志请求的调用者的源文件名和行号,以冒号分隔的格式“fileName:lineNumber”。
  • method ⇒ 发出日志请求的调用者的方法名称。
  • NDC ⇒ NDC 字符串
  • stack_trace ⇒ 多行堆栈跟踪

此外,如果原始 Log4j LoggingEvent 包含 MDC 哈希条目,则它们将作为字段合并到事件中。

Log4j 输入配置选项

编辑

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

设置 输入类型 必需

host

字符串

mode

字符串,其中之一为 ["server", "client"]

port

数字

proxy_protocol

布尔值

另请参阅 通用选项,以获取所有输入插件支持的选项列表。

 

host

编辑
  • 值类型为 字符串
  • 默认值为 "0.0.0.0"

当 mode 为 server 时,要监听的地址。当 mode 为 client 时,要连接到的地址。

mode

编辑
  • 值可以是以下任何一个:serverclient
  • 默认值为 "server"

要操作的模式。server 侦听客户端连接,client 连接到服务器。

port

编辑
  • 值类型为 数字
  • 默认值为 4560

当 mode 为 server 时,要监听的端口。当 mode 为 client 时,要连接到的端口。

proxy_protocol

编辑

代理协议支持,目前仅支持 v1 http://www.haproxy.org/download/1.5/doc/proxy-protocol.txt

通用选项

编辑

所有输入插件都支持这些配置选项

设置 输入类型 必需

add_field

哈希

codec

codec

enable_metric

布尔值

id

字符串

tags

数组

type

字符串

add_field

编辑
  • 值类型为 哈希
  • 默认值为 {}

向事件添加字段

codec

编辑
  • 值类型为 codec
  • 默认值为 "plain"

用于输入数据的编解码器。输入编解码器是在输入数据进入输入之前对其进行解码的便捷方法,无需在 Logstash 管道中使用单独的过滤器。

enable_metric

编辑

禁用或启用此特定插件实例的指标日志记录,默认情况下我们记录所有可以记录的指标,但您可以禁用特定插件的指标收集。

  • 值类型为 字符串
  • 此设置没有默认值。

向插件配置添加唯一的 ID。如果未指定 ID,Logstash 将生成一个。强烈建议您在配置中设置此 ID。当您具有两种或更多相同类型的插件时,这尤其有用,例如,如果您有两个 log4j 输入。在这种情况下,添加命名 ID 将有助于在使用监控 API 时监控 Logstash。

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

id 字段中的变量替换仅支持环境变量,不支持使用密钥存储中的值。

tags

编辑
  • 值类型为 数组
  • 此设置没有默认值。

向您的事件添加任意数量的标签。

这可以帮助以后进行处理。

type

编辑
  • 值类型为 字符串
  • 此设置没有默认值。

向此输入处理的所有事件添加 type 字段。

类型主要用于过滤器激活。

类型存储在事件本身中,因此您也可以使用类型在 Kibana 中搜索它。

如果您尝试在已经具有类型的事件上设置类型(例如,当您从发货器发送事件到索引器时),则新的输入不会覆盖现有的类型。在发货器中设置的类型会与该事件保持一致,即使发送到其他 Logstash 服务器也是如此。