### logstash.yml
你可以在此文件中設置如何運行Logstash。如:你可以對管道進行配置,設置配置文件的位置,日志文件的選項和其他設置。此文件中的大多數設置可以在[命令行運行](http://www.hmoore.net/aiyinsi-tan/logstash/849601#CommandLine_Flags_22)Logstash的時候直接指定。所有在命令行指定的設置會覆蓋此文件中的配置。
`logstash.yml`文件使用[YAML](http://yaml.org/)語言進行書寫。此文件的位置因不同的平臺有所不同,參考[Logstash目錄布局](http://www.hmoore.net/aiyinsi-tan/logstash/849597)。你可以使用分級或平級的方式進行設置。例如以分級的方式設置管道中batch的大小和延遲:
```yaml
pipeline:
batch:
size: 125
delay: 50
```
> <font color=#1E90FF size=4>TIP</font>:關于batch的概念,在Logstash是如何運行的中有提到。在Logstash管道中,Inputs會將采集的內容發送到中央處理隊列,后續的Logstash worker每次從這個隊列中取走的數量叫batch。我也不知道這個要翻譯成什么。直譯過來有批處理的意思。
以平級的方式設置上面的內容:
```yaml
pipeline.batch.size: 125
pipeline.batch.delay: 50
```
`logstash.yml`中支持bash風格的環境變量來設置各項的值。
```yaml
pipeline:
batch:
size: ${BATCH_SIZE}
delay: ${BATCH_DELAY:50}
node:
name: "node_${LS_NODE_NAME}"
path:
queue: "/tmp/${QUEUE_DIR:queue}"
```
注意形如`${VAR_NAME:default_value}`這種寫法是支持的,如上面的示例中設定了一個batch延遲為50的默認值和`path.queue`的默認值為`/tmp/queue`。
> <font color=#1E90FF size=4>TIP</font>:`${VAR_NAME:default_value}`這種寫法的意思是如果變量有值,就用變量里的值,如果變量為空,就用默認值。
模塊也可以在`logstash.yml`文件中進行配置。模塊定義的格式如下:
```yaml
modules:
- name: MODULE_NAME1
var.PLUGIN_TYPE1.PLUGIN_NAME1.KEY1: VALUE
var.PLUGIN_TYPE1.PLUGIN_NAME1.KEY2: VALUE
var.PLUGIN_TYPE2.PLUGIN_NAME2.KEY1: VALUE
var.PLUGIN_TYPE3.PLUGIN_NAME3.KEY1: VALUE
- name: MODULE_NAME2
var.PLUGIN_TYPE1.PLUGIN_NAME1.KEY1: VALUE
var.PLUGIN_TYPE1.PLUGIN_NAME1.KEY2: VALUE
```
> <font color=#FF0000 size=4>IMPORTANT</font>:如果在[命令行](http://www.hmoore.net/aiyinsi-tan/logstash/849601#CommandLine_Flags_22)中使用 `--modules`指定模塊選項,則文件中的定義會被忽略。
`logstash.yml`文件包含一下設置。如果你使用X-Pack,查看[X-Pack在Logstash中的設置](http://www.elastic.co/guide/en/logstash/6.x/settings-xpack.html)。
| Setting | Description(描述) | Default value(默認值) |
| ----------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| `node.name` | 節點的描述性名稱。 | Machine’s hostname |
| `path.data` | Logstash及其插件持久化的數據的目錄 | `LOGSTASH_HOME/data` |
| `pipeline.id` | The ID of the pipeline. | `main` |
| `pipeline.workers` | 管道中filter和output階段并行工作的worker的數量。 如果發現事件正在備份,或者CPU未飽和,請考慮增加此數量以更好地利用機器處理能力。 | CPU核心數量 |
| `pipeline.batch.size` | 前面有提到,用來定義worker每次從inputs發送到中央隊列中取出的batch的數量。更大的數量通常意味著更好的性能,但也會占用更多的內存,你可以在 `jvm.options`文件中增加JVM堆空間。更多信息參考: [Logstash配置文件](http://www.hmoore.net/aiyinsi-tan/logstash/849598) | `125` |
| `pipeline.batch.delay` | 當創建管道數據batch都時候,worker等待inputs數據的時間,即使沒有拿到`batch.size`定義的數據量。 | `50` |
| `pipeline.unsafe_shutdown` | 當此項設置為`true`的時候,在收到shutdown事件的時候Logstash會強制退出,即使仍有數據在內存中。默認情況下,Logstash會拒絕退出直到所有接收到的數據發送給outputs。啟用此選項可能導致在關閉期間丟失數據。 | `false` |
| `path.config` | 指定主管道配置文件路徑,如果路徑是目錄或者通配符,Logstash會根據字母順序進行讀取。 | 根據平臺而異,參考: [Logstash 目錄布局](https://www.elastic.co/guide/en/logstash/current/dir-layout.html). |
| `config.string` | 包含用于主管道配置的一個字符串。和配置文件語法相同。 | None |
| `config.test_and_exit` | 當此項設置為`true`的時候,會檢查配置文件,在完成之后退出。注意此項設置不會檢查Grok匹配的正確性。 Logstash 可以從目錄中讀取多個配置文件。如果此項配置結合 `log.level: debug`,Logstash會對組合的配置的每一個配置添加注釋。(Logstash會將配置文件中的每一項以Debug的形式顯示出來) | `false` |
| `config.reload.automatic` | 當此項設置為`true`的時候,程序會周期性的檢查配置文件的變化,并在有變化的時候重新加載配置文件。可以通過給進程發送SIGHUP信號來重讀配置文件。 | `false` |
| `config.reload.interval` | Logstash檢查配置文件變動的頻率。 | `3s` |
| `config.debug` | 設置為 `true`的時候,將完整的編譯配置作為debug日志消息。同時必須設置 `log.level: debug`. WARNING: 日志信息會包含明文密碼。可能會導致你的密碼明文出現在你的日志中。原文:The log message will include any *password* options passed to plugin configs as plaintext, and may result in plaintext passwords appearing in your logs! | `false` |
| `config.support_escapes` | 設置為`true`之后,將處理一下轉意: `\n` 轉成換行符 (ASCII 10). `\r` 轉成回車(ASCII 13). `\t` 轉成tab (ASCII 9). `\\` 轉成"\\"本身 `\`. `\"` 變成雙引號 `\'`變成引號 | `false` |
| `modules` | When configured, `modules` must be in the nested YAML structure described above this table. | None |
| `queue.type` | 用于事件緩沖的內部隊列模型。 設置為 `memory` 使用基于內存的隊列, 或設置為 `persisted` 使用基于磁盤的 ACKed 隊列 ([persistent queues](https://www.elastic.co/guide/en/logstash/current/persistent-queues.html)). | `memory` |
| `path.queue` | 啟用持久化隊列時的數據存儲目錄。 (`queue.type: persisted`). | `path.data/queue` |
| `queue.page_capacity` | 啟用持久化隊列時可以使用的頁面文件大小。 (`queue.type: persisted`). The queue data consists of append-only data files separated into pages. | 64mb |
| `queue.max_events` | 啟用持久化之后隊列中未讀事件的最大數量。 (`queue.type: persisted`). | 0 (unlimited) |
| `queue.max_bytes` | 隊列最大的容量,以字節為單位,確保你定義的位置的磁盤上有足夠的空間。 如果`queue.max_events`和`queue.max_bytes`同時定義,先到達的會生效。也就是小的生效。 | 1024mb (1g) |
| `queue.checkpoint.acks` | 持久化隊列開啟的情況下,強制檢查點之前ACKed事件的最大數量。 (`queue.type: persisted`)。 設置為0表示不限制:`queue.checkpoint.acks: 0` | 1024 |
| `queue.checkpoint.writes` | 持久化隊列開啟的情況下,強制檢查點之前writes事件的最大數量。 (`queue.type: persisted`)。 設置為0表示不限制:`queue.checkpoint.writes: 0` | 1024 |
| `queue.drain` | 開啟之后,Logstash處理完成持久化隊列之后才會關閉。 | false |
| `dead_letter_queue.enable` | 開啟由插件提供的DLQ功能。 | `false` |
| `dead_letter_queue.max_bytes` | 每個dead letter隊列的最大值。 超出的部分會被刪除。 | `1024mb` |
| `path.dead_letter_queue` | 存儲dead-letter隊列的目錄。 | `path.data/dead_letter_queue` |
| `http.host` | 設置綁定的IP地址 | `"127.0.0.1"` |
| `http.port` | 設置綁定的端口 | `9600` |
| `log.level` | 設置日志級別,有以下幾種: `fatal` `error` `warn` `info` `debug` `trace` | `info` |
| `log.format` | 設置日志格式。設置為`json`以JSON格式記錄日志。或這只為 `plain` 使用 `Object#.inspect`記錄日志。(應該是設置Logstash日志格式) | `plain` |
| `path.logs` | The directory where Logstash will write its log to. | `LOGSTASH_HOME/logs` |
| `path.plugins` | 指定Logstash搜索插件的目錄,可以多次設置以設置多個查檢目錄。目錄必須遵循以下結構: `PATH/logstash/TYPE/NAME.rb`其中`TYPE` is `inputs`, `filters`, `outputs`, 或 `codecs`, `NAME`就是插件的名字。 | 根據平臺有差異,參考 [Logstash 目錄布局](https://www.elastic.co/guide/en/logstash/current/dir-layout.html). |
- 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模塊