Logstash 入门
编辑Logstash 入门
编辑本节将指导您完成安装 Logstash 并验证一切正常运行的过程。在学习如何存储您的第一个事件后,您将继续创建一个更高级的管道,该管道将 Apache Web 日志作为输入、解析日志,并将解析后的数据写入 Elasticsearch 集群。然后,您将学习如何将多个输入和输出插件拼接在一起,以统一来自各种不同来源的数据。
本节包括以下主题
Java (JVM) 版本
编辑Logstash 需要以下版本之一
- Java 11
- Java 17(默认)。请查看 使用 JDK 17 以获取设置信息。
使用 官方 Oracle 发行版 或开源发行版,例如 OpenJDK。有关跨版本支持的官方版本,请参阅 Elastic 支持矩阵。
Logstash 提供特定于架构的 下载,其中包括 Adoptium Eclipse Temurin 17,即 JDK 的最新长期支持 (LTS) 版本。
如果您想使用捆绑版本以外的 JDK,请使用 LS_JAVA_HOME 环境变量。如果设置了 LS_JAVA_HOME 环境变量以使用自定义 JDK,即使您升级后,Logstash 仍将继续使用您指定的 JDK 版本。
检查您的 Java 版本
编辑运行以下命令
java -version
在安装了 Java 的系统上,此命令会产生类似于以下内容的输出
java version "11.0.1" 2018-10-16 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
LS_JAVA_HOME
编辑Logstash 包含一个捆绑的 JDK,该 JDK 已验证可与每个特定版本的 Logstash 一起使用,并且通常提供最佳的性能和可靠性。如果您需要使用捆绑版本以外的 JDK,请将 LS_JAVA_HOME
环境变量设置为要使用的版本。
在某些 Linux 系统上,您可能需要在安装 Logstash 之前导出 LS_JAVA_HOME
环境变量,尤其是在您从 tarball 安装 Java 的情况下。Logstash 在安装期间使用 Java 自动检测您的环境并安装正确的启动方法(SysV init 脚本、Upstart 或 systemd)。如果在软件包安装期间 Logstash 无法找到 LS_JAVA_HOME
环境变量,您可能会收到错误消息,并且 Logstash 将无法正常启动。
使用 JDK 17
编辑Logstash 默认使用 JDK 17,但如果您是从 Logstash 7.11.x(或更早版本)升级到 7.12 或更高版本,则需要在 jvm.options
和 log4j2.properties
中更新设置。
jvm.options
的更新
编辑在 config/jvm.options
文件中,删除所有与 CMS 相关的标志
## GC configuration -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly
有关如何使用 jvm.options
的更多信息,请参阅 JVM 设置。
log4j2.properties
的更新
编辑在 config/log4j2.properties
中
-
将以
appender.rolling.avoid_pipelined_filter.*
开头的属性替换为appender.rolling.avoid_pipelined_filter.type = PipelineRoutingFilter
-
将以
appender.json_rolling.avoid_pipelined_filter.*
开头的属性替换为appender.json_rolling.avoid_pipelined_filter.type = PipelineRoutingFilter
-
将以
appender.routing.*
开头的属性替换为appender.routing.type = PipelineRouting appender.routing.name = pipeline_routing_appender appender.routing.pipeline.type = RollingFile appender.routing.pipeline.name = appender-${ctx:pipeline.id} appender.routing.pipeline.fileName = ${sys:ls.logs}/pipeline_${ctx:pipeline.id}.log appender.routing.pipeline.filePattern = ${sys:ls.logs}/pipeline_${ctx:pipeline.id}.%i.log.gz appender.routing.pipeline.layout.type = PatternLayout appender.routing.pipeline.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %m%n appender.routing.pipeline.policy.type = SizeBasedTriggeringPolicy appender.routing.pipeline.policy.size = 100MB appender.routing.pipeline.strategy.type = DefaultRolloverStrategy appender.routing.pipeline.strategy.max = 30