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 日志收集单节点的更多相关文章

  1. 【转】Flume日志收集

    from:http://www.cnblogs.com/oubo/archive/2012/05/25/2517751.html Flume日志收集   一.Flume介绍 Flume是一个分布式.可 ...

  2. Hadoop生态圈-flume日志收集工具完全分布式部署

    Hadoop生态圈-flume日志收集工具完全分布式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   目前为止,Hadoop的一个主流应用就是对于大规模web日志的分析和处理 ...

  3. Flume日志收集系统架构详解--转

     2017-09-06 朱洁 大数据和云计算技术 任何一个生产系统在运行过程中都会产生大量的日志,日志往往隐藏了很多有价值的信息.在没有分析方法之前,这些日志存储一段时间后就会被清理.随着技术的发展和 ...

  4. Apache Flume日志收集系统简介

    Apache Flume是一个分布式.可靠.可用的系统,用于从大量不同的源有效地收集.聚合.移动大量日志数据进行集中式数据存储. Flume简介 Flume的核心是Agent,Agent中包含Sour ...

  5. Flume日志收集系统介绍

    转自:http://blog.csdn.net/a2011480169/article/details/51544664 在具体介绍本文内容之前,先给大家看一下Hadoop业务的整体开发流程: 从Ha ...

  6. Flume日志收集 总结

    Flume是一个分布式.可靠.和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据: 同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力. (1) 可靠 ...

  7. 常见的几种Flume日志收集场景实战

    这里主要介绍几种常见的日志的source来源,包括监控文件型,监控文件内容增量,TCP和HTTP. Spool类型 用于监控指定目录内数据变更,若有新文件,则将新文件内数据读取上传 在教你一步搭建Fl ...

  8. Flume日志收集

    进入 http://blog.csdn.net/zhouleilei/article/details/8568147

  9. 基于Flume的美团日志收集系统(二)改进和优化

    在<基于Flume的美团日志收集系统(一)架构和设计>中,我们详述了基于Flume的美团日志收集系统的架构设计,以及为什么做这样的设计.在本节中,我们将会讲述在实际部署和使用过程中遇到的问 ...

随机推荐

  1. GO --微服务框架(一) goa

    当项目逐渐变大之后,服务增多,开发人员增加,单纯的使用go来写服务会遇到风格不统一,开发效率上的问题. 之前研究go的微服务架构go-kit最让人头疼的就是定义服务之后,还要写很多重复的框架代码,一直 ...

  2. Activity的启动模式全解standard,singleTop,singleTask,singleInstance

    在android中控制Activity的启动模式的属性主要控制两大功能: 1,控制activity 进入哪一个任务task 中,   有两种可能,进入启动task中,进入指定taskAffinity的 ...

  3. pycharm的todo和fixme标记,标志为今后再做和bug点

    使用方法,及查看方法: https://blog.csdn.net/xiemanR/article/details/73368440

  4. DICOM医学图像处理:Deconstructed PACS之Orthanc,Modification & Anonymization

    背景: 上篇博文为引子,介绍了一款神奇的开源PACS系统——Orthanc.本篇开始解读官方Cookbook中的相关内容,对于简单的浏览.访问和上传请阅读前篇博文.在常规的PACS系统中还未出现对于D ...

  5. svn hooks 实现自动更新

    搞来搞去,原来是hooks 下面的脚本名称必须是post-commit才可以, 写成fly-commit一直不行.晕死~~~ https://serverfault.com/questions/144 ...

  6. Android Camera探究之路——起步

    Android Camera探究之路--起步 Camera在手机中有着举足轻重的地位,无论是二维码还是照片.识别.都离不开摄像头,本文将对Android中的Camera进行全面解析. 权限镇楼: &l ...

  7. 使用match、test控制输入字符格式后键盘向左向右键光标自动定位解决

    直接举例说明(正则表达式替换红色区域即可) /** * 判断是否位数字 * @param obj 数字 */ function numOnly(obj) { if(!(/^\d*$/.test(obj ...

  8. 第14章8节《MonkeyRunner源代码剖析》 HierarchyViewer实现原理-获取控件列表并建立控件树

    在上几节的描写叙述中,我们把HierarchyViewer初始化好.也把ViewServer给装备好了.那如今距离获得一个控件去操作它是万事具备仅仅欠东风了,欠了那一股春风了?欠了的是建立控件树这个东 ...

  9. kubernetes之常见故障排除(一)

    系列目录 由由种种原因,在安装或者使用kubernetes的过程中,可能会遇到各种各样的问题.本篇按照官网的介绍罗列出一些常见的故障,以帮助快速解决一些常见的错误. 安装赛程中出现ebtables o ...

  10. caffe搭建----Visual Studio 2015+CUDA8.0+CUDNN5配置Caffe-windows(BLVC)

    原文来源:  来源:Angle_Cal  2016-12-19 17:32 本博主修改于2017-09-12.  版权所有,转载请注明出处.   BLVC版本的Caffe-windows已经支持Vis ...