• 欢迎访问蜷缩的蜗牛博客 蜷缩的蜗牛
  • 微信搜索: 蜷缩的蜗牛 | 联系站长 kbsonlong@qq.com
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Flume的监控(Monitor)

大数据 lxw1234@qq.com 7个月前 (02-12) 21次浏览 已收录

使用 Flume 实时收集日志的过程中,尽管有事务机制保证数据不丢失,但仍然需要时刻关注 Source、Channel、Sink 之间的消息传输是否正常,比如,SouceàChannel 传输了多少消息,ChannelàSink 又传输了多少,两处的消息量是否偏差过大等等。

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 时候,增加两个参数:

flume-ng agent -n agent_lxw1234 –conf . -f agent_lxw1234_file_2_kafka.properties -Dflume.monitoring.type=http -Dflume.monitoring.port=34545

flume.monitoring.type=http 指定了 Reporting 的方式为 http,flume.monitoring.port 指定了 http 服务的端口号。

 

启动后,会在 Flume Agent 所在的机器上启动 http 服务,http://<hostname>:34545/metrics 打开该地址后,返回一段 JSON:

{
    "SINK.sink_lxw1234":{
        "ConnectionCreatedCount":"0",
        "BatchCompleteCount":"0",
        "BatchEmptyCount":"72",
        "EventDrainAttemptCount":"0",
        "StartTime":"1518400034824",
        "BatchUnderflowCount":"43",
        "ConnectionFailedCount":"0",
        "ConnectionClosedCount":"0",
        "Type":"SINK",
        "RollbackCount":"0",
        "EventDrainSuccessCount":"244",
        "KafkaEventSendTimer":"531",
        "StopTime":"0"
    },
    "CHANNEL.file_channel_lxw1234":{
        "Unhealthy":"0",
        "ChannelSize":"0",
        "EventTakeAttemptCount":"359",
        "StartTime":"1518400034141",
        "Open":"true",
        "CheckpointWriteErrorCount":"0",
        "ChannelCapacity":"10000",
        "ChannelFillPercentage":"0.0",
        "EventTakeErrorCount":"0",
        "Type":"CHANNEL",
        "EventTakeSuccessCount":"244",
        "Closed":"0",
        "CheckpointBackupWriteErrorCount":"0",
        "EventPutAttemptCount":"244",
        "EventPutSuccessCount":"244",
        "EventPutErrorCount":"0",
        "StopTime":"0"
    },
    "SOURCE.source_lxw1234":{
        "EventReceivedCount":"244",
        "AppendBatchAcceptedCount":"45",
        "Type":"SOURCE",
        "AppendReceivedCount":"0",
        "EventAcceptedCount":"244",
        "StartTime":"1518400034767",
        "AppendAcceptedCount":"0",
        "OpenConnectionCount":"0",
        "AppendBatchReceivedCount":"45",
        "StopTime":"0"
    }
}

我的例子中,Source 为 TAILDIR,Channel 为 FileChannel,Sink 为 Kafka Sink。三个 JSON 对象分别打印出三个组件的 Counter 信息。

比如:SOURCE 中”EventReceivedCount”:”244″ 表示 SOURCE 从文件中读取到 244 条消息;

CHANNEL 中”EventPutSuccessCount”:”244″ 表示成功存放 244 条消息;

SINK 中”EventDrainSuccessCount”:”244″ 表示成功向 Kafka 发送了 244 条消息。

 

如果觉得本博客对您有帮助,请 赞助作者

转载请注明:lxw 的大数据田地 » Flume 的监控(Monitor)


蜷缩的蜗牛 , 版权所有丨如未注明 , 均为原创丨 转载请注明Flume 的监控(Monitor)
喜欢 (0)
[]
分享 (0)