[TOC]
### 从命令行运行Logstash
使用下面的命令来从命令行中运行Logstash:
```shell
bin/logstash [options]
```
`options`是在命令行指定的可以用来控制Logstash运行的[命令行](https://www.elastic.co/guide/en/logstash/current/running-logstash-command-line.html#command-line-flags)标记。`bin`目录根据不同的平台有所不同,详见[Logstash 目录布局](https://www.elastic.co/guide/en/logstash/current/dir-layout.html)
下面的示例从`mypipeline.conf`文件运行一个Logstash:
```shell
bin/logstash -f mypipeline.conf
```
命令行指定的选项将会覆盖[logstash.yml](https://www.elastic.co/guide/en/logstash/current/logstash-settings-file.html)中的选项,但文件并不会改变。后续的运行仍然会使用文件中的设定。
在你测试Logstash运行的时候,指定命令行选项是非常有用的。但是我们建议在生产环境中使用[logstash.yml](https://www.elastic.co/guide/en/logstash/current/logstash-settings-file.html)来控制Logstash的运行。使用设置文件让定义多个选项变得容易,且为你的每次运行Logstash提供了一个单一的可验证的文件。
### Command-Line Flags
Logstash有下面这些选项(标记),你可以使用`--help`来查看相关信息。
`--node.name NAME`
给Logstash实例定义名字,如果未定义,则默认值为当前的hostname。
`-f, --path.config CONFIG_PATH`
从给定的文件或目录加载配置文件。如果给定的是目录,目录下的所有文件会按照字母顺序解析为一个文件加载。(文档没说,但应该是所有以`conf`结尾的文件,而不是所有文件)。此项不支持多次指定,如果你指定的多次,则最后一个生效。(如:`-f foo -f bar`等同于`-f bar`)。
你可以使用通配符,匹配的所有文件会按照上述规则进行加载。如,你可以使用通配符按照名称加载特定的配置文件:
```shell
bin/logstash --debug -f '/tmp/{one,two,three}'
```
这个命令中,Logstash包含了三个配置文件,`/tmp/one`,`/tmp/two`,`/tmp/three`,并将他们解析为一个文件。
`-e, --config.string CONFIG_STRING`
使用给定的字符串作为配置数据。语法和配置文件相同。如果没有指定input,则使用下面的默认input:`input { stdin { typre => stdin } }`,如果没有指定output,则使用下面的默认output:`output { stdout { codec => rubydebug } }`,如果你希望全部使用默认值,给`-e`选项空字符串即可。默认为空。
`--modules`
启动命名的模块。与`-M`选项配合给指定的模块的默认变量赋值。如果`--modules`在命令行中使用,所有在`logstash.yml`中定义的模块包括其他任何设定都会被忽略。此选项和`-f`,`-e`互斥,只能指定他们中的一个。可以使用逗号分隔多个模块,或者使用多次使用`--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`则`-M`会被忽略。
`--pipeline.id ID`
设定pipeline的ID,默认是`main`。
`-w, --pipeline.workers COUNT`
设置管道中worker的数量。此选项设置在filter和output阶段并行执行的worker的数量。如果发现事件正在备份或者CPU负载较低,可以考虑增加worker的数量,以最大化利用机器性能。默认情况下worker的数量为CPU核心数量。
`-b, --pipeline.batch.size SIZE`
batches的大小。这个选项定义了单个worker在执行filters和outputs之前从input每次取走的事件的最大数量。默认是125。通常更大的batch意味着更高的收益,但也意味着更大的内存消耗。为此可能需要在`jvm.options`中增加JVM的可用空间。更多相关信息查看[Logstash 配置文件](https://www.elastic.co/guide/en/logstash/current/config-setting-files.html)
`-u, --pipeline.batch.delay DELAY_IN_MS`
当创建batches的时候,从input等待事件的超时时长。这个选项定义了如果取不到定义的batch的大小的情况下等待多少毫秒。默认是50毫秒。
`--pipeline.unsafe_shutdown`
强制退出Logstash即使内存中仍有在处理的事件。默认情况下Logstash会拒绝退出直到接收的事件处理全部交给outputs。开启之后可能在关闭的时候丢失数据。
`--path.data PATH`
此选项须指向一个可写的目录。Logstash会在需要存储数据的时候使用次目录。插件也需要对此目录可以访问。默认的`data`目录是Logstash的家目录。
`-p, --path.plugins PATH`
指定插件的默认目录。可以通过引用多次来包含多个目录。插件应该位于特定的目录层次之中:`/PATH/logstash/TYPE/NAME.rb`其中`TYPE`指的是`inputs`,`filters`,`outputs`和`codecs`,`NAME`即插件名。
`-l, --path.logs PATH`
Logstash的日志目录。
`--log.level LEVEL`
设置日志等级,可能的值包括:
+ `fatal`:记录非常严重的错误信息,通常此信息之后程序即异常中止。
+ `error`:记录错误信息
+ `warn`:记录警告信息
+ `info`:记录运行的详细信息(默认)
+ `debug`:记录debugging信息(用于开发者)
+ `trace`:记录比debugging更加详细的信息
**`--config.debug`**
将完全编译的配置作为调试日志输出(必须同时将`--log.level=debug`开启)。警告:日志信息会包含所有明文传递的密码,这些信息会被记录到日志中!(原文:The log message will include any *password*options passed to plugin configs as plaintext, and may result in plaintext passwords appearing in your logs!)注:这里的密码应该指的是程序、插件通信用到的配置中的密码。
**`-i, interactive SHELL`**
Drop to shell instead of running as normal. Valid shells are "irb" and "pry".(不知道这个设定是什么意思。)
**`-V, --version`**
显示版本,然后退出。原文:Emit the version of Logstash and its friends, then exit.
`-t, --config.test_and_exit`
价差配置文件的语法,然后退出。注意Grok匹配规则不会被检查。Logstash可以读取多个配置文件从一个目录。如果同时指定了`--log.level=debug`,Logstash将组合多个配置文件的日志,并给每个配置块添加来源注释。
`-r, --config.reload.automatic`
监控配置文件的变化,并在其发生变化的是后重载。NOTE:使用SIGHUP信号也可以重载配置文件,默认此配置为false。
`--config.reload.interval RELOAD_INTERVAL`
检查配置文件变化的间隔时间,默认是"3s"。
`--http.host HTTP_HOST`
指定要绑定的IP地址,默认是"127.0.0.1"。
`--http.port HTTP_PORT`
指定监听的端口。默认是9600-9700。可以接受9600-9700这种格式的范围设定,Logstash会使用第一个可用的端口。
`--log.format FORMAT`
指定Logstash记录日志的格式,JSON(每行一个事件)或文本(使用Ruby’s Object#inspect)。默认是文本。
`--path.settings SETTINGS_DIR`
指定包含`logstash.yml`配置文件以及log4j配置。此设置还可以通过LS_SETTINGS_DIR 变量来设置。默认的目录是Logstash家目录下的`config`目录。
`-h, --help`
显示帮助信息。
- Emmm
- Logstash简介
- 开始使用Logstash
- 安装Logstash
- 储存你的第一个事件
- 通过Logstash解析日志
- 多个输入和输出插件的混合使用
- Logstash是如何工作的
- 执行模型Execution Model
- 设置并运行Logstash
- Logstash目录布局
- Logstash配置文件
- logstash.yml
- Secrets keystore for secure settings
- 从命令行运行Logstash
- 以服务的方式运行Logstash
- 在Docker中运行Logstash
- 配置容器版Logstash
- Logging
- 关闭Logstash
- 安装X-Pack
- 设置X-Pack
- 升级Logstash
- 使用包管理升级
- 直接下载进行升级
- 升级至6.0
- Upgrading with the Persistent Queue Enabled
- 配置Logstash
- 管道配置文件的结构
- 访问配置中的事件数据和字段
- 在配置中使用环境变量
- Logstash配置示例
- 多管道
- 管道间通信(beta)
- 重载配置文件
- 管理多行事件
- Glob Pattern Support
- Converting Ingest Node Pipelines
- Logstash间通信
- 配置集中式管道管理
- X-Pack Monitoring
- X-Pack Security
- X-Pack Settings
- Field References Deep Dive(深入字段引用)
- 管理Logstash
- 集中式管道管理
- 使用Logstash模块
- 使用Elastic Cloud
- Logstash ArcSight模块