Logstash 入门
编辑Logstash 入门编辑
本节将指导您完成安装 Logstash 并验证一切正常运行的过程。在学习如何存储第一个事件后,您将继续创建一个更高级的管道,该管道将 Apache Web 日志作为输入,解析日志并将解析后的数据写入 Elasticsearch 集群。然后,您将学习如何将多个输入和输出插件拼接在一起,以统一来自各种不同来源的数据。
本节包括以下主题
Java (JVM) 版本编辑
Logstash 需要以下版本之一
- Java 11
- Java 17(默认)。查看 使用 JDK 17 获取设置信息。
使用 官方 Oracle 发行版 或开源发行版,例如 OpenJDK。有关跨发行版的支持版本的官方信息,请参阅 Elastic 支持矩阵。
捆绑的 JDK
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