Flume MongodbSink

此mongodb支持3.0

github地址

MongodbSink

flume-ng-mongodbsink

An Apache Flume Sink that send JSON to MongoDB collection

配置文件 configuration properties

Property Name Default Description
hostNames - host1:port1,host2,port2,...the mongodb host and port
database - the mongodb database
collection - the collection of database
user - the username of databse
password - the password of database
batchSize 100 the batchSize of sources
authentication_enabled False Whether u need a password and a user

如果没有密码和用户名 就不需要user password authentication_enabled T

如果有密码,设置authentication_enabled =True

Example

# 定义数据出口
a1.sinks.s.type = com.kenshuchong.MongodbSink.MongoSinkSelf
a1.sinks.s.hostNames=127.0.0.1:27017
a1.sinks.s.authentication_enabled=True
a1.sinks.s.database = database
a1.sinks.s.password = password
a1.sinks.s.user = user
a1.sinks.s.collection = collection
a1.sinks.s.batchSize = 100
a1.sinks.s.channel = c

自定义修改Custom modify

可以修改其中生成json部分

line 76-82 jsonEvent is the event body

json event是日志主体

 String cuTime = getCurrentTime();
String jsonEvent = new String(event.getBody(), StandardCharsets.UTF_8);
Document sentEvent = new Document("log",jsonEvent)
.append("Dir","/data/ngnix.log")
.append("Time", cuTime); documents.add(sentEvent);

tips

本mongodbsink 支持3.0版本

线上使用需在flume/lib下添加一下几个jar包

  • mongodb-driver-3.0.2.jar
  • mongodb-driver-core-3.0.2.jar
  • bson-3.0.2.jar

结合TAILDIR srouce实时采集日志并存入mongodb中

需求

  • 日志存储在/opt/rec/log
  • 日志需要采集其中的ERROR级别日志
  • 日志存储在mongodb中

处理需求

  • 采用新的TAILDIR source来对/log进行实时采集
  • 给suorce配置正则拦截器,拦截非ERROR日志
  • 采用自定义mongodbsink实时将日志插入mongodb中
  • positionFile 为存储文件读取偏移地址的josn文件,这种只从最新位置读取
  • 只有检测到了文件位置有新的偏移才会再次读取文件

配置文件

