Flume案例——日志分析采集系统

简介: 大数据平台每天处理业务系统产生的大量日志数据,一般而言,这些系统需要具有以下特征:1. 构建业务系统和日志分析系统的桥梁,并将它们之间的关联解耦;2. 支持近实时的在线分析系统和类似于 Hadoop 之类的离线分析系统;3. 具有高可扩展性。即:当数据量增加时,可以通过增加节点进行水平扩展。

概述


大数据平台每天处理业务系统产生的大量日志数据,一般而言,这些系统需要具有以下特征:

  1. 构建业务系统和日志分析系统的桥梁,并将它们之间的关联解耦;
  2. 支持近实时的在线分析系统和类似于 Hadoop 之类的离线分析系统;
  3. 具有高可扩展性。即:当数据量增加时,可以通过增加节点进行水平扩展。

日志分析采集系统模块


  • 数据采集模块:负责从各节点上实时采集数据,选用 Flume-NG 来实现。 Flume-NG 提供了丰富的 Source、Channel、Sink 实现,各种数据源的引入只要变更配置就可实现。
  • 数据接入模块:由于采集数据的速度和数据处理的速度不一定同步(类似于生产者消费者模式),因此添加一个消息中间件来作为缓冲,这里选用 Kafka 来实现。Kafka 适用于对数据管道的吞吐量、可用性要求都很高的解决方案,需要编程实现数据的生产和消费。
  • 流式计算模块:对采集到的数据进行实时分析,选用 Storm 来实现。
  • 数据输出模块:对分析后的结果持久化,可以使用 HDFS、MySQL 等。

采用 Flume 作为数据的生产者,将生产的消息数据(日志数据、业务请求数据等)通过 Kafka Sink 发布到 Kafka 中。然后再由流式计算程序 Storm 做实时分析,这时就需要将在 Storm 的 Spout 中读取 Kafka 中的消息,然后交由具体的 Spot 组件去分析处理。同时 Storm 已经自带了一个集成 Kafka 的外部插件程序 storm-kafka。最后将计算结果持久化到 Hadoop 或 MySQL 中。

示例配置


Kafka 集群配置


  • 使用3台机器搭建 Kafka 集群,在每台机器上添加如下配置:
# vim /etc/hosts
192.168.111.238 master
192.168.111.239 slave1
192.168.111.240 slave2
  • 在安装 Kafka 集群时,没有使用 Kafka 自带的 Zookeeper,而是独立安装了一个 Zookeeper 集群,也是使用这3台机器,并且保证 Zookeeper 集群正常运行。
  • 在 master 上准备 Kafka 安装文件,执行如下命令:
5. cd /usr/local/
6. tar xvzf kafka_2.11-1.0.0.tgz
7. ln -s /usr/local/kafka_2.11-1.0.0 /usr/local/kafka
• 修改配置文件 /usr/local/kafka/config/server.properties
8. broker.id=0
9. zookeeper.connect=master:2181,slave1:2181,slave2:2181/kafka

说明 :

默认 Kafka 会使用 ZooKeeper 默认的 / 路径,导致有关 Kafka 的 ZooKeeper 配置就会散落在根路径下面,如果有其他的应用也在使用此 ZooKeeper 集群,查看 ZooKeeper 中的数据会不直观,所以指定一个 chroot 路径,直接在 zookeeper.connect 配置项中指定

  • 需要手动在 ZooKeeper 中创建路径 /kafka,使用如下命令连接到任意一台 ZooKeeper 服务器:
1. cd /usr/local/zookeeper
2. bin/zkCli.sh
3. create /kafka ''
• 将配置好的安装文件同步到其他的 slave1、slave2 节点上:
4. scp -r /usr/local/kafka_2.11-1.0.0/ slave1:/usr/local/
5. scp -r /usr/local/kafka_2.11-1.0.0/ slave2:/usr/local/
• 分别修改配置文件/usr/local/kafka/config/server.properties内容如下
6. # 因为Kafka集群需要保证各个Broker的id在整个集群中必须唯一,需要调整这个配置项的值
7. broker.id=1  # 在slave1修改
8. 
9. broker.id=2  # 在slave2修改
• 在集群中的 master、slave1、slave2 这三个节点上分别启动 Kafka,分别执行如下命令:
10. bin/kafka-server-start.sh /usr/local/kafka/config/server.properties &
• 通过查看日志,或者检查进程状态,保证 Kafka 集群启动成功。

