Logstash 参考指南(从命令行运行Logstash)
从命令行运行Logstash
要从命令行运行Logstash,请使用以下命令:
bin/logstash [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
。
--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内核的数量。
-b, --pipeline.batch.size SIZE
- pipeline要工作的批处理大小,此选项定义单个工作线程在尝试执行其过滤器和输出之前将从输入收集的最大事件数,默认值是125个事件。更大的批处理大小通常更高效,但代价是增加内存开销,你可能需要增加
jvm.options
配置文件中的JVM堆空间,有关更多信息,请参阅Logstash配置文件。
-u, --pipeline.batch.delay DELAY_IN_MS
- 在创建pipeline批处理时,轮询下一个事件时要等待多长时间,这个选项定义了在轮询下一个事件时等待多长时间(以毫秒为单位),然后将一个较小的批处理分派给过滤器和输出,默认为50ms。
--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
- 将内部日志写入到的目录。
--log.level LEVEL
设置Logstash的日志级别,可能的值是:
fatal
:记录非常严重的错误消息,这通常会导致应用程序中止error
:错误日志warn
:警告日志info
:详细日志信息(这是默认信息)debug
:调试日志信息(针对开发人员)trace
:记录除调试信息之外的细粒度消息
--config.debug
- 将完整编译的配置显示为debug日志消息(还必须有
--log.level=debug
启用),警告:日志消息将包含传递给插件configs的任意密码选项,可能会导致明文密码出现在日志中!
-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”。
--http.host HTTP_HOST
- Web API绑定的host,此选项指定指标REST端点的绑定地址,默认值是“127.0.0.1”。
--http.port HTTP_PORT
- Web API http端口,此选项指定指标REST端点的绑定端口,默认值是9600-9700,此设置接受9600-9700格式的范围,Logstash将获取第一个可用端口。
--log.format FORMAT
- 指定Logstash是用JSON形式(每行一个事件)还是用纯文本(使用Ruby的对象#inspect)写入自己的日志,默认值是“plain”。
--path.settings SETTINGS_DIR
- 设置包含logstash.yml设置文件和log4j日志记录配置的目录,这也可以通过
LS_SETTINGS_DIR
环境变量设置,默认值是Logstash下的config
目录。
-h, --help
- 打印帮助。