### logstash.yml
你可以在此文件中设置如何运行Logstash。如:你可以对管道进行配置,设置配置文件的位置,日志文件的选项和其他设置。此文件中的大多数设置可以在[命令行运行](https://www.kancloud.cn/aiyinsi-tan/logstash/849601#CommandLine_Flags_22)Logstash的时候直接指定。所有在命令行指定的设置会覆盖此文件中的配置。
`logstash.yml`文件使用[YAML](http://yaml.org/)语言进行书写。此文件的位置因不同的平台有所不同,参考[Logstash目录布局](https://www.kancloud.cn/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>:如果在[命令行](https://www.kancloud.cn/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配置文件](https://www.kancloud.cn/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模块