如何从 Nifi 1.2.0 中的报告任务访问计数器
How to access counters from Reporting task in Nifi 1.2.0
在 Nifi 1.4.0 中,为了从脚本报告任务访问计数器,您可以执行以下操作:
context.eventAccess.controllerStatus.processGroupStatus.each { pg ->
pg.processorStatus.each { ps ->
ps.counters.each { counter
System.out.println("${counter.key} -> ${counter.value})
}
}
那是因为 ProcessorStatus API 公开了:
Map<String,Long> getCounters()
但是,我使用的是 NiFi 1.2.0。
class ProcessorReportingTask 没有此方法。
我正在拼命寻找一种从 ReportingTask 访问计数器的方法(因此,通过 ReportingContext,因为这是脚本中绑定的内容)。
因为我的 ReportingTask 正在向我们的石墨服务器报告指标。
有什么想法吗?
我知道我可以通过 REST APIs 访问指标。
但那样一来,我的 ScriptedReporingTask 目标就完全消失了,我需要设置一个额外的软件来从外部收集这些指标。而 ReponrtingTask 只会来自 NiFi 系统 运行。
我相信您必须升级到 1.4.0 才能访问 getCounters 方法,据我所知,没有其他方法可以通过 ReportingContext,这就是为什么它被添加到 1.4.0 中作为这个 JIRA:
在 Nifi 1.4.0 中,为了从脚本报告任务访问计数器,您可以执行以下操作:
context.eventAccess.controllerStatus.processGroupStatus.each { pg ->
pg.processorStatus.each { ps ->
ps.counters.each { counter
System.out.println("${counter.key} -> ${counter.value})
}
}
那是因为 ProcessorStatus API 公开了:
Map<String,Long> getCounters()
但是,我使用的是 NiFi 1.2.0。
class ProcessorReportingTask 没有此方法。
我正在拼命寻找一种从 ReportingTask 访问计数器的方法(因此,通过 ReportingContext,因为这是脚本中绑定的内容)。
因为我的 ReportingTask 正在向我们的石墨服务器报告指标。
有什么想法吗?
我知道我可以通过 REST APIs 访问指标。 但那样一来,我的 ScriptedReporingTask 目标就完全消失了,我需要设置一个额外的软件来从外部收集这些指标。而 ReponrtingTask 只会来自 NiFi 系统 运行。
我相信您必须升级到 1.4.0 才能访问 getCounters 方法,据我所知,没有其他方法可以通过 ReportingContext,这就是为什么它被添加到 1.4.0 中作为这个 JIRA: