用Fluentd实现收集日志到HDFS(上)
2015-07-26 17:16
501 查看
Fluentd是一个实时日志收集系统,它把日志作为JSON stream,可以同时从多台server上收集大量日志,也可以构建具有层次的日志收集系统。
Fluentd易于安装,有灵活的插件机制和缓冲,支持日志转发。它的特点在于各部分均是可定制化的,可以通过简单的配置,将日志收集到不同的地方。
Fluentd通过hadoop中的webHDFS与HDFS进行通信,所以在配置Fluentd时,一定要保证webHDFS能正常通信。
系统环境:CentOS 6.5
集群环境:Hadoop 2.2.0
参考Fluentd官网。
CentOS下可以直接运行以下命令安装:
可通过
配置文件:
重新加载配置文件:
td-agent的日志文件:
当mytemp.log有更新时,更新内容会添加到access文件中。
Fluentd通过webhdfs与HDFS通信,所以需要开启webhdfs。
设置Hadoop,修改配置文件hdfs-site.xml,加入:
重启Hadoop,新建一个目录用来存放日志:
td-agent配置文件中source部分不变,修改match部分:
当td-agent与namenode在一台物理机上时可以正常运行,当不在一台物理机上时,报“Connection refused”错误。
http://docs.fluentd.org/articles/quickstart
Fluentd+Hadoop结合进行日志收集、分析
http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=5636
接下来:
td-agent与namenode是否必须在一台物理机上?
现在采用了append的方式,对于HDFS来说效率较低,可以设置一个中间节点,收集了其他节点的日志之后,汇总成大文件,然后上传到HDFS。
td-agent的配置文件格式。
File Input和WebHDFS Output的具体细节。
Fluentd易于安装,有灵活的插件机制和缓冲,支持日志转发。它的特点在于各部分均是可定制化的,可以通过简单的配置,将日志收集到不同的地方。
Fluentd通过hadoop中的webHDFS与HDFS进行通信,所以在配置Fluentd时,一定要保证webHDFS能正常通信。
系统环境:CentOS 6.5
集群环境:Hadoop 2.2.0
参考Fluentd官网。
安装
td-agent是Fluentd的一个稳定版本。CentOS下可以直接运行以下命令安装:
curl -L https://td-toolbelt.herokuapp.com/sh/install-redhat-td-agent2.sh | sh
启动
管理脚本是:/etc/init.d/td-agent
可通过
/etc/init.d/td-agent start或
service td-agent start来启动
配置文件:
/etc/td-agent/td-agent.conf
重新加载配置文件:
service td-agent reload
td-agent的日志文件:
/var/log/td-agent/
配置
Fluentd自带多个输入插件和输出插件,这里先实现收集本地日志到本地文件。## File input <source> type tail path /var/log/mytemp.log pos_file /var/log/td-agent/mytemp.log.pos format none tag td.temp </source> #其中: #1.type tail: tail方式是Fluentd内置的输入方式,其原理是不停地从源文件中获取新的日志,相当于tail –f命令。 #2.path: 指定日志文件位置。 #3.pos_file:存储path中日志文件状态的文件。 #4.format none: 指定使用何种日志解析器。 #5.tag: tag被用来对不同的日志进行match。 ## File output <match td.temp> type file path /var/log/td-agent/access </match>
当mytemp.log有更新时,更新内容会添加到access文件中。
输出到HDFS
然后我尝试将收集的日志存放到HDFS上。Fluentd通过webhdfs与HDFS通信,所以需要开启webhdfs。
设置Hadoop,修改配置文件hdfs-site.xml,加入:
<property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <property> <name>dfs.support.append</name> <value>true</value> </property> <property> <name>dfs.support.broken.append</name> <value>true</value> </property>
重启Hadoop,新建一个目录用来存放日志:
hadoop fs -mkdir /log/ hadoop fs -chmod 777 /log/
td-agent配置文件中source部分不变,修改match部分:
<match td.temp> type webhdfs host namenodehost port 50070 path /log/a.log flush_interval 5s </match> # flush_interval标识数据写入HDFS的间隔
当td-agent与namenode在一台物理机上时可以正常运行,当不在一台物理机上时,报“Connection refused”错误。
参考文献
fluentd官方文档http://docs.fluentd.org/articles/quickstart
Fluentd+Hadoop结合进行日志收集、分析
http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=5636
接下来:
td-agent与namenode是否必须在一台物理机上?
现在采用了append的方式,对于HDFS来说效率较低,可以设置一个中间节点,收集了其他节点的日志之后,汇总成大文件,然后上传到HDFS。
td-agent的配置文件格式。
File Input和WebHDFS Output的具体细节。
相关文章推荐
- [iOS]类似新浪微博或者人人客户端中,中间UITabBarItem只有图片,使图片居中的方法
- HDU 5312 Sequence
- Tair-淘宝自主开发的一个分布式key/value存储系统
- Number Guessing
- 6.1.Virtio 原理与Guest OS driver
- Workqueue机制的实现
- UIImage+ImageEffects
- 树莓派与arduino串行通信
- Can Live View boot up images acquired from 64bit OS evidence?
- HDOJ_Problem Archive_1005_Number Sequence
- Leetcode(62)(63) Unique Paths I II
- iOS中自定义UIImageView用TargetAction模式实现关灯小游戏
- U盘安装Ubuntu15.04 出现boot failed: please change disks and press a key to continue 错误
- Building an MFC project for a non-Unicode character set is deprecated
- MapReduce的KeyValueTextInputFormat
- HDU5312 Sequence
- [转] Compile、Make和Build的区别
- Rescue zoj1649 优先队列
- UILabel设置多种字体、颜色
- HDU 1047 Integer Inquiry【大数】