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

news/2024/5/20 4:29:33 标签: fluentd, hdfs

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>

当mytemp.log有更新时,更新内容会添加到access文件中。

hdfs">输出到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的具体细节。


http://www.niftyadmin.cn/n/1453374.html

相关文章

判断字段是否存在的SQL语句写法

如果需要判断添加列的表中是否有主键&#xff0c;或者是判断字段是否存在&#xff0c;应该怎么做呢&#xff1f;下面就为您介绍实现该功能的SQL语句写法&#xff0c;供您参考学习。 AD&#xff1a; 下文为您介绍的SQL语句可以实现判断字段是否存在&#xff0c;并判断添加列的表…

Codeforces 383C Propagating tree(树状数组)

题目链接&#xff1a;Codeforces 383C Propagating tree 题目大意&#xff1a;给出一颗有n个节点并一1为根节点的树&#xff0c;每个节点有它的权值&#xff0c;现在进行m次操作&#xff0c;操作分为添加和查询&#xff0c;当一个节点的权值添加val&#xff0c;则它的孩子节点的…

117. 填充同一层的兄弟节点 II

https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node-ii/ 和116一样层序 import Queue class Solution:# param root, a tree link node# return nothingdef connect(self, root):if not root:return Noneq Queue.Queue()q.put(root)while not q.…

载入背景图片

先载入一张图片, .。ID为IDB_BITMAP1CBrush m_brBk;//在public中定义 #pragma once// LoginDlg 对话框class LoginDlg : public CDialog {DECLARE_DYNAMIC(LoginDlg)public:LoginDlg(CWnd* pParent NULL); // 标准构造函数virtual ~LoginDlg();// 对话框数据enum { IDD ID…

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

本篇主要包含Fluentd的配置文件格式&#xff0c;in_tail输入插件&#xff0c;out_webhdfs输出插件的部分内容。 Fluentd的配置文件主要包含以下字段 source&#xff0c;决定数据来源match&#xff0c;决定输出目的地filter&#xff0c;在输入与输出之间&#xff0c;用来过滤s…

jquery文档处理如after错误

$(.foo).after(<li>0<li>)会添加两个元素   $(.foo).after(<li>o</li>)只会添加一个元素 所以需要记住添加元素时要加结束符号(反斜杠)/;转载于:https://www.cnblogs.com/zuoxiaobing/p/3572357.html

【索引】CodeForces Round #225 (Div. 2)

Problem A: Coder(384A) Problem B: Multitasking(384B) Problem C: Milking cows(383A) Problem D: Volcanoes(383B) Problem E: Propagating tree(383C)

读《人月神话》

为什么中国的程序员总是在不断学习新的开发工具、钻研程序代码&#xff0c;而不能逐步提升自己的视野、思维和经验&#xff1f; ——摘自序 所谓人月&#xff08;Man-Month&#xff09;&#xff0c;是软件开发中工作量的度量&#xff0c;然而它却不是线性的&#xff0c;10个人…