Ambari Metric System(以下简称AMS)作为Ambari中用作监控的独立的模块,其核心即是一个TimelineServer,其具有自己的内在工作机制,类似一个WEB服务。如下图所示,是其在Ambari中的源码结构:
因此针对Ambari Server 的远程调试,并不能同时调试AMS,毕竟它们的端口也不相同。如果想调试AMS,则必须要在AMS的启动参数中加上对应的调试说明。总结下AMS是如何启动的,首先在web界面点击启动,则Ambari Server会向agent发送命令,调用AMS的启动脚本,看一下这个启动脚本。
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的命令,添加调试参数:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8081
添加后即可得到如下图所示:
以上一系列操作后,去Server端重启一下metrics,基本就可调试了,再然后就是在IDE中配置相关的调试参数,如下图添加的远程调试应用所示:
填写上面指定的8081端口(注意:指定的端口可能被占用),如此,接下来便可以通过IDEA进行调试了。