从命令行运行 Logstash编辑

macOS Gatekeeper 警告

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

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

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

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

或者,如果出现 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 相同)。

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

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
(Beta) 在独立的类加载器中加载 Java 插件以隔离其依赖项。
--modules
启动命名模块。与 -M 选项一起使用,为指定模块分配默认变量的值。如果在命令行上使用 --modules,则会忽略 logstash.yml 中的任何模块,以及那里的任何设置。此标志与 -f-e 标志互斥。只能指定 -f-e--modules 中的一个。可以通过用逗号分隔多个模块,或者通过多次调用 --modules 标志来指定多个模块。
-M, --modules.variable
为模块的可配置选项分配一个值。分配变量的格式为 -M "MODULE_NAME.var.PLUGIN_TYPE.PLUGIN_NAME.KEY_NAME=value"(用于 Logstash 变量)。对于其他设置,它将是 -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。此设置仅在也为管道使用单个工作程序时才有效。请注意,启用后,它可能会影响过滤器和输出处理的性能。如果 pipeline.workers 设置设置为 1,则 auto 选项将自动启用排序。使用 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 兼容模式的进程默认值。可以是 ECS 版本,例如 v1v8,或者 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,而不会遇到因冻结的 lockfile 导致的问题。当您在本地开发/测试插件时,此标志可能会有所帮助。

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

-h, --help
打印帮助