k8s-日志采集:方案2

基于fluentd。

日志目录:/tmp

0.运行机制

利用fluentld采集日志,上传到kafka。

ccs-log-collector会检测“日志规则”的变化,调用logController.Sync()[1.将collector资源转换成fluentd的配置文件;2.确保/var/log/td-agent/buffer和/var/log/td-agent/pos仅包含需要采集的日志(仅删除文件)]

1.采集日志目录

/var/log/td-agent/buffer

/var/log/td-agent/pos

pod中/var/log/td-agent,对应host路径/tmp/ccs-log-collector。

1.1buffer

ccs.cluster.log_collector.buffer.<日志采集规则名>.<>.log

日志

ccs.cluster.log_collector.buffer.<日志采集规则名>.<>.log.meta

 

 

1.2pos

ccs.cluster.log_collector.pos.all

ccs.cluster.log_collector.pos.host-path.<日志采集规则名>

 

2.flentd

2.1配置文件

/tmp/fluentd-helper<数字>

1)容器日志配置

// 定义输入源
<source>
  @type tail // 想要的输入类型, 和 tail -f 非常相似
  time_format %Y-%m-%dT%H:%M:%S.%NZ
  path /rootfs/var/log/containers/*.log
  pos_file /var/log/td-agent/pos/ccs.cluster.log_collector.pos.all
  tag ccs.* // 在这个源创建的每个标签前加上ccs.
  format json
  keep_time_key true
  read_from_head true // 表示读取整个文件,而不只是新的日志行
  @label @ServiceLog // 引用标签@ServiceLog
</source>
<label @ServiceLog>
// 过滤器:利用过滤插件record_transformer,为每条日志添加log属性
  <filter **>
    @type record_transformer
    enable_ruby
    <record>
      log ${record['log'].length > 524288 ? record['log'][0..524288] : record['log']}
    </record>
  </filter>
// 提取tag中的关键信息来向kubernetes查询Pod和Namespace上的Label,并将其添加到日志的json结构体内
  <filter ccs.**>
    @type kubernetes_metadata
    kubernetes_url https://172.16.252.1:443
    ca_file /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    bearer_token_file /var/run/secrets/kubernetes.io/serviceaccount/token
  </filter>
// 定义输出:针对ccs.**标签
  <match ccs.**>
    @type rewrite_tag_filter // fluent-plugin
    <rule>
      key $.kubernetes.log
      pattern .+
      tag USE_MATCHED_VALUE
    </rule>
  </match>
// 定义输出:针对*_*标签=>kafka
  <match *_*>
      @type kafka_buffered
      brokers 134.0.0.9:8080 // 用户定义的kafka地址
      <buffer>
        flush_mode interval
        retry_type exponential_backoff
        total_limit_size 32MB
        chunk_limit_size 4MB
        chunk_full_threshold 0.8
        @type file
        path /var/log/td-agent/buffer/ccs.cluster.log_collector.buffer.www.*  // 缓冲区中文件名
        overflow_action block
        flush_interval 4s
        flush_thread_burst_interval 0.01
      </buffer>

      default_topic wsxdef // topic名
      output_data_type json
      topic_key ccs_log_collect_topic
      partition_key ccs_log_collect_partition
      partition_key_key ccs_log_collect_partition_key
      message_key_key ccs_log_collect_message_key

      max_send_retries 1
      required_acks 1
  </match>
</label>

2)主机文件配置

<source>
  @type tail
  path /rootfs/data
  pos_file /var/log/td-agent/pos/ccs.cluster.log_collector.pos.host-path.wwwxxx
  tag host.path.*
  format none
  read_from_head true
  path_key path
  @label @ccs.cluster.log_collector.label.wwwxxx
</source>
<label @ccs.cluster.log_collector.label.wwwxxx>
  <filter **>
    @type record_transformer
    enable_ruby
    <record>
      path ${record["path"].start_with?("/rootfs") ? record["path"][7..record["path"].length] : record["path"]}
      message ${record['message'].length > 524288 ? record['message'][0..524288] : record['message']}
    </record>
  </filter>
  <match **>
    @type kafka_buffered
    brokers 134.0.0.9:8080
    <buffer>
      flush_mode interval
      retry_type exponential_backoff
      total_limit_size 32MB
      chunk_limit_size 4MB
      chunk_full_threshold 0.8
      @type file
      path /var/log/td-agent/buffer/ccs.cluster.log_collector.buffer.wwwxxx.host-path
      overflow_action block
      flush_interval 4s
      flush_thread_burst_interval 0.01
    </buffer>
    default_topic wsxdef
    output_data_type json
    max_send_retries 1
    required_acks 1
    topic_key ccs_log_collect_topic
    partition_key ccs_log_collect_partition
    partition_key_key ccs_log_collect_partition_key
    message_key_key ccs_log_collect_message_key
  </match>
</label>

2.2 插件

fluent-plugin-kubernetes_metadata_filter

fluent-plugin-rewrite-tag-filter

3)kafka插件

Fluent之kafa传输日志(第二章)-yellowcong_狂飙的yellowcong的博客-CSDN博客_fluent kafka

3.ccs-log-collector组件

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值