转载:http://blog.csdn.net/liuxiao723846/article/details/78133375

一、场景一描述:

线上api接口服务通过log4j往本地磁盘上打印日志,在接口服务器上安装flume,通过exec source收集日志,然后通过avro sink发送到汇总服务器上的flume;汇总服务器上的flume通过avro source接收日志,然后通过file_roll sink写到本地磁盘。

假设:api接口服务器两台 10.153.140.250和10.153.140.251,汇总日志的服务器一台 10.153.137.211

1、api接口服务器上flume配置:

1)在api接口服务器上下载、解压、安装flume:

  1. cd /usr/local/
  2. wget http://mirror.bit.edu.cn/apache/flume/1.7.0/apache-flume-1.7.0-bin.tar.gz
  3. tar -xvzf apache-flume-1.7.9-bin.tar.gz
  4. vim /etc/profile
  5. export PS1="[\u@`/sbin/ifconfig eth0|grep 'inet '|awk -F'[: ]+' '{print $4}'` \W]"'$ '
  6. export FLUME_HOME=/usr/local/apache-flume-1.6.0-bin
  7. export PATH=$PATH:$FLUME_HOME/bin

2)修改flume-env.sh 配置文件:

cd /usr/local/flume/conf

vim flume-env.sh

里面指定java_home,同时在conf目录添加log4j.properties文件;

3)flume配置文件:

注意:这里的sink使用了avro,接口服务器的flume会通过rpc的方式将日志数据发给汇总日志的服务器;

4)启动:

nohup flume-ng agent -c /usr/local/apache-flume-1.7.0-bin/conf -f /usr/local/apache-flume-1.7.0-bin/conf/test-tomcat-log.conf  -n agent1 >/dev/null 2>&1 &

2、在汇总日志服务器上flume配置:

1)安装、解压、配置flume:

2)flume配置文件:

说明:

A、这里的source使用的是avro,和api接口的flume进行对接;

B、这里使用file_roll的sink,将日志数据保存到本地磁盘;

注:bind只能写本机ip或者机器名,不能写localhost等。

3)启动:

nohup flume-ng agent -c /usr/local/apache-flume-1.7.0-bin/conf -f /usr/local/apache-flume-1.7.0-bin/conf/tomcat_collection.conf -n collector1 -Dflume.root.logger=INFO,console >/dev/null 2>&1 &

这是,我们会发现/data/tomcat_log_bak 目录下会生成从两台接口服务器上收集回来的日志。

二、场景二描述:

线上api接口服务通过log4j往本地磁盘上打印日志,在接口服务器上安装flume,通过exec source收集日志,然后通过avro sink将日志发送到汇总服务器上的flume;在汇总服务器上的flume,通过avro source接收到日志,然后通过hdfs sink备份到hdfs上。

假设有api接口服务器两台 10.153.140.250和10.153.140.251,汇总日志的服务器一台 10.153.137.211

1、api接口服务器上flume配置:

同上;

2、汇总服务器上flume配置:

1)安装、解压flume:

2)flume配置文件:

agent1.channels = ch1

agent1.sources = s1

agent1.sinks = log-sink1

agent1.sources.s1.type = avro

agent1.sources.s1.bind = 10.153.135.113

agent1.sources.s1.port = 41414

agent1.sources.s1.threads = 5

agent1.sources.s1.channels = ch1

agent1.channels.ch1.type = memory

agent1.channels.ch1.capacity = 100000

agent1.channels.ch1.transactionCapacity = 100000

agent1.channels.ch1.keep-alive = 30

agent1.sinks.log-sink1.type = hdfs

agent1.sinks.log-sink1.hdfs.path = hdfs://hadoop-jy-namenode/data/qytt/flume

agent1.sinks.log-sink1.hdfs.writeFormat = Text

agent1.sinks.log-sink1.hdfs.fileType = DataStream

agent1.sinks.log-sink1.hdfs.rollInterval = 0

agent1.sinks.log-sink1.hdfs.rollSize = 60554432

agent1.sinks.log-sink1.hdfs.rollCount = 0

agent1.sinks.log-sink1.hdfs.batchSize = 1000

agent1.sinks.log-sink1.hdfs.txnEventMax = 1000

agent1.sinks.log-sink1.hdfs.callTimeout = 60000

agent1.sinks.log-sink1.hdfs.appendTimeout = 60000

agent1.sinks.log-sink1.channel = ch1

说明:

A、这里的source使用的是avro,和api接口的flume进行对接;

B、这里的sink使用的是hdfs,可以将数据写入到hdfs上,这里需要指定hadoop集群的namenode地址。(hdfs://hadoop-jy-namenode/)

3)启动:

这时,我们会在hdfs的/data/qytt/flume目录下生成从两台接口服务器上收集回来的日志。

假设有api接口服务器两台 10.153.140.250和10.153.140.251,我们可以在接口服务器上部署flume ,将

汇总日志的服务器一台 10.153.137.211

