热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Flume入门及疑惑

背景Flume日志采集框架,使用默认的组件简单运行了一下。本文介绍sink使用file_roll的配置及疑惑。windows下命令语法下载压缩文件后解压到本地&

背景

Flume 日志采集框架,使用默认的组件简单运行了一下。
本文介绍 sink 使用 file_roll 的配置及疑惑。

windows 下命令语法

下载压缩文件后解压到本地,跟其他 Apache 项目一样,是一个二进制文件包,运行文件位于 bin 目录中,启动 agent 的语法如下:

flume-ng.cmd agent [OPTION]

OPTION 基础选项:

  1. --conf 配置文件所在的目录
  2. --config-file agent 启动的配置文件
  3. --name 需要启动的 agent 名称

配置一个 sink 为 file_role 的 demo

agent1.sinks.loggerSink.type = file_roll
agent1.sinks.loggerSink.sink.directory = E:/file_roll
agent1.sinks.loggerSink.sink.rollInterval = 0

这个配置项目,跟我理解的不太一样:

  1. directory 属性之前多了一个 sink 前缀,我理解的 directory 和 type 一样是同一等级的属性,初看以为配置写错了呢。
  2. directory 指定的是文件目录,且必须创建,如果不存在,flume 不会自行创建,程序后台报异常,但是控制台不会输出异常。

技术运用思考


  1. 是否支持集群部署呢?多 Agnet 和多路复用流。
  2. sinkgroup 跟单个 sink 的区别是什么?

为什么会有转发的需求呢?

官方有一个转发 flow 的配置案例:

To setup a multi-tier flow, you need to have an avro/thrift sink of first hop pointing to avro/thrift source of the next hop. This will result in the first Flume agent forwarding events to the next Flume agent. For example, if you are periodically sending files (1 file per event) using avro client to a local Flume agent, then this local agent can forward it to another agent that has the mounted for storage.

周期性的发送 webserver 的日志给本地 Flume Agent,然后再由它转发给下一个能够存储的 Agent。
在这里插入图片描述
为什么要多一层转发,而不是直接配置 sink 输出为下一跳的 HDFS 的输出呢?

我想到一种可能是网络不通时,可以通过这个配置,当做转发跳板,完成不连通网段的日志转发。

selector 的 optional 配置生效步骤

一个 source 可以转发 Event 到多个 Channel 中,Flume 提供了 selector 配置转发路由,根据官方文档,总结必须转发的 Channel 和可选转发的 Channel 以及默认转发的 Channel 生效的顺序。

第一个知识点, selector.type 有两个选项,replicatingmultiplexing ,默认是 replicating

第二个知识点,按官方示例对某个 source 的 selector 配置了必须、可选、默认的 Channel :

# channel selector configuration
agent_foo.sources.avro-AppSrv-source1.selector.type = multiplexing
agent_foo.sources.avro-AppSrv-source1.selector.header = State
agent_foo.sources.avro-AppSrv-source1.selector.mapping.CA = mem-channel-1
agent_foo.sources.avro-AppSrv-source1.selector.mapping.AZ = file-channel-2
agent_foo.sources.avro-AppSrv-source1.selector.mapping.NY = mem-channel-1 file-channel-2
agent_foo.sources.avro-AppSrv-source1.selector.optional.CA = mem-channel-1 file-channel-2
agent_foo.sources.avro-AppSrv-source1.selector.mapping.AZ = file-channel-2
agent_foo.sources.avro-AppSrv-source1.selector.default = mem-channel-1

转发 Event 的流程中,匹配 CA 的事件:

  1. 先尝试转发必须映射Channel mem-channel-1 中。
  2. 如果第一步转发失败,则重试继续写入 mem-channel-1
  3. mem-channel-1 写入成功后,再尝试写入可选的 Channel file-channel-2,如果写入失败,则不会重试。
  4. optional 如果直接配置在全局事件上,此时没有匹配的 Event 会进入 default ,同时也会进入 optional 的 Channel 。

SSL 参数配置


The SSL system properties can either be passed on the command line or by setting the JAVA_OPTS environment variable in conf/flume-env.sh. (Although, using the command line is inadvisable because the commands including the passwords will be saved to the command history.)

参数设置的方式有两种,一种是 Java 的环境变量,另一种是 Flume 的环境参数,官方不建议通过命令行的方式设置 Java 环境变量,因为命令会记入操作系统的 history 文件中,包含的 SSL 的敏感信息会暴露。

但问题时,SSL 参数配置中有明文,通过配置文件也还是有暴露的风险啊。

知识点 ,SSL 配置生效的优先级,从高到低:

  1. 组件级别的参数配置。
  2. Java 系统环境变量。
  3. Flume 的环境变量。

推荐阅读
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文探讨了高质量C/C++编程的最佳实践,并详细分析了常见的内存错误及其解决方案。通过深入理解内存管理和故障排除技巧,开发者可以编写更健壮的程序。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 如何在窗口右下角添加调整大小的手柄
    本文探讨了如何在传统MFC/Win32 API编程中实现类似C# WinForms中的SizeGrip功能,即在窗口的右下角显示一个用于调整窗口大小的手柄。我们将介绍具体的实现方法和相关API。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
author-avatar
右心1477
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有