logstash 架构
-
pipeline
- input-filter-output 3 阶段解决流程
- 队列治理
- 插件生命周期治理
-
logstash event
- 外部流转的数据表现性时
- 原始数据在 input 被转换为 event 在 output event 被转换为指标格局数据
- 在配置文件中可对 event 中的属性进行增删改查
queue
- in memory 无奈解决 crash 宕机等状况 导致数据失落
-
persistent queue in disk
- 可解决 crash 等状况 数据不会失落
- 保证数据至多生产一次
- 充当缓冲区 代替 kafka 等音讯队列
- queue.type:persisted (default memory)
- queue.max_bytes:4gb 队列存储最大数据量
线程配置
- pipeline.workers|-w pipeline 线程数即 filter_output 解决线程数 默认是 cpu 核数
- pipeline.batch.size|-b batcher 一次批量获取待处理文档数 默认 125 能够依据输入进行调整 越大 占用的 heap 空间 能够通过 jvm.options 调整
- pipeline.batch.delay|-u Batcher 期待的时长 单位为 ms
配置
-
logstash 设置配置文件
- logstash.yml logstash 配置 例如 node.name path.data pipeline.workers queue.type
- jvm.options 批改 jvm 参数 例如 heap size
- pipeline 定义数据处理流程文件以 conf 结尾
多实例运行
- bin/logstash –path.settings instance1/2
- 不同的 instance 中批改 logstash.yml 自定义 path.data 确保其不雷同
pipeline 配置
用于配置 input filter output 插件
input{}
filter{}
output{}
次要的数值类型
- boolean : isFailed => true
- 数值类型 Number port=>33
- 字符串类型 String name=>”hello world”
-
数组
- users => [{id=>1, name=>bob},{id=>2, name=> lili}]
- path => [“/var/log/messages”,”/var/log/*.log”]
-
hash
match=>{"filed1" => "value1" "field2" => "value2"
}
- 正文 #
-
在配置中能够援用 logstash event 的属性 次要有两种形式
-
间接援用字符串
- 世界援用字段值 应用 [] 即可 例如 [request] ua
-
在字符串中以 sprintf 形式援用
- 应用 %{}来实现 例如 req => “request is %{request}”
-
- 反对条件判断语法 if expression {} else if expression {} else {}
-
表达式蕴含的操作符
- 比拟:== != <> <= >=
- 正则是否匹配:=~ !~
- 蕴含(字符串或者数组): in、not in
- 布尔操作符: and or nand xor !
- 分组操作符:()