flume使用之exec source收集各端数据汇总到另外一台服务器的更多相关文章

  1. 一次flume exec source采集日志到kafka因为单条日志数据非常大同步失败的踩坑带来的思考

    本次遇到的问题描述,日志采集同步时,当单条日志(日志文件中一行日志)超过2M大小,数据无法采集同步到kafka,分析后,共踩到如下几个坑.1.flume采集时,通过shell+EXEC(tail -F ...

  2. shell脚本中调用另一个脚本的三种不同方法(fork, exec, source)

    fork ( /directory/script.sh) fork是最普通的, 就是直接在脚本里面用/directory/script.sh来调用script.sh这个脚本. 运行的时候开一个sub- ...

  3. fork exec source的区别

    参考:http://www.cnblogs.com/bkygg/p/5023072.html 1:fork  运行的时候开一个sub_shell 执行调用的脚本,sub_shell执行的时候,pare ...

  4. 在shell脚本中调用另一个脚本的三种不同方法(fork, exec, source)——转载

    原文链接:http://blog.chinaunix.net/uid-22548820-id-3181798.html fork ( /directory/script.sh) :如果shell中包含 ...

  5. shell中sh, exec, source, fork, ./的区别

    shell中sh, exec, source, fork, ./的区别 1,sh sh test.sh ​ sh是通过创建子进程(subshell)去执行脚本,父进程无法使用子进程中的变量,而子进程对 ...

  6. shell调用另一个脚本的三种方式fork/exec/source

    exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. bash shell的命令分为两 ...

  7. 使用PowerShell收集多台服务器的性能计数器

    写在前面     当管理多台Windows Server服务器时(无论是DB.AD.WEB以及其他的应用服务器),当出现性能或其他问题后,参阅性能计数器都是一个非常好的维度从而推测出问题可能出现的原因 ...

  8. Instruments-查看收集到的数据

    由于Xcode调试工具Instruments指南篇幅太长,所以本篇blog继续上篇,介绍对Instruments收集到的数据去分析. 关于数据分析 Instruments不解决你代码中的任何问题,它帮 ...

  9. Dynamics 365 for CRM:CRM与ADFS安装到同一台服务器,需修改ADFS服务端口号

    CRM与ADFS安装到同一台服务器时,出现PluginRegistrationTool 及 CRM Outlook Client连接不上,需要修改ADFS的服务端口号,由默认的808修改为809: P ...

随机推荐

  1. linux ad7606 iio

    https://wiki.analog.com/resources/tools-software/linux-drivers/iio-adc/ad7606

  2. Android——计算器第一次完善

    完善: 1- 处理首位为0 2- 处理首位为“.” 3- 处理前两位为“0.”,此时首位为0,但是不能处理 4- 处理小数点不能重复输入 发现bug:12.3x6 = 如下图: xml <?xm ...

  3. backbone的对象继承实现

    通过原型链实现对象的继承,子类通过’__super__‘来访问父类的方法 // protoProps 子类的属性参数 // staticProps 静态属性 var extend = function ...

  4. [转]nginx负载均衡的五种算法

    1.round robin(默认) 轮询方式,依次将请求分配到各个后台服务器中,默认的负载均衡方式. 适用于后台机器性能一致的情况. 挂掉的机器可以自动从服务列表中剔除. 2.weight 根据权重来 ...

  5. ADO.NET实体数据模型中关于数据库字段默认值的处理

    无论是Visual Studio 2010或者2013内置的ADO.NET实体数据模型都有一个小问题:数据库中有些字段已设置了默认值,但ADO.NET实体数据模型工具并不会自动进行设置. 这时需要手工 ...

  6. 使用VMware将Linux装在物理硬盘上,开机即可进入Linux (转)

    目录(?)[-] 本文目的 具体操作 1 软件准备 2  安装 21 对硬盘操作 22 创建虚拟机并安装 23 使用Grub引导Linux 1. 本文目的 适合于没有光驱的计算机来安装Linux,还有 ...

  7. 关于Unity中Cg的基本语法和使用

    Cg是类似于C语言的发展起来的图形编程语言,Cgraphics,它的很多表达式if...else...和C语言非常相像,也和C#非常相像. 由于Shader是写给显卡执行的,所以没有输出语句来调试,很 ...

  8. 关于Unity中粒子效果的使用

    粒子效果1: 游戏中会有很炫酷的特效,比如爆炸,水花,火焰等;2: unity提供粒子编辑器,方便特效人员来开发很炫酷的特效;3.粒子效果一般有专门的粒子特效师来做,我们只需要拿来用就好了,很多参数没 ...

  9. 关于Unity3D中鼠标移动指定物体的解决方案

    一.鼠标拾取物体的原理 在Unity3D当中,想要在观察面(Aspect)中拾取物体(有碰撞属性)的方法一般如下: 1.声明一个观察的摄像机.一个从摄像机原点出发的射线Ray以及一个用于检测碰撞的Ra ...

  10. 自定义python web框架

    -- Bootstrap http://www.bootcss.com/ -- Font Awesome http://fontawesome.io/ -- bxslider http://bxsli ...