Flume官网分享之七

198 阅读7分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

Flume自带的度量报告

1. HTTP报告度量

实现HTTP的方式,当启动Agent时传递  -Dflume.monitoring.type=http -Dflume.monitoring.port=5653参数给Agent:

属性名称    默认值    描述
type    –    组件类型名必须是http
port    41414    启动服务器的端口。
 flume-ng agent -c conf -f /etc/flume/conf/flume-conf.properties.template -n agent -Dflume.monitoring.type=http -Dflume.monitoring.port=5653

这将使得Flume在5653端口上启动一个HTTP服务器。访问/metric界面,将返回如下JSON格式的度量(用来访问指标的URL是http://host:5653/metrics) ==备注:当前的机器IP是host== JSON格式的数据类型:

{
"type.component1" : {"metric1":"value1","metric2":"value2"},
"type.component2" : {"metric3":"value3","metric4":"value4"},
}

2.Ganglia度量报告

Flume也可以发送度量信息给Ganglia(Ganglia是一个开源的集群性能检测项目),用来监控Flume。在任何时候只能启动一个Ganglia或HTTP监控。Flume周期性的向Ganglia报告度量——默认情况是一分钟一次,但是该值可以进行配置用来更频繁地报告度量。为了启用Ganglia报告,用下面的命令行启动Flume:

Ganglia的度量参数列表:

属性名称    默认值    描述
type    –    组件类型名必须是ganglia
hosts    –    主机名的逗号分隔列表:Ganglia服务器的端口
pollFrequency    60    时间,以秒为单位,从连续报告到Ganglia服务器
isGanglia3    false    Ganglia服务器版本是3。默认情况下,Flume以Ganglia 3.1格式发送
 flume-ng agent -c conf -f etc/flume/conf/flume-conf.properties.template --name agent  -Dflume.monitoring.type=ganglia -Dflume.monitoring.hosts=host:8655 -Dflume.monitoring.pollFrequency=30 -Dflume.monitoring.isGanglia3=ture

 度量的含义

1. Source度量

度量描述
OpenConnectionCount目前与客户端或sink保持连接的总数量(目前只有avro source展现该度量)
Type对于Source,该指标总是返回SOURCE                
AppendBatchAcceptedCount成功提交到channel的批次的总数量
AppendBatchReceivedCount接收到事件批次的总数量
EventAcceptedCount成功写出到channel的事件总数量,且source返回success给创建事件的sink或RPC客户端系统
AppendReceivedCount每批只有一个事件的事件总数量(与RPC调用中的一个append调用相等)
StopTimesource停止时自Epoch以来的毫秒值时间
StartTimesource启动时自Epoch以来的毫秒值时间
EventReceivedCount目前为止source已经接收到的事件总数量
AppendAcceptedCount单独传入的事件到Channel且成功返回的事件总数量

2. Channel度量

度量描述
EventPutSuccessCount成功写入channel且提交的事件总数量
ChannelFillPercentagechannel满时的百分比
Type对于Channel该指标总是返回Channel
StopTimechannel停止时自Epoch以来的毫秒值时间
EventPutAttemptCountSource尝试写入Channe的事件总数量
ChannelSize目前channel中事件的总数量
StartTimechannel启动时自Epoch以来的毫秒值时间
EventTakeSuccessCountsink成功读取的事件的总数量
ChannelCapacitychannel的容量
EventTakeAttemptCountsink尝试从channel拉取事件的总数量。这不意味着每次事件都被返回,因为sink拉取的时候channel可能没有任何数据

3. Sink度量

度量描述
Type:对于Sink该指标总是返回Sink
ConnectionClosedCount下一阶段或存储系统关闭的连接数量(如在HDFS中关闭一个文件)
EventDrainSuccessCountsink成功写出到存储的事件总数量
KafkaEventSendTimer 
BatchCompleteCount与最大批量尺寸相等的批量的数量
ConnectionFailedCount下一阶段或存储系统由于错误关闭的连接数量(如HDFS上一个新创建的文件因为超时而关闭)
EventDrainAttemptCountsink尝试写出到存储的事件总数量
ConnectionCreatedCount下一个阶段或存储系统创建的连接数量(如HDFS创建一个新文件)
BatchEmptyCount空的批量的数量,如果数量很大表示souce写数据比sink清理数据慢速度慢很多
StopTime    
RollbackCount
StartTime
BatchUnderflowCount比sink配置使用的最大批量尺寸更小的批量的数量,如果该值很高也表示sink比souce更快

自定义报告度量

例如Source、Sink、Channel的自定义组件,可以使用SourceCounter、SinkCounter、ChannelCounter类直接向Flume框架展现度量,这些类提供了更新Source、Sink、Channel以前度量的方法。其他组件,例如拦截器、序列化器等,也可以展现度量,但是没有便捷的类可以直接这个实现,因为每个组件可能展现看起来不一样的度量。这些组件可以使用MonitoredCounterGroup类直接向JMX报告度量。自定义组件应该创建一个继承自该类的counter类,对于不同的度量有一个公共的获取方法。为了增加、更新、增量这些度量值,counter类可以提供一些方法,供自定义来实现使用。

Flume对接Ambari-metrics

Ambari自定义Flume的度量

深入Ambari Metrics 机制分析

Ambari代理Flume运行

 1. 登录Ambari并验证服务是否正在运行。点击Flume服务; “摘要”页面显示总体状态。单击“配置”选项卡以编辑Flume配置。

 2. 使用配置组启动具有不同配置的Flume代理。大多数情况下,Flume流程很复杂,不同的代理程序在Flume主机上运行。从Ambari Web界面,您可以将主机划分为不同的配置组。每个配置组都可以与Flume代理的特定配置文件相关联。本节介绍如何为Flume代理创建配置组。在Flume Configs页面上,==默认组包含所有Flume主机,此默认组中的所有主机都运行相同的Flume代理==。

 3. 要创建配置组,请单击“管理配置组” - > +。键入新组的名称和说明。单击确定。

 4. 选择新组(在此示例中为“guzhi”),然后单击空主机名框下的+。

 5. 选择要包含在配置组中的主机。单击保存。

 6. Configs页面有两个部分:Flume代理配置的“flume.conf”和flume-env.sh文件的“Advanced flume-env”。展开“flume.conf”,默认情况下,它只包含一个注释行:#Flume agent config。将代理配置添加到此字段。单击“保存”,然后重新启动Flume服务(单击“重新启动”)以使更改生效。。例如,从组列表中选择guzhi,单击flume.conf部分中的+,然后添加Flume代理配置详细信息。

 7.展开Advanced flume-env部分,单击+,然后根据需要更改flume-env值。您可以更新内存参数或将自定义JAR文件添加到类路径。

 8. 重启Flume后,在“摘要”页面上,您现在可以看到不同配置组中的主机运行不同的Flume代理。

命令行实现

Flume的规划

规划部署Flume

 1. 修复时间

大多数生产部署对出现故障的系统定义了平均修复时间(MTTR),这通常是系统在线恢复将花多长时间的评估。 MaxTTR,是单个服务器的最大故障时间;MTSR,储存或索引集群的最大故障时间。

 2. Flume Channel的容量

Flume Channel的容量在生产数据的应用程序和存储系统直接提供了一个缓冲区。无法访问存储系统的最大时间等于MaxSTR。这意味着在一段时间内,应用程序仍然能生产和写入数据到Flume。计算总缓冲能力很简单。假设所有的应用服务器事件的综合生产能力在高峰小时是每秒Pmax个事件。那么在这个时期生产的总数表示为: Tmax = Pmax * MaxTSR 为了在整个Flume部署中优异的Channel容量为提高Tmax的25%的容量。

 3.对于多层的设计

  • 层与层之间的比例最优为小于32:1
  • 在进行大于T级别的数据传输时,sink与hdfs直接连接时最好不要超过8个,还存在其应用于hdfs连接。