从命令行运行 Logstash编辑

macOS Gatekeeper 警告

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

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

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

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

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

要从命令行运行 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
为模块的可配置选项赋值。分配变量的格式为 -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,其中 TYPEinputsfiltersoutputscodecsNAME 为插件的名称。
-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
轮询配置位置以查找更改的频率。默认值为“3 秒”。请注意,需要单位限定符(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
打印帮助