日志收集工具Fluentd使用总结

fluentd是一个很是优秀的日志收集工具,这里我主要用它来收集docker-swarm集群的各个容器的日志。git

fluentd使用插件:github

用于路径中加入tag:fluent-plugin-forestdocker

用于修改record:fluent-plugin-record-reformerjson

用于修改tag:fluent-plugin-rewrite-tag-filter服务器

用于正则匹配日志内容,进行筛选:fluent-plugin-grep负载均衡

 

Shell异步

 

1工具

2测试

3spa

4

5

6

7

# 客户端须要安装的插件

/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-rewrite-tag-filter

/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-grep

/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-record-reformer

# 服务器端须要安装的插件

/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-forest

 

fluentd安装-基本文件路径-插件安装

fluentd-安装:http://www.imekaku.com/2016/09/05/fluentd-install/

安装完成后,须要先去官网了解其基本的使用方法,使用实例等等。

fluentd配置文件所在目录:/etc/td-agent/

fluentd二进制文件所在目录:/opt/td-agent/embedded/bin/

安装插件的方法:/opt/td-agent/embedded/bin/fluent-gem install [插件名称]

docker中log-driver使用fluentd

Docker日志使用Fluentd收集:http://www.imekaku.com/2016/09/08/docker-log-fluentd/

须要注意:log-drive的几个选项,特别是异步的选项,由于若是没有设置为异步,fluentd挂了,容器就挂了。

fluentd的client-server模式收集日志

若是每台宿主机上的fluentd收集容器的日志以后,存放在本地,那么仍然不便于日志的概括整理。

Fluentd 配置文件-client fluentd 到 server fluentd:http://www.imekaku.com/2016/09/14/fluentd-configure-client-server/

在这篇文章中,对docker的log-driver的几个选项也有了一个比较详细的介绍。

初步创建了一个client到server的高可用模型。

fluentd输出

  • fluentd服务器端收集日志,放在指定的目录

Fluentd 服务器log aggregators根据tag输出到指定路径:http://www.imekaku.com/2016/09/14/fluentd-log-aggregators-tag-path/

收集到的日志但愿按照不一样的类别,放在不一样的目录

  • 区别docker的stdout和stderr来源,从而放在不一样的路径

Fluentd将Docker log中stdout和stderr分开:http://www.imekaku.com/2016/09/18/fluentd-docker-log-stdout-stderr/

从docker容器中收集的日志,主要有两个来源,分别是stdout和stderr,但愿可以区分它们,而且把它们输出到指定目录

  • 从fluentd输出的日志文件中提取单个字段

Fluentd提取发送日志中的value-SingleValue:http://www.imekaku.com/2016/09/18/fluentd-remove-time-tag-to-only-value/

从docker容器中提取出来的日志,不管是从stdout中或者是stderr中的日志,fluentd都会放在日志的log字段(fluentd的日志是json格式),因此若是但愿提取log字段的信息,从而去除日志中的其余信息的话,可使用这种方式。

  • 根据日志的不一样来放在不一样的路径

Fluentd使用正则匹配log内容,输出到不一样的存储介质:http://www.imekaku.com/2016/09/20/fluentd-regexp-log-output-different-disk/

因为日志的内容可能会比较多,可能会但愿过滤掉一些日志,或者根据日志内容的不一样,放在不一样的目录。

  • 在fluentd日志输出的路径,或者文件名中加上时间

Fluentd在输出日志的路径中加入时间:http://www.imekaku.com/2016/09/26/fluentd-put-time-in-path/

在fluentd的输出日志文件名是有时间的,是根据time_slice_format来分割的,可是每每会但愿在路径中也加入时间,从而根据路径筛选出不一样的日志,避免大量的日志产生干扰。或者但愿日志的文件前面加上日志,这样能够根据时间进行排序。

  • fluentd日志文件的命令规则

Fluentd输出日志文件命名规则:http://www.imekaku.com/2016/09/21/fluentd-log-filename/

fluentd日志的命令规则主要是根据time_sllice_format设置选项来切割的。若是须要设置5分钟,3分钟一次输出,就须要设置flush_interval选项的时间。或者设置chunk的大小。

docker缓冲区-fluentd缓冲区

Docker-log-driver缓冲区&Fluentd out_file, out_forward缓冲区:http://www.imekaku.com/2016/09/19/docker-log-driver-buff-fluentd-buff/

当客户端fluentd挂了的时候,docker容器会打在本身的缓冲区;

当服务器端fluentd挂了的时候,fluentd客户端会首先找负载均衡的另外一个节点,或者找二级节点,或者找助手节点,若是都挂了,fluentd客户端会将日志打在本身的缓冲区。

这篇文章就讲了docker的缓冲区和fluentd的缓冲区。

fluentd本身的日志输出

fluentd本身的日志:http://www.imekaku.com/2016/09/23/fluentd-own-log/

swarm集群中使用fluentd

Docker Swarm使用fluentd收集日志:http://www.imekaku.com/2016/09/19/docker-swarm-fluentd/

Docker Swarm集群使用fluentd收集日志:http://www.imekaku.com/2016/09/22/docker-swarm-clusters-fluentd-collect-log/

使用fluentd主要的目的也是但愿可以收集swarm集群中的日志。swarm中使用fluentd和直接使用docker run建立容器收集日志的选项是相同的。

fluentd配置文件测试和配置文件经常使用方案

Fluentd日志输出测试-配置文件:http://www.imekaku.com/2016/09/19/fluentd-log-test01/

Fluentd经常使用配置文件方案:http://www.imekaku.com/2016/09/23/fluentd-configuration-always/

转载请注明:Imekaku-Blog » 日志收集工具Fluentd使用总结

相关文章
相关标签/搜索