#定义组件名称
a1.sources = r
a1.sinks = s
a1.channels = c #定义数据入口
a1.sources.r.type = TAILDIR
a1.sources.r.channels = c
a1.sources.r.positionFile = /home/ch/logMonitor/taildir_position.json
a1.sources.r.filegroups = f1
a1.sources.r.filegroups.f1 = /opt/rec/log/*.log ##定义拦截器
a1.sources.r.interceptors=i1
a1.sources.r.interceptors.i1.type=regex_filter
a1.sources.r.interceptors.i1.regex= ERROR # 定义数据出口
a1.sinks.s.type = com.kenshuchong.MongodbSink.MongoSinkSelf
a1.sinks.s.hostNames=127.0.0.1:27017
a1.sinks.s.authentication_enabled=True
a1.sinks.s.database = database
a1.sinks.s.password = password
a1.sinks.s.user = user
a1.sinks.s.collection = logsearch_info
a1.sinks.s.batchSize = 100
a1.sinks.s.channel = c # 使用内存管道
a1.channels.c.type = memory
a1.channels.c.capacity = 10000
a1.channels.c.transactionCapacity = 100

最新Flume1.7 自定义 MongodbSink 结合TAILDIR Sources的使用的更多相关文章

  1. docker最新版本如何自定义配置文件

    1 如果你想使用 /etc/default/docker文件配置你的docker 在 /etc/systemd/system/docker.service.d/docker.conf 添加下面---- ...

  2. 2、Flume1.7.0入门:安装、部署、及flume的案例

    一.什么是Flume? flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用. flume的特点: flume是一个分布式.可靠.和高可用的海量日志采集.聚合和传输的 ...

  3. 自定义和扩展 SharePoint 2010 Server 功能区

    了解构成 SharePoint 2010 服务器功能区的组件以及如何通过演练两个功能区自定义项方案来自定义功能区. 适用范围: Microsoft SharePoint Foundation 2010 ...

  4. Apache Flume 1.7.0 自定义输入输出

    自定义http source config a1.sources.r1.type=http a1.sources.r1.bind=localhost a1.sources.r1.port= a1.so ...

  5. Flume初见与实践

    Photo by Janke Laskowski on Unsplash 参考书籍:<Flume构建高可用.可扩展的海量日志采集系统> --Hari Shreedharan 著 以下简称& ...

  6. Flume 详解&实战

    Flume 1. 概述 Flume是一个高可用,高可靠,分布式的海量日志采集.聚合和传输的系统.Flume基于流式架构,灵活简单. Flume的作用 Flume最主要的作用就是,实时读取服务器本地磁盘 ...

  7. Flume案例Ganglia监控

    Flume案例和Flume监控系统的使用: 安装 将apache-flume-1.7.0-bin.tar.gz上传到linux的/opt/software目录下 解压apache-flume-1.7. ...

  8. Tomcat+Jenkins+SonarQube+SVN+Maven 集成自动化环境搭建(Windows10环境下)

    说在前面的话: 从接到任务到完成共用了7天的时间.正常人用不到这个时间. 此时的功能表现是: 登录本地JenKins对项目进行构建,能够自动从SVN读取最新代码并按照Maven项目构建,构建完成能够自 ...

  9. 【Flume】Flume基础之安装与使用

    1.Flume简介 ​ (1) Flume提供一个分布式的,可靠的,对大数据量的日志进行高效收集.聚集.移动的服务,Flume只能在Unix环境下运行. ​ (2) Flume基于流式架构,容错性强, ...

随机推荐

  1. python__new__与__init__的区别

    __new__ __init__区别 1 class A(object): 2 def __init__(self,*args, **kwargs): 3 print "init A&quo ...

  2. axios上传图片(及vue上传图片到七牛))

    浏览器上传图片到服务端,我用过两种方法: 1.本地图片转换成base64,然后通过普通的post请求发送到服务端. 操作简单,适合小图,以及如果想兼容低版本的ie没办法用此方法 2.通过form表单提 ...

  3. BZOJ4675: 点对游戏

    传送门 考虑每一对幸运点对的贡献,假设有 \(v\) 对 一共可以选择 \(x\) 个点,总共 \(n\) 个点 那么答案就是 \[v\times\frac{A_{n-2}^{x-2}x(x-1)}{ ...

  4. 纯小白入手 vue3.0 CLI - 1 - npm 安装与初始化

    node 开发环境请先自行准备 npm install -g @vue/cli 安装完成之后命令行则存在 vue 命令 vue -V 查看本地 vue 版本 vue -h 输出帮助 vue creat ...

  5. Dynamics 365Online 查询Web Api的请求WebUri

    在on-premises版本中,获取weburi的方式是进设置-自定义项-开发人员资源中查看地址,但online版本中的地址会有些许的差异 online的开发者资源中的地址如下图,如果你在页面java ...

  6. Office - Excel 2013

    1. 在使用TODAY()时需要注意格式,比如,如果系统区域是中国,那么格式为2015/7/28,如果在单元格中设置了其它格式(比如美国格式 3/24/2015),则可能无法比较: 2. $表示cel ...

  7. .net通用类型转换方法

    由于数据类型多,要按照逐个类型写一个类型转换的方法的话一是代码量多,显得累赘. using System; using System.ComponentModel; using System.Glob ...

  8. Hadoop HBase概念学习系列之HBase里的4维坐标系统(第一步定位行键 -> 第二步定位列簇 -> 第三步定位列修饰符 -> 第四步定位时间戳)(十八)

    HBase里的4维坐标系统(第一步定位行键   ->   第二步定位列簇  ->  第三步定位列修饰符   ->  第四步定位时间戳) HBase里的4维坐标系统(第一步定位行键   ...

  9. Fix for: Permission denied to access property 'toString'

    Originally posted by rwolffgang here. Hi guys,when developing a game that runs in an iframe (Faceboo ...

  10. Python的multiprocessing,Queue,Process

    在多线程multiprocessing模块中,有两个类,Queue(队列)和Process(进程): 在Queue.py中也有一个Queue类,这两个Queue的区别? from multiproce ...