从命令行运行 Logstash

编辑

macOS Gatekeeper 警告

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

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

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

xattr -d -r com.apple.quarantine logstash-8.16.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 相同)。

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

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
为模块的可配置选项分配值。分配变量的格式为 -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
打印帮助