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,可以調試了。