21【在线日志分析】之记录一个flume-ng的tail -f参数所诱发的血案

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 一.现象: flume收集-->flume聚合-->kafka-->spark streaming+spark sql-->influxdb-->grafana1.所有进程都是 后台运行的;2.运行进程,当时整套流程都是ok的;3.但是,过一段时间,发现grafana的图表没有数据展示了!!!二.排查:1.检查 spark streaming+spark sql的计算的log,发现一直打印“No cdh role logs in this time interval” ;那么可以推断没有日志过来。

一.现象:

flume收集-->flume聚合-->kafka-->spark streaming+spark sql-->influxdb-->grafana
1.所有进程都是 后台运行的;
2.运行进程,当时整套流程都是ok的;
3.但是,过一段时间,发现grafana的图表没有数据展示了!!!


二.排查:
1.检查 spark streaming+spark sql的计算的log,发现一直打印“No cdh role logs in this time interval” ;
那么可以推断没有日志过来。

2.检查kafka集群是否正常?
通过kafka manager的web查看topic,可以看到集群正常,但是

发现Metrics这个的Bytes in /sec这一行都是0,表明flume聚合节点 没有数据输出到kafka集群。

 

3.难道我的flume收集节点的进程有异常???

a.检查flume进程还在 和 后台运行的 nohup.out日志 没有发现异常;

b.难道监控的那个日志,不存在吗? 然后 ll 命令查看一下,发现存在的哇。

c.检查我的flume参数文件配置,初步检查没有发现异常,手工执行 这个命令"tail -f /var/log/hadoop-hdfs/hadoop-cmf-hdfs1-NAMENODE-hadoop-01.log.out"  是能够实时输出显示的

点击(此处)折叠或打开

  1. [hdfs@hadoop-01 conf]$ cat nn1_exec_memory_avro.properties
  2. # Name the components on this agent
  3. a1.sources = r1
  4. a1.sinks = k1
  5. a1.channels = c1
  6. # Describe/configure the custom exec source
  7. a1.sources.r1.type = com.onlinelog.analysis.AdvancedExecSource
  8. a1.sources.r1.command = tail -f /var/log/hadoop-hdfs/hadoop-cmf-hdfs1-NAMENODE-hadoop-01.log.out
  9. a1.sources.r1.batchSize = 200
  10. a1.sources.r1.hostname = hadoop-01
  11. a1.sources.r1.servicename = namenode
  12. # Describe the sink
  13. a1.sinks.k1.type = avro
  14. a1.sinks.k1.hostname = 172.16.101.54
  15. a1.sinks.k1.port = 4545
  16. a1.sinks.k1.batch-size = 200
  17. # Use a channel which buffers events in memory
  18. a1.channels.c1.type = memory
  19. a1.channels.c1.keep-alive = 60
  20. a1.channels.c1.capacity = 1000000
  21. a1.channels.c1.transactionCapacity = 600
  22. # Bind the source and sink to the channel
  23. a1.sources.r1.channels = c1
  24. a1.sinks.k1.channel = c1

4.google+baidu ............
5.实在没办法,打开官网 https://flume.apache.org/FlumeUserGuide.html#exec-source

发现这么一句话:
Just use unix command  tail   -F   /full/path/to/your/file . Parameter -F is better in this case than -f as it will also follow file rotation.

然后我发现用的是tail -F(是大写),而我们运维,dba人员习惯用tail -f ,于是我去查看命令帮助发现这两者的差别。

$ tail --help
-f, --follow[={name|descriptor}]
                           output appended data as the file grows;
                           -f, --follow, and --follow=descriptor are
                           equivalent
-F                       same as --follow=name --retry

而我们的log日志,是每达到200M,是要重新重命名的,比如加上序号1.,然后重新创建这个日志。
所以在tail 一个log文件的时候, 文件滚动之后这个tail -f命令,就失效了. 
-F 是--follow=name --retry的缩写, --follow=name是按照文件名跟踪文件, 可以定期去重新打开文件检查文件是否被其它程序删除并重新建立. --retry这个参数, 保证文件重新建立后,可以继续被跟踪.

三.解决方法:
于是,我果断将所有的 -f改为-F,
重启flume进程(当然好像可以不用重启的,因为flume会每隔一段时间会读取配置文件来动态生效,不过我还是选择手动重启,立即生效),
监控一周,运行正常。














相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
6月前
|
存储 分布式计算 监控
【Flume】Flume 监听日志文件案例分析
【4月更文挑战第4天】【Flume】Flume 监听日志文件案例分析
|
6月前
|
存储 运维 监控
【Flume】flume 日志管理中的应用
【4月更文挑战第4天】【Flume】flume 日志管理中的应用
|
3月前
|
存储 数据采集 数据处理
【Flume拓扑揭秘】掌握Flume的四大常用结构,构建强大的日志收集系统!
【8月更文挑战第24天】Apache Flume是一个强大的工具,专为大规模日志数据的收集、聚合及传输设计。其核心架构包括源(Source)、通道(Channel)与接收器(Sink)。Flume支持多样化的拓扑结构以适应不同需求,包括单层、扇入(Fan-in)、扇出(Fan-out)及复杂多层拓扑。单层拓扑简单直观,适用于单一数据流场景;扇入结构集中处理多源头数据;扇出结构则实现数据多目的地分发;复杂多层拓扑提供高度灵活性,适合多层次数据处理。通过灵活配置,Flume能够高效构建各种规模的数据收集系统。
71 0
|
8天前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
|
1月前
|
Arthas 监控 Java
JVM知识体系学习七:了解JVM常用命令行参数、GC日志详解、调优三大方面(JVM规划和预调优、优化JVM环境、JVM运行出现的各种问题)、Arthas
这篇文章全面介绍了JVM的命令行参数、GC日志分析以及性能调优的各个方面,包括监控工具使用和实际案例分析。
43 3
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
45 2
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
44 1
|
3月前
|
存储 分布式计算 大数据
【Flume的大数据之旅】探索Flume如何成为大数据分析的得力助手,从日志收集到实时处理一网打尽!
【8月更文挑战第24天】Apache Flume是一款高效可靠的数据收集系统,专为Hadoop环境设计。它能在数据产生端与分析/存储端间搭建桥梁,适用于日志收集、数据集成、实时处理及数据备份等多种场景。通过监控不同来源的日志文件并将数据标准化后传输至Hadoop等平台,Flume支持了性能监控、数据分析等多种需求。此外,它还能与Apache Storm或Flink等实时处理框架集成,实现数据的即时分析。下面展示了一个简单的Flume配置示例,说明如何将日志数据导入HDFS进行存储。总之,Flume凭借其灵活性和强大的集成能力,在大数据处理流程中占据了重要地位。
84 3
|
4月前
|
运维
系统日志使用问题之如何防止在打印参数时遇到NPE(空指针异常)
系统日志使用问题之如何防止在打印参数时遇到NPE(空指针异常)
|
4月前
|
缓存 流计算
explorer链接失败报错和延迟问题之Blink参数优化来限制读取日志流的TPS的问题如何解决
explorer链接失败报错和延迟问题之Blink参数优化来限制读取日志流的TPS的问题如何解决