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 !
- 分组操作符:()
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。