Fluentd (td-agent) 日志收集系统
2013-06-04 16:20
525 查看
Fluentd是一个日志收集系统,它的特点在于其各部分均是可定制化的,你可以通过简单的配置,将日志收集到不同的地方。
目前开源社区已经贡献了下面一些存储插件:MongoDB, Redis, CouchDB,AmazonS3, Amazon SQS, Scribe, 0MQ, AMQP, Delayed, Growl等等。
安装
可参考http://docs.fluentd.org/categories/installation安装
此版本采用: Installingtd-agent for Redhat and CentOS
http://docs.fluentd.org/articles/install-by-rpm
Fluentd 是由Ruby和C编写的,需要ruby进行,然而安装td-agent 是fluentd
的易安装版本,不用考虑太多的依赖关系。
1.首先please create /etc/yum.repos.d/td.repo with the followingcontents.
[treasuredata]
name=TreasureData
baseurl=http://packages.treasure-data.com/redhat/$basearch
gpgcheck=0
Then,you can install via yum command.
2. $ yumupdate
$ yuminstall td-agent
3. 安装完成后,可使用以下方式启动关闭服务。
$ /etc/init.d/td-agent start
$ /etc/init.d/td-agent stop
$/etc/init.d/td-agent restart
4. 默认的
5. 查看td-agent的安装
6.查看ruby fluent插件的列表:ruby的安装路径在/usr/lib64/fluent/ruby/
fluent-plugin-tail-ex与fluent-plugin-tail-multiline为后期安装的插件,其他的为安装td-agent后默认安装的插件。
fluent-plugin-tail-ex:为输入扩展插件,支持对文件路径、日期的扩展
fluent-plugin-tail-multiline:为输入扩展插件,支持多行数据的收集,能够更好的收集异常信息。
5. 插件安装
Fluent插件地址http://fluentd.org/plugin/
两种安装方法:
1) 可以本地安装,下载gem安装包 https://rubygems.org/gems,推荐此方法
2) ruby库远程安装
两种方法的安装命令为:$ /usr/lib64/fluent/ruby/bin/gem install 插件名称
6. 配置
首先我们编辑配置文件/etc/td-agent/td-agent.conf 中的source来设置日志来源
其中:
type tail: tail方式是 Fluentd 内置的输入方式,其原理是不停地从源文件中获取增量日志,与linx命令tail相似,也可以使用其他输入方式如http、forward等输入,也可以使用输入插件,将 tail 改为相应的插件名称 如: type tail_ex ,注意tail_ex为下划线。
format apache: 指定使用 Fluentd 内置的 Apache 日志解析器。可以自己配置表达式。
path /var/log/apache2/access_log: 指定收集日志文件位置。
Pos_file /var/log/apache2/access_log.pos:强烈建议使用此参数,access_log.pos文件可以自动生成,要注意access_log.pos文件的写入权限,因为要将access_log上次的读取长度写入到该文件,主要保证在fluentd服务宕机重启后能够继续收集,避免日志数据收集丢失,保证数据收集的完整性。
tag mongo.apache: 指定tag,tag被用来对不同的日志进行分类,与后面的标签match相匹配。
下面再来编辑输出配置,配置日志收集后存储到MongoDB中,也可以输出到其他组件如文件,转发等。
match标签后面可以跟正则表达式以匹配我们指定的tag,只有匹配成功的tag对应的日志才会运用里面的配置。配置中的其它项都比较好理解,看注释就可以了,其中flush_interval是用来控制多长时间将日志写入MongoDB一次。
7.高可用的配置:http://docs.fluentd.org/articles/high-availability
8.fluent对java的支持:fluent-logger-java is
a Java library, to record events via Fluentd, from Java application.
http://fluentd.org/releases/java/ 可下载最新的jar
配置fluentd服务器端/etc/td-agent/td-agent.conf
添加:
2013-06-06 12:56:01 +0800 app.follow: {"to":"bbb","from":"aaa"}
目前开源社区已经贡献了下面一些存储插件:MongoDB, Redis, CouchDB,AmazonS3, Amazon SQS, Scribe, 0MQ, AMQP, Delayed, Growl等等。
安装
可参考http://docs.fluentd.org/categories/installation安装
此版本采用: Installingtd-agent for Redhat and CentOS
http://docs.fluentd.org/articles/install-by-rpm
Fluentd 是由Ruby和C编写的,需要ruby进行,然而安装td-agent 是fluentd
的易安装版本,不用考虑太多的依赖关系。
1.首先please create /etc/yum.repos.d/td.repo with the followingcontents.
[treasuredata]
name=TreasureData
baseurl=http://packages.treasure-data.com/redhat/$basearch
gpgcheck=0
Then,you can install via yum command.
2. $ yumupdate
$ yuminstall td-agent
3. 安装完成后,可使用以下方式启动关闭服务。
$ /etc/init.d/td-agent start
$ /etc/init.d/td-agent stop
$/etc/init.d/td-agent restart
4. 默认的
/etc/td-agent/td-agent.conf为td-agent的配置文件
/var/log/td-agent/td-agent.log为td-agent的日志文件
5. 查看td-agent的安装
6.查看ruby fluent插件的列表:ruby的安装路径在/usr/lib64/fluent/ruby/
fluent-plugin-tail-ex与fluent-plugin-tail-multiline为后期安装的插件,其他的为安装td-agent后默认安装的插件。
fluent-plugin-tail-ex:为输入扩展插件,支持对文件路径、日期的扩展
fluent-plugin-tail-multiline:为输入扩展插件,支持多行数据的收集,能够更好的收集异常信息。
5. 插件安装
Fluent插件地址http://fluentd.org/plugin/
两种安装方法:
1) 可以本地安装,下载gem安装包 https://rubygems.org/gems,推荐此方法
2) ruby库远程安装
两种方法的安装命令为:$ /usr/lib64/fluent/ruby/bin/gem install 插件名称
6. 配置
首先我们编辑配置文件/etc/td-agent/td-agent.conf 中的source来设置日志来源
<source> type tail format apache path /var/log/apache2/access_log pos_file /var/log/apache2/access_log.pos tag mongo.apache </source>
其中:
type tail: tail方式是 Fluentd 内置的输入方式,其原理是不停地从源文件中获取增量日志,与linx命令tail相似,也可以使用其他输入方式如http、forward等输入,也可以使用输入插件,将 tail 改为相应的插件名称 如: type tail_ex ,注意tail_ex为下划线。
format apache: 指定使用 Fluentd 内置的 Apache 日志解析器。可以自己配置表达式。
path /var/log/apache2/access_log: 指定收集日志文件位置。
Pos_file /var/log/apache2/access_log.pos:强烈建议使用此参数,access_log.pos文件可以自动生成,要注意access_log.pos文件的写入权限,因为要将access_log上次的读取长度写入到该文件,主要保证在fluentd服务宕机重启后能够继续收集,避免日志数据收集丢失,保证数据收集的完整性。
tag mongo.apache: 指定tag,tag被用来对不同的日志进行分类,与后面的标签match相匹配。
下面再来编辑输出配置,配置日志收集后存储到MongoDB中,也可以输出到其他组件如文件,转发等。
<match mongo.**> # plugin type type mongo # mongodb db + collection database apache collection access # mongodb host + port host localhost port 27017 # interval flush_interval 10s </match>
match标签后面可以跟正则表达式以匹配我们指定的tag,只有匹配成功的tag对应的日志才会运用里面的配置。配置中的其它项都比较好理解,看注释就可以了,其中flush_interval是用来控制多长时间将日志写入MongoDB一次。
7.高可用的配置:http://docs.fluentd.org/articles/high-availability
# TCP input <source> type forward port 24224 </source> # HTTP input <source> type http port 8888 </source> # Log Forwarding <match mytag.**> type forward # primary host <server> host 192.168.0.1 port 24224 </server> # use secondary host <server> host 192.168.0.2 port 24224 standby </server> # use longer flush_interval to reduce CPU usage. # note that this is a trade-off against latency. flush_interval 60s </match>
8.fluent对java的支持:fluent-logger-java is
a Java library, to record events via Fluentd, from Java application.
http://fluentd.org/releases/java/ 可下载最新的jar
import java.util.HashMap; import java.util.Map; import org.fluentd.logger.FluentLogger; public class Main { private static FluentLogger LOG = FluentLogger.getLogger("app", "192.168.0.1", 24224); public static void main(String[] args) { // ... Map<String, String> data = new HashMap<String, String>(); data.put("from", "aaa"); data.put("to", "bbb"); LOG.log("follow", data); //... FluentLogger.close(); } }
配置fluentd服务器端/etc/td-agent/td-agent.conf
添加:
<source> ##必须启动tcp端口,端口号为24224,不加port属性默认为24224 type tcp port 24224 </source> ##app.** 与java中的app匹配 <match app.**> ##匹配输出到/var/log/td-agent/td-agent.log type stdout </match>查看td-agent.log输出结果:
2013-06-06 12:56:01 +0800 app.follow: {"to":"bbb","from":"aaa"}
相关文章推荐
- Fluentd (td-agent) 日志收集系统
- fluentd+mongodb构建分布式日志收集系统
- mac 环境安装日志收集系统搭建(Fluent,ES,Kibana)
- 使用Fluentd + MongoDB构建实时日志收集系统
- fluentd +mongodb 日志收集系统的部署
- 使用Fluentd + MongoDB构建实时日志收集系统
- 使用Fluentd + MongoDB构建实时日志收集系统
- Syslog+Fluentd+InfluxDB日志收集系统搭建
- 使用Fluentd + MongoDB构建实时日志收集系统
- kubernetes上部署Fluentd+Elasticsearch+kibana日志收集系统
- 使用Fluentd + MongoDB构建实时日志收集系统
- 基于Flume的美团日志收集系统(二)改进和优化
- ELK日志收集系统调研(一)---初识ELK(ES、LogStash、Kibana)
- 【Python】windows10搭建ELK5日志收集系统
- 用ElasticSearch,LogStash,Kibana搭建实时日志收集系统
- logstash+elasticsearch+redis+kibana3 日志收集系统搭建
- Molog:使用 Serverless 搭建的前端错误日志及事件收集系统
- 使用Fluentd和MongoDB构建日志收集系统
- FLUME日志收集系统搭建
- 基于Flume的美团日志收集系统(二)改进和优化