Flume-ng spoolDir分布式日志收集目录监控
2015-03-31 16:50
351 查看
ok,上来直接来干货在使用flume-ng时,踩了很多坑,现在来说一下,希望大家绕过坑,到达熟练使用flume的目的第一坑:不能正确解码文件,造成不能正确的重命名文件,抛出bug后,之后所有文件都不可以被flume收集,是一个比较严重的错,引起原因是flume使用NIO方式读取文件,将读取的文件以UTF-8的编码读取,在Linux状态下,默认是按照GBK编码方式存储文件,所以读取时就会遇到字符长度不够问题,解决办法:在flume配置文件中设置监控目录中读取文件的编码方式。第二坑:cp大文件抛出异常,这个是因为copy到spoolDir下的文件不可以被修改所致,解决办法,使用scp或者cp备份文件,然后将文件mv进spoolDir下。还可以使用后缀名正则配合,先拷贝进去.tmp的文件,等待copy完成后,rename为未按名。第二坑修改源码:可以修改源码来避免大文件上传问题,一下是修改源代码信息:以下是需要修改的源码方法:
/**** @Title: checkFileCpIsOver* @Description: 用来检查文件拷贝是否完成* @param @param currentFile 设定文件* @return void 返回类型* @throws*/private void checkFileCpIsOver(File file) {logger.info("CheckFileCpIsOVer start..........");long modified = file.lastModified();//目前文件的修改时间long length = file.length();//目前文件的大小try {Thread.sleep(1000);//等待1秒钟} catch (InterruptedException e) {e.printStackTrace();}File currentFile = new File(file.getAbsolutePath());int count = 0;//记录循环次数,超过20次,也就是10秒后抛出异常while(currentFile.lastModified() != modified || currentFile.length() != length) {if(count > 20) {String message = "File Copy time too long. please check copy whether exception!" + "\n"+ "File at :" + file.getAbsolutePath() + "\n"+ "File current length is:" + currentFile.lastModified();new IllegalStateException(message);}count++;modified = currentFile.lastModified();length = currentFile.length();try {Thread.sleep(500);//等待500毫秒} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}currentFile = new File(file.getAbsolutePath());}//一直到文件传输完成就可以退出}修改之后打成jar包上传到flume的lib下替换原有jar即可
相关文章推荐
- 分布式日志收集框架Flume:监控一个文件实时采集新增的数据输出到控制台
- flume收集tomcat日志保存到本地目录
- Flume-NG + HDFS + HIVE 日志收集分析
- Flume日志收集 总结
- 基于Flume的美团日志收集系统(二)改进和优化
- Flume-NG 日志文件收集 简单实例
- Flume对Nginx群集日志收集方案
- Flume1.7.0+Elasticsearch1.7.5+Kibana4.11日志收集分析系统环境搭建
- 海量日志收集利器 ―― Flume
- 基于Flume的美团日志收集系统(一)架构和设计
- 日志系统之Flume日志收集
- flume-kafka- spark streaming(pyspark) - redis 实时日志收集实时计算 + Spark 基于pyspark下的实时日志分析
- 基于Flume的美团日志收集系统(一)架构和设计
- 分布式日志收集系统Apache Flume的设计介绍
- Flume日志收集分层架构应用实践
- Flume日志收集
- flume-ng 日志收集系统单机测试demo
- Flume-NG + HDFS + HIVE 日志收集分析
- 学习总结二十二:flume是分布式的日志收集系统
- 基于Flume的美团日志收集系统(二)改进和优化