flume1.7 入门
Posted fengyuwuqing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flume1.7 入门相关的知识,希望对你有一定的参考价值。
工作原因要用到flume来采集日志,简单接触后写下来一些,随更。
详细请看官网
http://flume.apache.org/releases/content/1.7.0/FlumeUserGuide.html#a-simple-example
flume依赖Java环境,此版本至少要1.7以上的java
Openjdk 安装
Linux:
1.下载tar.gz的安装包(我下载的是Adopt 11 LTS版)
2.放入指定目录(mkdir /usr/bin/jdk11)
/usr/bin/jdk11
3.添加环境变量(全局/etc/profile 用户vim ~/.bashrc)
export JAVA_HOME=/usr/lib/jdk11
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=.:${JAVA_HOME}/bin:$PATH
4.source /etc/profile
5.测试 java -version
flume配置
简单描述:source收集信息,sinks推送信息到其他源或消息队列(kafka,MQ...)或存储(es,HDSF...),channel是前两者传输的管道(有缓存的作用)。
一 配置java的环境变量
1. cp flume-env.sh.template flume-env.sh
2. vim flume-env.sh +22
export JAVA_HOME=/usr/lib/jdk11
3. 检验 ./bin/flume-ng version
二 配置文件
vim ./conf/example.conf:单节点Flume配置
#命名此代理上的组件
a1.sources = r1
a1.sinks = k1
a1.channels = c1
#描述/配置源(type的类型是固定的,但有多个应用场景的类型)
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
#描述接收器
a1.sinks.k1.type = logger
#使用一个通道来缓冲事件到内存
a1.channels.c1.type = 内存
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
#将源和接收器绑定到通道
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
三 启动
1. $ bin/flume-ng agent --conf conf --conf-file example.conf --name a1 -Dflume.root.logger=INFO,console
2. $ telnet localhost 44444
正在尝试127.0.0.1 ...
已连接到localhost.localdomain(127.0.0.1)。
转义字符为‘^]‘。
你好,世界!<ENTER>
确定
3.原始的Flume终端将在日志消息中输出事件。
19年12月6日15 :32:19 INFO source.NetcatSource:源起
19年12月6日15 :32:19 INFO source.NetcatSource:创建的ServerSocket:sun.nio.ch.ServerSocketChannelImpl [/127.0.0.1:44444]
19年12月6日15 :32:34 INFO sink.LoggerSink:事件:{头:{}体:48 65 6C 6F 6C 20 77 72 6F 6C 64 21 0D世界你好!}
其他用法:
1.将/usr/logs/log.10的内容发送到在该端口上监听的Flume源(这个应该是比较常用的)
$ bin/flume-ng avro-client -H localhost -p 41414 -F /usr/logs/log.10
2.exec
# Describe/configure the source
a1.sources = r1
a1.channels = c1
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F / var / log / secure
a1.sources.r1.channels = c1
3.常用的source 基本有:
avro 监听一个端口,或从外部的avro客户端流接收事件event(多对一)
spooldir 监听一个目录,有新文件后将采集
4.常用的sinks(输出):
kafka
avro
elasticsearch
5.channel 连接源和sinks的管道(可缓存事件)
基本不用管,很少更改(可改为kafka等来缓存事件)
以上是关于flume1.7 入门的主要内容,如果未能解决你的问题,请参考以下文章
Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)中一些知识点
Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)