我使用以下 hadoop-metrics2.properties 配置:
*.sink.graphite.class=org.apache.hadoop.metrics2.sink.GraphiteSink
*.period=10
namenode.sink.graphite.server_host=alex-monitoring
namenode.sink.graphite.server_port=2015
namenode.sink.graphite.metrics_prefix=prefix
Carbon 接收除 FSNamesystem 指标之外的所有指标,例如 CapacityUsed、CapacityUsed 等(在此处完整描述)
我将所有 tcp 请求转储到 carbon,这就是我得到的:
<...>
prefix.dfs.FSNamesystem.Context=dfs.HAState=active.TotalSyncTimes=17 .Hostname=alex-hadoop1.TotalSyncCount 2 1550676511
prefix.dfs.FSNamesystem.Context=dfs.HAState=active.TotalSyncTimes=17 .Hostname=alex-hadoop1.NumInMaintenanceLiveDataNodes 0 1550676511
prefix.dfs.FSNamesystem.Context=dfs.HAState=active.TotalSyncTimes=17 .Hostname=alex-hadoop1.NumInMaintenanceDeadDataNodes 0 1550676511
<...>
这里的问题是路径中的空间:TotalSyncTimes=17 .Hostname=
TotalSyncTimes 应该是一个不同的度量,但它以某种方式出现在度量路径中,在等号之后带有度量值,而且它根本没有作为不同的度量发送/接收(因为 tcpdump 没有捕获具有此度量的数据包作为不同的一个)。
这是 GraphiteSink 或 Hadoop metric 2 的问题,我该如何解决?