从命令行运行 Logstash
编辑从命令行运行 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
(默认值)、true
和false
。此设置仅在也为管道使用单个工作程序时有效。请注意,启用后,它可能会影响过滤器和输出处理的性能。如果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 版本,如
v1
或v8
,或者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
,其中TYPE
是inputs
、filters
、outputs
或codecs
,而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
- 打印帮助