从命令行运行 Logstash

编辑

macOS Gatekeeper 警告

Apple 推出的更严格的公证要求影响了 8.17.0 Logstash 工件的公证。如果 macOS Catalina 在您首次运行 Logstash 时显示一个中断它的对话框,您需要采取措施允许它运行。为了防止 Gatekeeper 检查 Logstash 文件,请在下载的 .tar.gz 存档或解压到的目录上运行以下命令

xattr -d -r com.apple.quarantine <archive-or-directory>

例如,如果 .tar.gz 文件被解压到默认的 logstash-8.17.0 目录,则命令为

xattr -d -r com.apple.quarantine logstash-8.17.0

或者,如果出现 Gatekeeper 弹出窗口,您可以按照 在 Mac 上安全地打开应用如何打开未经公证或来自未知开发者的应用部分中的说明添加安全覆盖。

要从命令行运行 Logstash,请使用以下命令

bin/logstash [options]

要从 Windows 命令行运行 Logstash,请使用以下命令

bin/logstash.bat [options]

其中 options 是您可以指定以控制 Logstash 执行的命令行标志。bin 目录的位置因平台而异。请参阅Logstash 目录布局以查找系统上 bin\logstash 的位置。

以下示例运行 Logstash 并加载在 mypipeline.conf 文件中定义的 Logstash 配置

bin/logstash -f mypipeline.conf

您在命令行设置的任何标志都会覆盖 logstash.yml 中的相应设置,但文件本身不会更改。它保持原样以供后续 Logstash 运行。

在测试 Logstash 时,指定命令行选项非常有用。但是,在生产环境中,我们建议您使用 logstash.yml 来控制 Logstash 的执行。使用设置文件可以更轻松地指定多个选项,并为您提供一个可版本化的文件,您可以使用该文件为每次运行一致地启动 Logstash。

命令行标志

编辑

Logstash 具有以下标志。您可以使用 --help 标志来显示此信息。

--node.name NAME
指定此 Logstash 实例的名称。如果未给定值,则默认为当前主机名。
-f, --path.config CONFIG_PATH

从特定文件或目录加载 Logstash 配置。如果给定一个目录,则该目录中的所有文件将按字典顺序连接,然后解析为单个配置文件。不支持多次指定此标志。如果您多次指定此标志,则 Logstash 使用最后一次出现的标志(例如,-f foo -f bar-f bar 相同)。

您可以指定通配符(globs),并且任何匹配的文件都将按照上述顺序加载。例如,您可以使用通配符功能按名称加载特定文件

bin/logstash --debug -f '/tmp/{one,two,three}'

使用此命令,Logstash 连接三个配置文件 /tmp/one/tmp/two/tmp/three,并将它们解析为单个配置。

-e, --config.string CONFIG_STRING
使用给定的字符串作为配置数据。与配置文件相同的语法。如果未指定输入,则使用以下内容作为默认输入:input { stdin { type => stdin } },如果未指定输出,则使用以下内容作为默认输出:output { stdout { codec => rubydebug } }。如果要同时使用这两个默认值,请为 -e 标志使用空字符串。默认值为 nil。
--plugin-classloaders
(测试版)在独立的类加载器中加载 Java 插件,以隔离其依赖项。
--modules
启动指定的模块。与 -M 选项结合使用,为指定模块的默认变量赋值。如果在命令行上使用 --modules,则将忽略 logstash.yml 中的任何模块以及那里的任何设置。此标志与 -f-e 标志互斥。只能指定 -f-e--modules 中的一个。可以通过用逗号分隔或多次调用 --modules 标志来指定多个模块。
-M, --modules.variable
为模块的可配置选项分配一个值。分配变量的格式为 Logstash 变量的 -M "MODULE_NAME.var.PLUGIN_TYPE.PLUGIN_NAME.KEY_NAME=value"。对于其他设置,它将是 -M "MODULE_NAME.KEY_NAME.SUB_KEYNAME=value"-M 标志可以根据需要使用多次。如果未指定 -M 选项,则将使用该设置的默认值。-M 标志仅与 --modules 标志结合使用。如果不存在 --modules 标志,则将忽略它。
--pipeline.id ID
设置管道的 ID。默认值为 main
-w, --pipeline.workers COUNT
设置要运行的管道工作线程数。此选项设置将并行执行管道的过滤器和输出阶段的工作线程数。如果您发现事件正在备份,或者 CPU 未饱和,请考虑增加此数字以更好地利用机器处理能力。默认值是主机 CPU 核心的数量。
--pipeline.ordered ORDERED
保留事件顺序。可能的值为 auto(默认值)、truefalse。仅当同时为管道使用单个工作线程时,此设置才有效。请注意,启用后,它可能会影响过滤器和输出处理的性能。auto 选项会在 pipeline.workers 设置为 1 时自动启用排序。使用 true 在管道上启用排序,并防止在有多个工作线程时启动 logstash。使用 false 禁用为保留排序而必需的任何额外处理。
-b, --pipeline.batch.size SIZE
管道要处理的批次大小。此选项定义单个工作线程在尝试执行其过滤器和输出之前将从输入中收集的最大事件数。默认值为 125 个事件。较大的批处理大小通常效率更高,但会增加内存开销。您可能需要在 jvm.options 配置文件中增加 JVM 堆空间。有关更多信息,请参阅Logstash 配置文件
-u, --pipeline.batch.delay DELAY_IN_MS
在创建管道批次时,在轮询下一个事件时要等待多长时间。此选项定义在将大小不足的批次分派到过滤器和输出之前,轮询下一个事件时要等待多长时间(以毫秒为单位)。默认值为 50 毫秒。
--pipeline.ecs_compatibility MODE
设置 ECS 兼容模式的进程默认值。可以是像 v1v8 这样的 ECS 版本,也可以是 disabled。默认值为 v8。在 Logstash 8 之前定义的管道在没有考虑 ECS 的情况下运行。为确保迁移的管道继续像在旧版本 Logstash 中一样运行,请通过在其 pipelines.yml 定义中设置 pipeline.ecs_compatibility: disabled 来选择退出单个管道的 ECS。使用命令行标志将设置所有管道的默认值,包括新管道。有关更多信息,请参阅ECS 兼容性
--pipeline.unsafe_shutdown
强制 Logstash 在关闭期间退出,即使内存中仍有未完成的事件。默认情况下,Logstash 将拒绝退出,直到所有接收到的事件都被推送到输出。启用此选项可能会导致关闭期间的数据丢失。
--path.data PATH
这应指向一个可写目录。Logstash 将在需要存储数据时使用此目录。插件也可以访问此路径。默认值是 Logstash 主目录下的 data 目录。
-p, --path.plugins PATH
查找自定义插件的路径。可以多次给出此标志以包含多个路径。插件应位于特定的目录层次结构中:PATH/logstash/TYPE/NAME.rb,其中 TYPEinputsfiltersoutputscodecs,而 NAME 是插件的名称。
-l, --path.logs PATH
将 Logstash 内部日志写入到的目录。
--log.level LEVEL

