如何监控 Apache Flume 代理状态?

How to monitor Apache Flume agents status?

我知道企业(例如 Cloudera)方式,通过使用 CM(通过浏览器)或 Cloudera REST API 可以访问监控和配置工具。

但是如何在没有 CM 的情况下安排 (运行 和重新 运行) flume 代理生命周期,并监控他们的 running/failure 状态? Flume分布中有这样的东西吗?

Flume 的 JSON 报告 API 可用于监控运行状况和性能。 Link

我尝试在开始时将 flume.monitoring.type/port 添加到 flume-ng。而且完全符合我的需求。

让我们创建一个简单的代理 a1 例如。它监听 localhost:44444 并作为接收器记录到控制台:

# flume.conf
a1.sources = s1
a1.channels = c1
a1.sinks = d1

a1.sources.s1.channels = c1
a1.sources.s1.type = netcat
a1.sources.s1.bind = localhost
a1.sources.s1.port = 44444

a1.sinks.d1.channel = c1
a1.sinks.d1.type = logger

a1.channels.c1.type = memory
a1.channels.c1.capacity = 100
a1.channels.c1.transactionCapacity = 10

运行 它带有附加参数 flume.monitoring.type/port:

flume-ng agent -n a1 -c conf -f flume.conf -Dflume.root.logger=INFO,console -Dflume.monitoring.type=http -Dflume.monitoring.port=44123

然后在 localhost:44123/metrics

处在浏览器中监视输出
{"CHANNEL.c1":{"ChannelCapacity":"100","ChannelFillPercentage":"0.0","Type":"CHANNEL","EventTakeSuccessCount":"570448","ChannelSize":"0","EventTakeAttemptCount":"570573","StartTime":"1567002601836","EventPutAttemptCount":"570449","EventPutSuccessCount":"570448","StopTime":"0"}}

只是尝试一些负载:

dd if=/dev/urandom count=1024 bs=1024 | base64 | nc localhost 44444