1.fluentd说明
参考官网https://www.fluentd.org/定义,fluentd是一套开源的日志收集器,类似ELK中logstash、阿里云的logtail这样的服务。
2.可用配置(基于windows)
<match test.*.*>
@type forest
subtype file
<template>
time_slice_format %Y-%m-%d
output_tag false
output_time false
path C:\opt\td-agent\log\${tag_parts[0]}
# format single_value
flush_interval 2s
buffer_path C:\opt\td-agent\buffer\${tag_parts[0]}
append true
num_threads 1
</template>
</match>
上面是一套匹配test..这样tag的日志收集配置,具体说明:
2.1@type forest
指定使用的type,这里是用的forest,一种input 插件;前提是需要安装模块:
fluent-gem install fluent-plugin-forest
2.2根据时间分割
time_slice_format %Y-%m-%d 表示按天
2.3去掉默认添加的时间和tag
output_tag false
output_time false
2.4 format single_value
可用于单列提取,比如原始日志有多个字段但是我们只需要一列,这时候就可以使用
2.5 tag_parts
这个是系统变量,是指tag根据点号分割的数据,下标从0开始。比如我的tag是test.action.pay,那么${tag_parts[1]}就是action
3 其它
3.1 性能比较
没有具体测试过,网上分析fluentd是优于logstash,但是插件丰富程度要差一些。
具体见:https://lintingbin2009.github.io/2018/10/04/Fluentd%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%E5%AE%9E%E8%B7%B5/
3.2 优化
flutentd是基于Ruby开发,Ruby有全局锁(GIL),因而在一个Ruby进程里面同时最多只有一个线程在运行。这样的话,Ruby的多线程对需要更多计算资源的操作显得无能为力,所以这会影响fluentd的性能,建议通过多进程来充分使用多核CPU,推荐部署架构:
综合
总体来看fluentd使用还是比较简单方便的,值得学习和使用下,具体性能方面后期有进一步研究再补充。