设置 Logstash 的日志级别。可能的值为

  • fatal:记录非常严重的错误消息,这些消息通常会导致应用程序中止
  • error:记录错误
  • warn:记录警告
  • info:记录详细信息(这是默认值)
  • debug:记录调试信息(供开发人员使用)
  • trace:记录超出调试信息的更细粒度的消息
--config.debug
将完全编译的配置显示为调试日志消息(您还必须启用 --log.level=debug)。警告:日志消息将包括传递给插件配置的任何密码选项(以纯文本形式),并可能导致纯文本密码出现在您的日志中!
-i, --interactive SHELL
切换到 shell,而不是像往常一样运行。有效的 shell 是 "irb" 和 "pry"。
-V, --version
发出 Logstash 及其朋友的版本,然后退出。
-t, --config.test_and_exit
检查配置的语法是否有效,然后退出。请注意,此标志不会检查 grok 模式的正确性。Logstash 可以从一个目录读取多个配置文件。如果将此标志与 --log.level=debug 结合使用,Logstash 将记录组合的配置文件,并使用其来源文件注释每个配置块。
-r, --config.reload.automatic
监视配置更改并在配置更改时重新加载。注意:使用 SIGHUP 手动重新加载配置。默认值为 false。
--config.reload.interval RELOAD_INTERVAL
轮询配置位置以查找更改的频率。默认值为“3s”。请注意,单位限定符 (s) 是必需的。
--api.enabled ENABLED
默认情况下启用 HTTP API,但可以通过将 false 传递给此选项来禁用。
--api.http.host HTTP_HOST
Web API 绑定主机。此选项指定指标 REST 端点的绑定地址。默认值为“127.0.0.1”。
--api.http.port HTTP_PORT
Web API http 端口。此选项指定指标 REST 端点的绑定端口。默认值为 9600-9700。此设置接受 9600-9700 格式的范围。Logstash 将选择第一个可用的端口。
--log.format FORMAT
指定 Logstash 应以 JSON 格式(每行一个事件)还是纯文本格式(使用 Ruby 的 Object#inspect)写入自己的日志。默认值为“plain”。
--log.format.json.fix_duplicate_message_fields ENABLED
使用 JSON 日志格式避免 message 字段冲突。可能的值为 false(默认值)和 true
--path.settings SETTINGS_DIR
设置包含 logstash.yml 设置文件 以及 log4j 日志配置的目录。也可以通过 LS_SETTINGS_DIR 环境变量设置。默认值是 Logstash 主目录下的 config 目录。
--enable-local-plugin-development
此标志使开发人员能够更新其本地 Gemfile,而不会遇到由冻结的锁定文件引起的问题。当您在本地开发/测试插件时,此标志会很有帮助。

此标志仅适用于 Logstash 开发人员。最终用户不需要它。

-h, --help
打印帮助