公司项目采用Docker技术进行了分布式部署,每个服务有多个实例进行负载均衡,出现问题查日志变得异常痛苦,这时发现了比较常用的一种解决方案——ELK(ElasticSearch + Logstash + Kibana)。
这里是Logstash配置文件中的配置项说明,翻译自官方文档——logstash-settings-file章节,如有不当之处,希望大家可以帮忙指出。
| setting | 说明 | 默认值 |
|---|---|---|
| node.name | 节点名称。 | 机器的hostname |
| path.data | logstash和他的插件数据持久化目录。 | LOGSTASH_HOME/data |
| pipeline.workers | workers的数量,即同时并行处理过滤和输出的管道数量。如果是备份或者CPU空闲较大,可以考虑增加这个值来更有效的利用资源。 | CPU核心数量 |
| pipeline.output.workers | 每个输出插件实例使用的workers数量。 | 1 |
| pipeline.batch.size | 在过滤和输出之前,每个线程从输入收集的最大数量。通常较大的批处理数量会有更高的性能,但也增加了内存消耗。你可能需要增加JVM堆内存,使用变量LS_HEAP_SIZE来更有效但使用这个选项。 |
125 |
| pipeline.batch.delay | 批处理调度延时,单位毫秒。 | 5 |
| pipeline.unsafe_shutdown | 不安全关闭。当这个选项设置为true时,关闭Logstash时即会退出,不论内存中是否有未完成的事件。而默认情况下,Logstash会将所有接收到的事件全部推送到输出后才会退出。启用后将可能导致数据丢失。 |
false |
| path.config | 管道配置文件路径。如果指定的是一个目录或者是通配符,将从目录读取所有配置并按字母顺序排序。 | 不同平台路径不同。具体参见Logstash目录结构。 |
| config.string | 管道配置字符串,格式和配置文件一样。 | None |
| config.test_and_exit | 检查配置,检查完成后退出。欣赏模式不会根据此设置检查有效性。 | false |
| config.reload.automatic | 自动重新加载配置。也可以通过SIGHUP信号激活。 | false |
| config.reload.interval | 检查配置文件变化频率,单位秒。 | 3 |
| config.debug | 设置为true时,将以debug形式打印所有加载配置信息(必须同时设置log.level: debug)。注意:配置中的密码有可能以明文的形式出现在日志文件中。 |
false |
| queue.type | 内部缓冲队列模型,memory为基于内存的队列模型,persisted为基于磁盘的队列模型,persisted相关参见。 |
memory |
| path.queue | 队列数据文件存放目录。当设置queue.type: persisted时,才需指定。 |
path.data/queue |
| queue.page_capacity | 页面数据容量。当设置queue.type: persisted时,才需指定。 |
250mb |
| queue.max_events | 最大未读事件。当设置queue.type: persisted时,才需指定。 |
0 (不限制) |
| queue.max_bytes | 队列总容量,确保小于磁盘可用容量。当设置queue.type: persisted时,才需指定。如果queue.max_events和queue.max_bytes同时设置,Logstash将以先达到的为准。 |
1024mb (1g) |
| queue.checkpoint.acks | 强制检查点前最大ACK数量。当设置queue.type: persisted时,才需指定。设置为0为不限制。 |
1024 |
| queue.checkpoint.writes | 强制检查点前最大写事件数量。当设置queue.type: persisted时,才需指定。设置为0为不限制。 |
1024 |
| queue.checkpoint.interval | 强制检查页面文件头的间隔。当设置queue.type: persisted时,才需指定。设置为0将不进行周期性检查。 |
1000 |
| queue.drain | 设置为true时,Logstash将等待队列消费完后才会退出。 |
false |
| dead_letter_queue.enable | 是否启用DLQ插件 | false |
| dead_letter_queue.max_bytes | 每个DLQ的最大大小。超过这个大小的条目将被忽略。 | 1024mb |
| path.dead_letter_queue | 存储DLQ的目录路径。 | path.data/dead_letter_queue |
| http.host | REST接口绑定地址。 | 127.0.0.1 |
| http.port | REST接口绑定端口。 | 9600 |
| log.level | 日志级别。fatal error warn info debug trace |
info |
| log.format | 日志格式化方式。使用json将日志格式化为JSON形式,使用plain将日志格式化为Object#.inspect |
plain |
| path.logs | 日志打印位置。 | LOGSTASH_HOME/logs |
| path.plugins | 自定义插件路径。可以指定多次指定多个目录。插件目录结构:PATH/logstash/TYPE/NAME.rb其中TYPE为inputs、filters、outputs或codecs,NAME为插件名称。 |
不同平台路径不同。具体参见Logstash目录结构。 |