Logstash 参考指南(Log4j输入插件)
Log4j输入插件
- 插件版本:v3.1.3
- 发布于:2018-04-06
- 更新日志
其他版本请参阅版本化的插件文档
安装
对于非默认绑定的插件,通过运行bin/logstash-plugin install logstash-input-log4j
来轻松安装,有关更多细节请参见使用插件。
获取帮助
有关插件的问题,请在讨论论坛中打开一个主题,对于bug或特性请求,在Github中打开一个issue,关于Elastic支持的插件列表,请参考Elastic支持矩阵。
弃用通知
这个插件已经被弃用,建议你使用filebeat从log4j收集日志。以下部分是如何从SocketAppender迁移到使用filebeat的指南。
要从log4j SocketAppender迁移到使用filebeat,你需要做3个更改:
- 配置你的
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输入文档。
描述
从Log4j SocketAppender通过TCP socket读取事件,这个插件只适用于log4j 1.x版本。
是否可以接受客户端连接或连接到服务器,取决于mode
,根据配置的mode
,你需要在远程端配置匹配的SocketAppender
或SocketHubAppender
。
每接收到一个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
- 值可以为:
server
,client
- 默认值为
"server"
- 操作模式,
server
监听客户端连接,client
连接服务器。
port
- 值类型为number
- 默认值是
4560
- 当模式是
server
时,监听的端口,当模式为client
时,要连接的端口。
proxy_protocol
- 值类型为boolean
- 默认值为
false
- 代理协议支持,此时只支持v1,http://www.haproxy.org/download/1.5/doc/proxy-protocol.txt。
通用选项
所有输入插件都支持以下配置选项:
设置 | 输入类型 | 要求 |
---|---|---|
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服务器时也是如此。