flume 日志收集单节点
flume 是 cloudera公司研发的日志收集系统,采用3层结构:1. agent层,用于直接收集日志;2.connect 层,用于接受日志; 3. 数据存储层,用于保存日志。由一到多个master管理1和2层节点。
本文采用单节点试用flume日志处理。
flume 单节点使用示例
flume号称水道,其设计思路是水源(source)和水槽(sink)都是可以人意组合的。这样在汇集水的过程是非常灵活的。每一个逻辑节点由事件生产(source)和事件消费(sink)组成。从源拉取数据,从sink推走。单节点缺省sink是console。单节点源采用dump的方式。命令行 flume dump source
常用source源:
- console
- 标准输入控制台
- text(“filename”)
- 单文本文件源,一行一事件
- tail(“filename”)
- 和 Unix 的tail -F 类似。一行一事件。一直打开等待数据,会跟踪文件切换。
- multitail(“file1″[, "file2"[, …]])
- 同 tail 源类似,但可以跟踪多文件。
- asciisynth(msg_count,msg_size)
- 一个源,用于产生msg_count 个msg_size大小的随机消息,转成可打印 ASCII字符。
- syslogUdp(port)
- UDP 端口上的 Syslog,和syslog兼容。
- syslogTcp(port)
- TCP 端口上的 Syslog,和syslog-ng兼容。
- [zhouhh@Hadoop48 ~]$ flume dump console
- 你好
- Hadoop48 [INFO Mon Jan 21 11:37:52 CST 2013] ??
- haha
- Hadoop48 [INFO Mon Jan 21 11:37:56 CST 2013] haha
- hello
- Hadoop48 [INFO Mon Jan 21 11:37:59 CST 2013] hello
- this is a test
- Hadoop48 [INFO Mon Jan 21 11:38:07 CST 2013] this is a test
- [zhouhh@Hadoop48 ~]$ flume dump 'text("/etc/services")'
- ...
- Hadoop48 [INFO Mon Jan 21 10:57:15 CST 2013] iqobject\t48619/udp\t\t\t# iqobject
- Hadoop48 [INFO Mon Jan 21 10:57:15 CST 2013] # Local services
- 2013-01-21 10:57:15,498 [logicalNode dump-9] INFO debug.TextFileSource: File /etc/services closed
- 2013-01-21 10:57:15,498 [logicalNode dump-9] INFO debug.ConsoleEventSink: ConsoleEventSink( debug ) closed
- [zhouhh@Hadoop48 ~]$ flume dump 'tail("testfile")'
- [zhouhh@Hadoop48 ~]$ echo hello world >> testfile
- [zhouhh@Hadoop48 ~]$ echo 你好 >> testfile
输出
- [zhouhh@Hadoop48 ~]$ flume dump 'tail("testfile")'
- ...
- Hadoop48 [INFO Mon Jan 21 10:55:39 CST 2013] { tailSrcFile : (long)8387236824819002469 (string) 'testfile' (double)4.914663849160389E252 } hello world
- Hadoop48 [INFO Mon Jan 21 10:56:07 CST 2013] { tailSrcFile : (long)8387236824819002469 (string) 'testfile' (double)4.914663849160389E252 } \u4F60\u597D
- [zhouhh@Hadoop48 ~]$ flume dump 'multitail("test1", "test2")'
- [zhouhh@Hadoop48 ~]$ echo Hello world test1! >> test1
- [zhouhh@Hadoop48 ~]$ echo Hello world test2! >> test2
- 输出
- [zhouhh@Hadoop48 ~]$ flume dump 'multitail("test1", "test2")'
- ...
- Hadoop48 [INFO Mon Jan 21 10:59:51 CST 2013] { tailSrcFile : test1 } Hello world test1!
- Hadoop48 [INFO Mon Jan 21 11:00:00 CST 2013] { tailSrcFile : test2 } Hello world test2!
tail 缺省分隔符是\n,并且\n不包含在事件中。tail 支持自定义分隔符,还可指定分隔符是包含在前一事件(prev),后一事件(next),还是不包含在事件中(exclude).
- 两个及以上\n换行
- tail("file", delim="\n\n+", delimMode="exclude")
- 用</a>做分隔符,并且做为前一事件结尾。
- tail("file", delim="</a>", delimMode="prev")
- 用"\n\d\d\d\d"正则表达式做分隔符,并且做为后一事件的开头。用于分析stack dump日志。如年开头四位数字。
- tail("file", delim="\\n\\d\\d\\d\\d", delimMode="next")
获取2行3个随机字符日志
- [zhouhh@Hadoop48 ~]$ flume dump 'asciisynth(2,3)'
- Hadoop48 [INFO Mon Jan 21 11:12:36 CST 2013] :,J
- Hadoop48 [INFO Mon Jan 21 11:12:36 CST 2013] o
用udp或tcp接受syslog格式日志
- [zhouhh@Hadoop48 ~]$ flume dump 'syslogUdp(5140)'
发送消息到5140端口
- [zhouhh@Hadoop48 ~]$ echo "hello " | nc -u hadoop48 5140
- [zhouhh@Hadoop48 ~]$ flume dump 'syslogUdp(5140)'
- 2013-01-21 11:15:10,587 [logicalNode dump-9] WARN syslog.SyslogUdpSource: 1 rejected packets. packet: java.net.DatagramPacket@75037619
- com.cloudera.flume.handlers.text.EventExtractException: Failed to extract syslog wire entry
- at com.cloudera.flume.handlers.syslog.SyslogWireExtractor.extract(SyslogWireExtractor.java:178)
- at com.cloudera.flume.handlers.syslog.SyslogWireExtractor.extractEvent(SyslogWireExtractor.java:89)
- at com.cloudera.flume.handlers.syslog.SyslogUdpSource.next(SyslogUdpSource.java:88)
- at com.cloudera.flume.core.connector.DirectDriver$PumperThread.run(DirectDriver.java:105)
- 这是因为发送的消息没有wireformat数据
- [zhouhh@Hadoop48 ~]$ echo "<37>hello " | nc -u hadoop48 5140
- [zhouhh@Hadoop48 ~]$ flume dump 'syslogUdp(5140)'
- ...
- Hadoop48 [INFO Mon Jan 21 11:24:02 CST 2013] { syslogfacility : 4 } { syslogseverity : 5 } hello
<37>用于指定log分类和log级别
接受tcp数据
- [zhouhh@Hadoop48 ~]$ flume dump 'syslogTcp(5140)'
- [zhouhh@Hadoop48 ~]$ echo "<37>hello via syslog" | nc -t localhost 5140
- 显示结果
- [zhouhh@Hadoop48 ~]$ flume dump 'syslogTcp(5140)'
- ...
- Hadoop48 [INFO Mon Jan 21 11:33:01 CST 2013] { syslogfacility : 4 } { syslogseverity : 5 } hello via syslog
参考
http://archive.cloudera.com/cdh/3/flume/UserGuide/index.html
flume 日志收集单节点的更多相关文章
- 【转】Flume日志收集
from:http://www.cnblogs.com/oubo/archive/2012/05/25/2517751.html Flume日志收集 一.Flume介绍 Flume是一个分布式.可 ...
- Hadoop生态圈-flume日志收集工具完全分布式部署
Hadoop生态圈-flume日志收集工具完全分布式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 目前为止,Hadoop的一个主流应用就是对于大规模web日志的分析和处理 ...
- Flume日志收集系统架构详解--转
2017-09-06 朱洁 大数据和云计算技术 任何一个生产系统在运行过程中都会产生大量的日志,日志往往隐藏了很多有价值的信息.在没有分析方法之前,这些日志存储一段时间后就会被清理.随着技术的发展和 ...
- Apache Flume日志收集系统简介
Apache Flume是一个分布式.可靠.可用的系统,用于从大量不同的源有效地收集.聚合.移动大量日志数据进行集中式数据存储. Flume简介 Flume的核心是Agent,Agent中包含Sour ...
- Flume日志收集系统介绍
转自:http://blog.csdn.net/a2011480169/article/details/51544664 在具体介绍本文内容之前,先给大家看一下Hadoop业务的整体开发流程: 从Ha ...
- Flume日志收集 总结
Flume是一个分布式.可靠.和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据: 同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力. (1) 可靠 ...
- 常见的几种Flume日志收集场景实战
这里主要介绍几种常见的日志的source来源,包括监控文件型,监控文件内容增量,TCP和HTTP. Spool类型 用于监控指定目录内数据变更,若有新文件,则将新文件内数据读取上传 在教你一步搭建Fl ...
- Flume日志收集
进入 http://blog.csdn.net/zhouleilei/article/details/8568147
- 基于Flume的美团日志收集系统(二)改进和优化
在<基于Flume的美团日志收集系统(一)架构和设计>中,我们详述了基于Flume的美团日志收集系统的架构设计,以及为什么做这样的设计.在本节中,我们将会讲述在实际部署和使用过程中遇到的问 ...
随机推荐
- mysql读写分离的三种实现方式
1 程序修改mysql操作类可以参考PHP实现的Mysql读写分离,阿权开始的本项目,以php程序解决此需求.优点:直接和数据库通信,简单快捷的读写分离和随机的方式实现的负载均衡,权限独立分配缺点:自 ...
- 渗透测试思路 | Linux下自动化搭建FakeAP,劫持用户在Portal认证下的所有流量
如何在linux下搭建一个fakeap,使得portal认证下的用户无法发现连接你的假AP,并且能够正常上网.先说一下portal认证.无线WIFI认证方式主要有wpa2 和 open两种,而port ...
- WM_SETFOCUS和WM_KILLFOCUS、WM_GETDLGCODE
procedure WMSetFocus (var Message: TWMSetFocus); message WM_SETFOCUS; //获得焦点 procedure WMKillFocus ...
- VMware安装黑群暉5.2
选择典型就可以了,点击下一步. 选择 稍后安装操作系统,点击下一步. 客户机操作系统选择Linux,版本选择其他Linux2.6.x内核64位, 填写虚拟机名称和虚拟机文件保存位置的.填写好后点击 ...
- SWF代码分析与破解之路 (YueTai VIP视频信息获取工具) Socket续篇
引言 上一篇 <Socket与站点保密应用 (隐藏链接的视频下载)>大大咧咧地从 WEB 讲 Socket.再到 TCP/IP 等协议,又再讲到 Wireshark 怎样抓IP包分析.最还 ...
- R语言数据分析系列之五
R语言数据分析系列之五 -- by comaple.zhang 本节来讨论一下R语言的基本图形展示,先来看一张效果图吧. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi ...
- css3: background-image使用多个背景图像
CSS3 允许元素使用多个背景图像. background-image: url(img/ic_ms.png),url(img/icon_dutyfree_invite.png); <!DOCT ...
- 用Camshift算法对指定目标进行跟踪
原理 Camshift算法是Continuously Adaptive Mean Shift algorithm的简称. 它是一个基于MeanSift的改进算法.它首次由Gary R.Bradski等 ...
- JS 常用字符串操作
Js字符串操作函数大全 /******************************************* 字符串函数扩充 ...
- java_类型强转
class Father{ public void fromFather(){ System.out.println("fromFather"); } } interface in ...