如果有不清楚可以参考

Telegraf 通过 jolokia 采集 hdfs 指标

修改 <HADOOP_HOME>/etc/hadoop/yarn-env.sh 增加如下内容

export JOLOKIAJAR="$HADOOP_HOME/external_jars/jolokia-jvm-1.6.2-agent.jar"
export YARN_RESOURCEMANAGER_OPTS="${YARN_RESOURCEMANAGER_OPTS} -javaagent:${JOLOKIAJAR}=port=7779,host=0.0.0.0"
export YARN_NODEMANAGER_OPTS="${YARN_NODEMANAGER_OPTS} -javaagent:${JOLOKIAJAR}=port=7780,host=0.0.0.0"

明确我们需要采集的指标. 基于 hadoop 2.8.5

指标参考官网

Apache Hadoop 2.8.5 - Overview

Yarn Resource Manager

修改 /etc/telegraf/telegraf.conf 文件, 增加如下内容

########################
# RESOURCE_MANAGER     #
########################
[[inputs.jolokia2_agent]]
urls = ["<http://txz-data0:7779/jolokia>"]  # 访问namenode 绑定的 jolokia
name_prefix = "hadoop.hdfs.resourcemanager." # 写入 influxdb 的 name 前缀

[[inputs.jolokia2_agent.metric]]
name  = "RMState"
mbean = "Hadoop:service=ResourceManager,name=ClusterMetrics"
paths = ["NumActiveNMs", "NumLostNMs", "NumUnhealthyNMs", "NumDecommissionedNMs"]

[[inputs.jolokia2_agent.metric]]
name  = "ApplicationState"
mbean = "Hadoop:name=QueueMetrics,q0=root,service=ResourceManager"  # 取默认 group 为 root 队列 的所有程序
paths = ["AppsSubmitted", "AppsRunning", "AppsPending", "AppsCompleted", "AppsKilled", "AppsFailed", 
"AllocatedMB", "AllocatedVCores", "AllocatedContainers", "AvailableMB", "AvailableVCores", "running_0", 
"running_60", "running_300", "running_1440"]

[[inputs.jolokia2_agent.metric]]
name  = "jvm_runtime"
mbean = "java.lang:type=Runtime"
paths = ["Uptime"]

[[inputs.jolokia2_agent.metric]]
name  = "jvm_memory"
mbean = "java.lang:type=Memory"
paths = ["HeapMemoryUsage", "NonHeapMemoryUsage", "ObjectPendingFinalizationCount"]

# [[inputs.jolokia2_agent.metric]]
# name  = "ASM_RPCContext"  # RM的applications manager(ASM)端口
# mbean = "Hadoop:service=ResourceManager,name=RpcActivityForPort8032"
# paths = ["RpcProcessingTimeAvgTime", "RpcQueueTimeAvgTime"]

####################
# NODE_MANAGER     #
####################
[[inputs.jolokia2_agent]]
urls = ["<http://txz-data0:7780/jolokia>"]  # 访问namenode 绑定的 jolokia
name_prefix = "hadoop.hdfs.nodemanager." # 写入 influxdb 的 name 前缀

[[inputs.jolokia2_agent.metric]]
name  = "jvm_memory"
mbean = "java.lang:type=Memory"
paths = ["HeapMemoryUsage", "NonHeapMemoryUsage", "ObjectPendingFinalizationCount"]