[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模塊