用Fluentd实现收集日志到HDFS(上)

版权声明:本文来自行者(http://blog.csdn.net/liuyuan185442111),转载请注明出处。 https://blog.csdn.net/liuyuan185442111/article/details/47057571

Fluentd是一个实时日志收集系统,它把日志作为JSON stream,可以同时从多台server上收集大量日志,也可以构建具有层次的日志收集系统。
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 startservice 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>

---------------------

本文来自 liuyuan185442111 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/liuyuan185442111/article/details/47057571?utm_source=copy 

当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>

---------------------

本文来自 liuyuan185442111 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/liuyuan185442111/article/details/47057571?utm_source=copy 

重启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的间隔

---------------------

本文来自 liuyuan185442111 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/liuyuan185442111/article/details/47057571?utm_source=copy 

 

当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的具体细节。

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值