远程调试ambari-metrics的方法

IDE:intellij

在ambari-metrics-collector上找到start的运行脚本,再找到启动ambari-metrics-collector的java命令:

vi /var/lib/ambari-agent/cache/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_collector.py 

这里写图片描述

发现是执行 /usr/sbin/ambari-metrics-collector 这个脚本start的,那么编辑这个脚本找到java的启动server的命令,添加调试参数 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8081

vi /usr/sbin/ambari-metrics-collector

添加后如下所示:
这里写图片描述

nohup "${JAVA}" "-cp" "/usr/lib/ambari-metrics-collector/*:${COLLECTOR_CONF_DIR}" "${AMS_COLLECTOR_OPTS}" "-Djava.net.preferIPv4Stack=true" "-Dams.log.dir=${AMS_COLLECTOR_LOG_DIR}" "-Dproc_${DAEMON_NAME}" -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8081  "${CLASS}" "$@" > $OUTFILE 2>&1 &

这样,再在ambari serve 的web ui启动 Metrics Collector ,然后在IDE中编辑远程调试的configurations,写上对应的host和暴露的port。
这里写图片描述

双方就是通过填写的port进行通信,所以要注意之前port必须没有进程在占用。

设置断点,OK,可以调试了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章