深入剖析美团基于Flume的网站日志收集系统

深入剖析美团基于Flume的网站日志收集系统

介绍

美团基于Apache Flume搭建了网站日志收集系统,Flume是一个高可靠、高可扩展、高可定制化的分布式日志收集系统,在实际应用中广泛被使用。

系统架构

日志生成端

网站的日志生成端包括Apache、Nginx服务器等,这些服务器会产生大量日志数据。

Agent

在日志生成端安装Agent组件,配置agent采集器参数,并将日志发送到Flume的Sink端进行处理。

Collector

在日志接收端安装Collector组件,将采集器接收到的日志数据缓存到本地存储。

Sink

在Collector组件中,将采集到的日志数据发送到Sink组件中进行存储。

Flume核心组件

Source

Source作为Flume架构中的第一环节,指Flume从外界数据源中采集数据的组件,它位于数据流的起点。通常情况下,Source组件会一直接收并且处理外界数据,直至Source组件被终止。

Channel

Channel指Flume架构中负责数据存储的组件,它以FIFO的方式,缓存Source接收到的数据,以便后续其他组件对数据进行处理。

Sink

Sink作为Flume架构中的最后一环节,指Flume将数据存储到数据目标之中的组件,它负责处理Channel中的数据,并将数据发送给下一个Flume Agent或数据存储的系统,如HDFS等。

示例1

在Flume Agent中配置Exec Source来获取生成于2019年6月1日 00:00~01:00之间的nginx日志信息,并将日志信息输出到文件中。以下是Flume Agent的配置文件:

a1.sources = s1
a1.sinks = k1
a1.channels = c1

a1.sources.s1.type = exec
a1.sources.s1.command = tail -f /var/log/nginx/access.log | grep '2019-06-01 00:00:00,000' -A 6000 -B 5000

a1.channels.c1.type = memory

a1.sinks.k1.type = file_roll
a1.sinks.k1.sink.directory = /tmp/flume
a1.sinks.k1.sink.rollInterval = 120
a1.sinks.k1.rollSize = 0

a1.sources.s1.channels = c1
a1.sinks.k1.channel = c1

示例2

在Flume Agent中配置TailDir Source实现对生成在/data/logs/目录下的日志文件进行实时采集,并将数据传输到HDFs存储中。以下是Flume Agent的配置文件:

a1.sources = s1
a1.sinks = k1
a1.channels = c1

a1.sources.s1.type = TAILDIR
a1.sources.s1.positionFile = /data/logs/flume/taildir_position.json
a1.sources.s1.filegroups = logs
a1.sources.s1.filegroups.logs = /data/logs/
a1.sources.s1.batchSize = 1000
a1.sources.s1.batchDurationMillis = 1000
a1.sources.s1.ignorePattern = ^.*(gz)$$
a1.sources.s1.readFromEnd = true

a1.channels.c1.type = memory

a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = /user/flume/dynamic/%Y%m%d/%H/
a1.sinks.k1.hdfs.filePrefix = test-hdfs
a1.sinks.k1.hdfs.fileSuffix = .avro
a1.sinks.k1.hdfs.fileType = DataStream
a1.sinks.k1.hdfs.rollInterval = 3600

a1.sources.s1.channels = c1
a1.sinks.k1.channel = c1

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入剖析美团基于Flume的网站日志收集系统 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 关于SpringSecurity配置403权限访问页面的完整代码

    下面是关于SpringSecurity配置403权限访问页面的完整攻略。 配置SpringSecurity权限控制 在SpringSecurity的配置类中进行权限控制的配置。首先需要注入一个自定义的UserDetailsService对象: @Configuration @EnableWebSecurity public class WebSecurity…

    Java 2023年5月20日
    00
  • Java程序去调用并执行shell脚本及问题总结(推荐)

    Java程序调用执行shell脚本完整攻略 本文将详细介绍Java程序如何调用并执行shell脚本以及相关问题和解决方案。在开始之前,首先要了解一下什么是shell脚本。 shell脚本简介 shell脚本是一种基于文本的脚本语言,旨在为Unix/Linux等操作系统提供一种便捷的命令行编程方式。shell脚本可以自动执行一系列操作,例如复制、移动和删除文件…

    Java 2023年5月23日
    00
  • spring security数据库表结构实例代码

    针对你的问题,我将提供一个完整的攻略来讲解“spring security数据库表结构实例代码”,以下是详细步骤: 1. 规划数据库表结构 首先,需要规划出数据库表结构,这是非常关键的一步。在spring security中,需要创建以下几张表: users(用户表) authorities(角色表) groups(组表) group_authorities…

    Java 2023年5月20日
    00
  • java程序员如何编写更好的单元测试的7个技巧

    下面是针对”Java程序员如何编写更好的单元测试的7个技巧”的一份攻略。 技巧1:拆分单元测试 单元测试应该足够小,以至于一个单元测试只需要测试一个方法或函数。这样使得测试容易重复、快速执行和简单调试。拆分单元测试也使测试更精确,因为每个单元测试只测试一个输入和输出组合。 示例: 以下是一个简单的 Java 类,将两个整数相加并返回结果: public cl…

    Java 2023年5月20日
    00
  • SpringBoot读取资源目录中JSON文件的方法实例

    下面是关于”SpringBoot读取资源目录中JSON文件的方法实例”的完整攻略: 1.准备工作 首先需要在Spring Boot项目中创建一个资源目录,在其中添加一个JSON文件。 例如,在src/main/resources目录下创建json目录,然后在json目录下创建example.json文件,如下图所示: src/main/resources/j…

    Java 2023年5月26日
    00
  • 如何使用​win10内置的linux系统启动spring-boot项目

    下面是如何使用Win10内置的Linux系统启动spring-boot项目的完整攻略。 安装WSL WSL(Windows Subsystem for Linux)是Win10内置的Linux子系统,可在其上运行各种Linux发行版。要使用WSL启动spring-boot项目,首先需要安装WSL: 打开”控制面板”,进入”程序与功能”,选择左侧的”启用或关闭…

    Java 2023年5月19日
    00
  • spring security CSRF防护的示例代码

    下面我将为你详细讲解如何实现spring security CSRF防护的示例代码。 一、使用spring security实现CSRF防护的原理 Spring Security主要通过以下两种方式实现CSRF防护: CSRF Token 在用户登录后,在服务器端生成一个Token,将该Token发送给前端页面。在前端页面的每一个提交操作中,都需要将这个To…

    Java 2023年5月20日
    00
  • JAVA中string数据类型转换详解

    JAVA中string数据类型转换详解 在Java中,我们经常需要对数据类型进行转换以满足特定的需求。其中,String类型的转换是非常常见的操作。 String类型转换为基本数据类型 在Java中,String类型可以通过方法调用将其转换为基本数据类型。以下是一些常见的String到基本数据类型转换方法: 1. parseInt()方法 该方法将Strin…

    Java 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部