配置 Flume agent,将 Flume 与 Kafka 整合, 配置文件为 flume-conf.properties


agent.sources = logsrc
agent.channels = memchannel
agent.sinks = kafkasink
# configure the source
agent.sources.logsrc.type = exec
agent.sources.logsrc.command = tail -F /data/logs/component_role.log
agent.sources.logsrc.shell = /bin/sh -c
agent.sources.logsrc.batchSize = 50
agent.sources.logsrc.channels = memchannel
# configure the sink
agent.sinks.kafkasink.type = org.apache.flume.sink.kafka.KafkaSink
agent.sinks.kafkasink.brokerList=master:9092, slave1:9092,slave2:9092
agent.sinks.kafkasink.topic=mytopic
agent.sinks.kafkasink.requiredAcks = 1
agent.sinks.kafkasink.batchSize = 20
agent.sinks.kafkasink.channel = memchannel
# configure the channel
agent.channels.memchannel.type = memory
agent.channels.memchannel.capacity = 1000

启动该 Flume 节点


cd /usr/local/apache-flume-1.7.0-bin
./bin/flume-ng agent -n agent -c ./conf -f ./conf/flume-conf.properties -Dflume.monitoring.type=http -Dflume.monitoring.port=10100 -Dflume.root.logger=DEBUG,console

动态追加日志数据,模拟日志输出,进行测试


动态追加日志数据,执行命令向 /data/logs/component_role.log 添加数据:

echo  "测试代码" >>  /data/logs/component_role.log
echo  "检测Flume+Kafka数据管道通畅" >>  /data/logs/component_role.log

验证 Kafka 数据接收结果


root@ubuntu238:/usr/local/kafka_2.11-1.0.0# ./bin/kafka-console-consumer.sh --zookeeper master:2181,slave1:2181,slave2:2181/kafka  --topic mytopic --from-beginning
Using the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].
  1. 测试代码
  2. 检测Flume+Kafka数据管道通畅
相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
4月前
|
数据采集 缓存 大数据
【赵渝强老师】大数据日志采集引擎Flume
Apache Flume 是一个分布式、可靠的数据采集系统,支持从多种数据源收集日志信息,并传输至指定目的地。其核心架构由Source、Channel、Sink三组件构成,通过Event封装数据,保障高效与可靠传输。
296 1
|
存储 数据采集 数据处理
【Flume拓扑揭秘】掌握Flume的四大常用结构,构建强大的日志收集系统!
【8月更文挑战第24天】Apache Flume是一个强大的工具,专为大规模日志数据的收集、聚合及传输设计。其核心架构包括源(Source)、通道(Channel)与接收器(Sink)。Flume支持多样化的拓扑结构以适应不同需求,包括单层、扇入(Fan-in)、扇出(Fan-out)及复杂多层拓扑。单层拓扑简单直观,适用于单一数据流场景;扇入结构集中处理多源头数据;扇出结构则实现数据多目的地分发;复杂多层拓扑提供高度灵活性,适合多层次数据处理。通过灵活配置,Flume能够高效构建各种规模的数据收集系统。
381 0
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
300 2
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
274 1
|
存储 分布式计算 大数据
【Flume的大数据之旅】探索Flume如何成为大数据分析的得力助手,从日志收集到实时处理一网打尽!
【8月更文挑战第24天】Apache Flume是一款高效可靠的数据收集系统,专为Hadoop环境设计。它能在数据产生端与分析/存储端间搭建桥梁,适用于日志收集、数据集成、实时处理及数据备份等多种场景。通过监控不同来源的日志文件并将数据标准化后传输至Hadoop等平台,Flume支持了性能监控、数据分析等多种需求。此外,它还能与Apache Storm或Flink等实时处理框架集成,实现数据的即时分析。下面展示了一个简单的Flume配置示例,说明如何将日志数据导入HDFS进行存储。总之,Flume凭借其灵活性和强大的集成能力,在大数据处理流程中占据了重要地位。
352 3
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
4247 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
9月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
942 54
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
428 9
|
12月前
|
存储 SQL 关系型数据库
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log、原理、写入过程;binlog与redolog区别、update语句的执行流程、两阶段提交、主从复制、三种日志的使用场景;查询日志、慢查询日志、错误日志等其他几类日志
913 35
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log

热门文章

最新文章