文章目录
td-agent安装
适于于Redhat&Centos的安装方式:
$ curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh
启动td-agent服务并设置开机自启动:
$ sudo /etc/init.d/td-agent start
Starting td-agent: [ OK ]
$ sudo /etc/init.d/td-agent status
td-agent (pid 21678) is running…
$ chkconfig td-agent on
测试一下td-agent是否正常工作:
td-agent默认被配置为从http获取日志,并将其路由到/var/log/td-agent/td-agent.log文件中
$ curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test
td-agent插件
td-agent的很多功能实现是通过安装插件来完成的,举个例子,如果想把日志路由到amazon的s3服务,则我们要安装fluent-plugin-s3这个插件:
$ sudo /usr/sbin/td-agent-gem install fluent-plugin-s3
查看插件是否安装成功:
td-agent-gem list | grep s3
下面地址包含了td-agent所有的可用插件:
https://www.fluentd.org/plugins
下面来做一个小demo,完成从使用td-agent收集日志到日志处理的部分流程
Demo
日志处理流程简图:
流程简介:
EC2上安装了td-agent,负责收集节点上相关日志,Logserver上也安装了td-agent,对EC2上发来的日志进行集中处理,比如将日志路由到amzon的kinesis(基于apache kafka的实现),或者是amzonS3存储,再根据相关需要将日志打到elasticSearch。
step1:
第一步我这里先实现日志从EC2打入Log Server,LogServer这里我们按两台进行配置,以实现高可用,网络拓扑图如下:
node上td-agent的配置:
# 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.
<buffer>
flush_interval 60s
</buffer>
</match>
LogServer上的配置:
# Input
<source>
@type forward
port 24224
</source>
# Output
<match mytag.**>
@type file
path /var/log/fluent/myapp
compress gzip
<buffer>
timekey 1d
timekey_use_utc true
timekey_wait 10m
</buffer>
</match>
在node节点上,使用curl命令生成可以被td-agent匹配的日志:
curl -i -X POST -d 'json={"action":"login","user":2}' http://localhost:8888/mytag.test
Logserver指定目录生成的log文件:
[root@bogon myapp]# pwd
/var/log/fluent/myapp
[root@bogon myapp]# ls
buffer.b57e22f65d19fcc1fad19d6ae8f79d79c.log
buffer.b57e22f65d19fcc1fad19d6ae8f79d79c.log.meta
[root@bogon myapp]#
常见的问题:
1.使用td-agent向es上打数据,过几天发现es上数据中断,查看td-agent日志发现一系列的timeout, 连接es失败,但es是正常的,重启可以恢复,但不持久,后来更换了td-agent的es插件解决了问题:
td-agent-gem install fluent-plugin-elasticsearch -v 2.12.1
td-agent-gem uninstall fluent-plugin-elasticsearch -v 3.1.0
原文链接:EFK集群之td-agent部署,转载请注明来源!