Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。目前属于apache的一个子项目。

一般来说,部署到服务器上的flume是安装在unix/linux环境下使用的,但是有时为了测试和调试方便,我们也会有在windows系统上安装的需求。对当前flume最新版本1.6来说,在windows上使用相对比较方便,因为其自带了一套执行环境shell。

这是一套使用powershell编制的执行环境,启动程序在apache-flume-1.6.0-bin\bin目录下,flume-ng.cmd。

打开命令行,输入flume-ng.cmd help可以查看该程序使用方法。  如图:

以一个采集脱机目录日志源的flume agent为例,可以以如下命令运行这个agent :

flume-ng.cmd agent --conf ..\conf --conf-file ..\conf\t1.conf --name a1

t1.conf:

a1.sources = r1
a1.channels = memoryChannel
a1.sinks = spoolSink a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = spool_dir
a1.sources.r1.fileHeader = true
a1.sources.r1.channels = memoryChannel #interceptors
a1.sources.r1.interceptors = e1
a1.sources.r1.interceptors.e1.type = regex_extractor
a1.sources.r1.interceptors.e1.regex = ^([\\D]+[\\d]+[\\s]+[\\d\\:]+)\\s+([\\d\\-]+[\\s]+[\\d\\:]+[\\s]+[\\d\\:]+)\\s([\\S\\-]+)\\s([\\S\\/]+)\\s.[\\w]+\\S([\\d\\.]+)\\S\\s[\\w]+\\S([\\w]+)\\S\\s([\\d\\.]+\\S[\\d]+)\\S\\s([\\d\\.]+\\S[\\d]+)\\S\\s[\\W]+([\\d\\.]+\\S[\\d]+)\\S\\s\\S([\\d\\/]+[\\s]+[\\d\\:]+)\\s\\S\\s([\\d\\/]+[\\s][\\d\\:]+)\\S\\s[\\w\\s]+\\S([\\d]+)\\s[\\w\\s]+\\S([\\d]+)\\S\\s[\\w]+\\S([\\d\\#]+)[\\w\\s]+\\S([\\d\\.]+);$
a1.sources.r1.interceptors.e1.serializers = s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15
a1.sources.r1.interceptors.e1.serializers.s1.name = time1
a1.sources.r1.interceptors.e1.serializers.s2.name = time2
a1.sources.r1.interceptors.e1.serializers.s3.name = xy
a1.sources.r1.interceptors.e1.serializers.s4.name = session
a1.sources.r1.interceptors.e1.serializers.s5.name = devip
a1.sources.r1.interceptors.e1.serializers.s6.name = protocol
a1.sources.r1.interceptors.e1.serializers.s7.name = ip1
a1.sources.r1.interceptors.e1.serializers.s8.name = ip2
a1.sources.r1.interceptors.e1.serializers.s9.name = ip3
a1.sources.r1.interceptors.e1.serializers.s10.name = starttime
a1.sources.r1.interceptors.e1.serializers.s11.name = endtime
a1.sources.r1.interceptors.e1.serializers.s12.name = srcvpn
a1.sources.r1.interceptors.e1.serializers.s13.name = desvpn
a1.sources.r1.interceptors.e1.serializers.s14.name = status
a1.sources.r1.interceptors.e1.serializers.s15.name = username #channels
a1.channels.memoryChannel.type = memory
a1.channels.memoryChannel.capacity = 300
a1.channels.memoryChannel.transactionCapacity= 300 #sink
a1.sinks.spoolSink.type = com.hzfi.flume.PatternTestSink
a1.sinks.spoolSink.channel = memoryChannel

上例中使用了一个interceptor regex_extractor来对脱机目录下的日志中的记录进行正则表达式模式识别,将记录切分为15个子模式,分别加入到flume event的header里边。

sink为一个自定义的PatternTestSink,代码如下:

package com.hzfi.flume;

import org.apache.flume.Channel;
import org.apache.flume.Context;
import org.apache.flume.Event;
import org.apache.flume.EventDeliveryException;
import org.apache.flume.Transaction;
import org.apache.flume.conf.Configurable;
import org.apache.flume.sink.AbstractSink; public class PatternTestSink extends AbstractSink implements Configurable { @Override
public Status process() throws EventDeliveryException { Status result = Status.READY;
Channel channel = getChannel();
Transaction transaction = channel.getTransaction();
Event event = null;
try {
transaction.begin();
event = channel.take();
if (event != null) {
String body = new String(event.getBody(), "utf-8");
System.out.println("----->event headers...");
System.out.println("header content:[" + event.getHeaders().toString() + "]");
System.out.println("----->event body...");
System.out.println("body content:[" + body + "]");
} else {
result = Status.BACKOFF;
}
transaction.commit();
} catch (Exception ex) {
transaction.rollback();
throw new EventDeliveryException("Failed to got pattern event: " + event, ex);
} finally {
transaction.close();
}
return result;
} @Override
public void configure(Context arg0) {
// TODO Auto-generated method stub }
}

flume在windows环境下的使用的更多相关文章

  1. 关于docker在windows环境下运行的第一次体验

    关于docker在windows环境下执行的原理 1.1.           首先是Docker Quickstart启动,如果在虚拟机Oracle VM VirtualBox不存在default虚 ...

  2. Redis在windows环境下ThinkPHP的安装和使用

    1.Redis概述: 2.Redis在windows环境下的安装: 下载地址:https://github.com/dmajkic/redis/downloads,选取其中一个zip压缩包:

  3. 【经验之谈】Git使用之Windows环境下配置

    前言 安装 配置 关于git使用的几个问题 后记 关于代码托管,以前用过vss和svn,看博客或论坛的时候,经常有人提到github,有很多著名的开源软件都托管在github,想来肯定不错(莫笑),当 ...

  4. 【经验之谈】Windows环境下配置WordPress

    前言 wordpress全球著名的开放博客平台,拥有成千上万个各式插件和不计其数的主题模板样式,使用php和mysql搭建,下面说下载windows环境下配置wordpress,经验之谈. 安装 关于 ...

  5. 在 windows 环境下安装 redislive

    这是一篇在 windows 环境下安装 redislive 的教程! 项目地址:https://github.com/nkrode/RedisLive 配置文档:http://www.nkrode.c ...

  6. Windows环境下MongoDB的安装与配置

    MongoDB是一种高性能的文档型数据库,现介绍一下在Windows环境下MongDB的安装与配置 获取MongoDB 打开官方网站 www.mongodb.org,找到页面右上解的DownLoad链 ...

  7. windows环境下创建 .文件夹

    一.windows环境下创建 .文件夹 1.新建一个文件夹 2.重命名为.properties.(名字前后都加点) 二.windows环境下创建 .文件 1.上面的方法对文件同样适用 2.运行CMD, ...

  8. Windows环境下npm install常见错误

    Windows环境下npm install安装包依赖时,常出现一些错误,下面为个人解决办法: 错误一 缺少python环境: G:\nodejs\moviesite\node_modules\bcry ...

  9. go语言环境搭建+sublime text3(windows环境下)

    感觉有点坑,整了一下午~搞定 go语言环境搭建+sublime text3(windows环境下) 1.安装sublime text3 2.安装go语言程序包 3.测试go语言是否安装成功     键 ...

随机推荐

  1. vc通过webbrowser操作ie元素

    1>需要引用 webbrowser2.h,mshtml.h //m_web绑定的webbrowser的变量 CComQIPtr<IHTMLDocument2,&IID_IHTMLD ...

  2. 自动化部署nginx负载均衡及监控短信报警

    题: 开发脚本自动部署及监控 1.编写脚本自动部署反向代理.web.nfs: 要求: I.部署nginx反向代理三个web服务,调度算法使用加权轮询: II.所有web服务使用共享存储nfs,保证所有 ...

  3. 将Win7笔记本设置成WiFi热点(无线路由器)

    查看是否能启动WiFi网卡: S1:运行cmd命令,打开命令提示符窗口(以管理员身份运行). S2:在命令行输入:netsh wlan show drivers. 若“支持的承载网络”后为“是”,则可 ...

  4. codevs1246 丑数

    题目描述 Description 对于一给定的素数集合 S = {p1, p2, ..., pK}, 来考虑那些质因数全部属于S 的数的集合.这个集合包括,p1, p1p2, p1p1, 和 p1p2 ...

  5. 类Pinterest Web原型制作分享——花瓣网

    这是一家基于兴趣的社交分享网站,网站为用户提供了一个简单地采集工具,帮助用户将自己喜欢图片重新组织和收藏.网站布局美观合理,内容丰富.此原型模板所用到的组件有按钮栏.菜单栏.搜索框.水平分割线.交互动 ...

  6. httpclient学习(原创)

    --httpmime-4.2.5.jar  跟提交Form相关的类 这一块主要post数据的提交.每一条数据同name和content组成.content可能是字节数组或是流.提交这一类(MIME)的 ...

  7. 2018秋季c语言基础课第一次作业

    1)大学和高中最大的不同是没有人天天看着你,请看大学理想的师生关系是?有何感想? 答:邹欣老师提到了很多种关系,不外呼就是两种:平等或者不平等.平等的师生关系与陌生人无异,而自古以来尊师重道却被世人所 ...

  8. bootstrap中让图片自适应不同的分辨率的方法

    boostrap中加上这个样式class="img-responsive"图片就可以自适应,手机端同样适用 详细介绍请查看全文:https://cnblogs.com/qianzf ...

  9. 2018.10.20 bzoj1068: [SCOI2007]压缩(区间dp)

    传送门 这题转移很妙啊. f[l][r][1/0]f[l][r][1/0]f[l][r][1/0]表示对于区间[l,r][l,r][l,r]有/无重复的机会时压缩的最小值. 那么可以从三种情况转移过来 ...

  10. 2018.07.03 POJ 1279Art Gallery(半平面交)

    Art Gallery Time Limit: 1000MS Memory Limit: 10000K Description The art galleries of the new and ver ...