Fluent之kafa传输日志(第二章)-yellowcong

本文介绍如何使用Fluentd将多级目录下的日志数据输出至Kafka,包括安装配置流程及关键参数解析,并提供两种配置示例:不带缓存和带缓存的输出方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们需要做的,就是将监控的日志输出到kafka里面,这个里面监控的是多级目录。这个地方,需要安装kafka的插件,fluent 收集日志到kafka里面。

实验准备

Fluentd的安装与简单实用(第一章)-yellowcong

插件安装

安装kafka插件

#输出文件到kafka的插件
/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-kafka 
#安装最新的kafka
/opt/td-agent/embedded/bin/fluent-gem install ruby-kafka 

查看安装的插件

 /opt/td-agent/embedded/bin/fluent-gem list |grep kafka

这里写图片描述

删除插件

/opt/td-agent/embedded/bin/fluent-gem uninstall ruby-kafka

kafka输出配置

1 不带缓存

这种,是没有添加kafka的方式

<source>
  @type tail
  pos_file /gluster/logs/yellowcong/yellowcong_temp.pos
  path /gluster/logs/yellowcong/**/*.log
  format none
  tag yellowcong.temp
</source>
<match yellowcong.temp>
  @type kafka
  brokers 192.168.112.12:9092
  default_topic test
  output_data_type json
</match>

2 加缓存的配置

日志的目录/gluster/logs/yellowcong/2018/06/23-fasfaf.log

<source>
  @type tail
  pos_file /gluster/logs/yellowcong/yellowcong_temp.pos
  path /gluster/logs/yellowcong/**/*.log
  format none
  tag yellowcong.temp
</source>
<match yellowcong.temp>
  @type kafka_buffered
  brokers 192.168.112.12:9092
  
  # buffer settings
  buffer_type file
  buffer_path /var/log/td-agent/buffer/yellowcong.*.log
  flush_interval 60s
  buffer_chunk_limit 256m
  buffer_queue_limit 128

  #topic settings 
  default_topic test
  
  #thread setting 根据线程数目
  num_threads 4
  
  #data type sessint 
  output_data_type json
  compression_codec gzip
	
  # producer settings
  max_send_retries 1
  required_acks -1
  
  # 重试策略
  disable_retry_limit false
  retry_limit 17
  retry_wait 1s

  #超时设定,默认是20.0
  slow_flush_log_threshold 250.0
</match>

参数说明

这个地方,我说一些重要的参数。

1 buffer_type

这个地方缓存有三种,

类型特点
memory基于内存
file基于文件的缓存,如果用了这个类型的方式,就需要配置 buffer_path
2 flush_interval

默认是60s,刷新到目标,我们可以使用 “s” (seconds), “m” (minutes), and “h” (hours) 这些后缀

3 default_topic

设定发送到kafka的哪一个topic里面

4 flush_interval

刷buffer的间隔时间,每隔多长时间,就将buffer刷到kafka中,默认是60s钟,写一次buffer到目标服务。

5 buffer_chunk_limit

fluent传递日志的chunk默认是8MB,当数据满8MB后,就会被丢到queue中,每隔flush_interval

6 buffer_queue_limit

fluent的输出队列默认的显示是256

7 num_threads

刷新缓冲区的线程数。此选项可用于将写入并行到输出插件指定的输出中。增加线程数可提高刷新吞吐量,以隐藏写入/网络延迟。默认值为1。这个缓冲器的线程数,建议设定为物理机cpu的核心数目。

8 disable_retry_limit

消息自动重发策略,默认为false

9 retry_limit

重试的次数,默认17次

10 retry_wait

重试的等待时间,默认为1s

参考文档

https://www.jianshu.com/p/c8a5cd7f7f70

常见问题

1. Could not connect to any of the seed brokers

2018-06-27 17:22:26 +0800 [warn]: Send exception occurred: Could not connect to any of the seed brokers:
- kafka://192.168.112.12:9002: Connection refused - connect(2) for 192.168.112.12:9002

没有连接到kafka服务器。我查看了一下,是我的端口有问题啊,尴尬了
这里写图片描述

2. BufferOverflow occurred: Cannot produce to test, max buffer size (1000 messages) reached

由于不加缓存的这种方式,在消息队列比较大的情况下,就爆掉了,导致一些日志丢失。
这里写图片描述

3. buffer flush took longer time than slow_flush_log_threshold: plugin_id=“object:1d8281c” elapsed_time=227.446416143 slow_flush_log_threshold=20.0

刷新日志的时间太长了,解决办法,就是减小 flush_interval的时间。
这里写图片描述

参考文章

https://my.oschina.net/u/239075/blog/474296
https://wenku.baidu.com/view/66bf6577a8114431b80dd824.html
https://docs.fluentd.org/v0.12/articles/out_kafka

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂飙的yellowcong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值