Flume的监控(Monitor)

        在使用Flume实时收集日志的过程中,虽然有事务机制保证数据不丢失,但仍需要时刻关注Source、Channel、Sink之间的消息传输是否正常。比如,Source给Channel传输了多少消息,Sink从Channel中获取多少消息,Source接收与Sink下沉的消息量(即Channel中堆积的消息量)是否偏差过大,等等。

        Flume为我们提供了Monitor机制(见http://flume.apache.org/FlumeUserGuide.html#monitoring),通过Reporting的方式,把过程中的Counter都打印出来。一共有4中Reporting方式(即JMX Reporting、Ganglia Reporting、JSON Reporting、Custom Reporting),这里以最简单的JSON Reporting为例。

在启动Flume Agent时,需增加两个参数:

bin/flume-ng agent --conf conf --conf-file conf/flume-agent.conf --name logger -Dflume.monitoring.type=http -Dflume.monitoring.port=34545 -Dflume.root.logger=INFO,console

# nohup后台启动
nohup bin/flume-ng agent --conf conf --conf-file conf/flume-agent.conf --name logger -Dflume.monitoring.type=http -Dflume.monitoring.port=34545 -Dflume.root.logger=INFO,console &

监控参数:-Dflume.monitoring.type=http代表使用http的监控方式;-Dflume.monitoring.port=34545代表监控端口为34545。

启动后,会在Flume Agent所在的节点上启动http服务,访问地址http://:34545/metrics会返回一段JSON,如下:

{
	"SOURCE.avroSource": {
		"EventReceivedCount": "729",
		"AppendBatchAcceptedCount": "593",
		"Type": "SOURCE",
		"EventAcceptedCount": "729",
		"AppendReceivedCount": "0",
		"StartTime": "1565406916285",
		"AppendAcceptedCount": "0",
		"OpenConnectionCount": "2",
		"AppendBatchReceivedCount": "593",
		"StopTime": "0"
	},
	"CHANNEL.fileChannel": {
		"ChannelCapacity": "214748364",
		"ChannelFillPercentage": "0.0",
		"Type": "CHANNEL",
		"ChannelSize": "0",
		"EventTakeSuccessCount": "729",
		"EventTakeAttemptCount": "122494",
		"StartTime": "1565406916027",
		"EventPutAttemptCount": "729",
		"EventPutSuccessCount": "729",
		"StopTime": "0"
	},
	"SINK.hdfsSink": {
		"ConnectionCreatedCount": "324",
		"ConnectionClosedCount": "324",
		"Type": "SINK",
		"BatchCompleteCount": "0",
		"BatchEmptyCount": "121184",
		"EventDrainAttemptCount": "729",
		"StartTime": "1565406916028",
		"EventDrainSuccessCount": "729",
		"BatchUnderflowCount": "581",
		"StopTime": "0",
		"ConnectionFailedCount": "0"
	}
}

监控指标说明:

Source:

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

Channel:

  • EventPutSuccessCount:成功写入channel且提交的事件总数量
  • ChannelFillPercentage:channel满时的百分比,重点就在这个值,一般情况下,这个值小于0.01就代表很通畅,sink的速度比source的速度快,如果这个值超过了5,就代表肯定是sink的速度不够快,需要对sink进行调优,或者需要控制source的速率。
  • StopTime:channel停止时自Epoch以来的毫秒值时间
  • EventPutAttemptCount:Source尝试写入Channe的事件总数量
  • ChannelSize:目前channel中事件的总数量
  • StartTime:channel启动时自Epoch以来的毫秒值时间
  • EventTakeSuccessCount:sink成功读取的事件的总数量
  • ChannelCapacity:channel的容量
  • EventTakeAttemptCount:sink尝试从channel拉取事件的总数量。这不意味着每次事件都被返回,因为sink拉取的时候channel可能没有任何数据

Sink:

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

 

你可能感兴趣的:(Flume)