企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### 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). |