Log4j 输入插件

编辑

对于其他版本,请参阅版本化插件文档

安装

编辑

对于默认未捆绑的插件,可以通过运行 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

string

mode

字符串,以下之一 ["server", "client"]

port

number

proxy_protocol

boolean

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

 

host

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

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

mode

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

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

port

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

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

proxy_protocol

编辑
  • 值类型为 布尔
  • 默认值为 false

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

通用选项

编辑

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

设置 输入类型 必填

add_field

hash

codec

codec

enable_metric

boolean

id

string

tags

array

type

string

add_field

编辑
  • 值类型为 hash
  • 默认值为 {}

向事件添加一个字段

codec

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

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

enable_metric

编辑
  • 值类型为 布尔
  • 默认值为 true

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

  • 值类型为 string
  • 此设置没有默认值。

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

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

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

tags

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

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

这可以帮助以后的处理。

type

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

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

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

该类型作为事件本身的一部分存储,因此您也可以使用该类型在 Kibana 中搜索它。

如果您尝试在已具有类型的事件上设置类型(例如,当您将事件从 shipper 发送到 indexer 时),则新的输入将不会覆盖现有类型。在 shipper 上设置的类型会一直保留在该事件的生命周期中,即使将其发送到另一个 Logstash 服务器也是如此。