pinpoint-apm / pinpoint

APM, (Application Performance Management) tool for large-scale distributed systems.
https://pinpoint-apm.gitbook.io/
Apache License 2.0
13.42k stars 3.75k forks source link

pinpoint webUI에 차트등 화면, 데이터 등 나오지 않는 현상 #2742

Closed gogomasaru closed 7 years ago

gogomasaru commented 7 years ago

JDK : 1.7.0.72 tomcat : 6.0.45

1.TESTAPP은 아래와 같이 realtime Active Thread chart이외에 나오고 있습니다. testapp

  1. 직접 WAS에 agent를 붙인 결과, collector.log, WEBUI 로그상 에러없이 호출들어오고 있는 것으로 보이나, 화면에 아무것도 나오지 않고 입니다. 방화벽은 PC -> pinpoint 서버 28080, 28081, 28082 TCP로 pinpoint -> WAS 29994 TCP 29995 29996 UDP로 방화벽 오픈했습니다. 화면 나오게 도움 부탁드립니다. default

  2. agent 걸어놓은 WAS가 일순간 다운이 됩니다. agent log에는 2017-03-22 14:23:43 INFO PinpointClientHandshaker@2301af85 HandshakeJob completed. 2017-03-22 14:24:52 INFO weaving sourceClass=org/apache/catalina/connector/RequestFacade adviceClass=com/navercorp/pinpoint/plugin/tomcat/aspect/RequestFacadeAspect 2017-03-22 14:24:52 INFO weaving method=getHeader(Ljava/lang/String;)Ljava/lang/String; 2017-03-22 14:24:52 INFO weaving method=getHeaders(Ljava/lang/String;)Ljava/util/Enumeration; 2017-03-22 14:24:52 INFO weaving method=getHeaderNames()Ljava/util/Enumeration; 2017-03-22 15:22:24 INFO Stopping pinpoint Agent. 2017-03-22 15:22:24 INFO AgentInfoSender stopped 2017-03-22 15:22:24 INFO AgentStat monitor stopped 2017-03-22 15:22:24 INFO Pinpoint-UdpSpanDataExecutor(15-0) stopped. 2017-03-22 15:22:24 INFO Pinpoint-UdpStatDataExecutor(16-0) stopped. 2017-03-22 15:22:24 INFO Pinpoint-TcpDataExecutor(14-0) stopped. 2017-03-22 15:22:24 INFO DefaultPinpointClientHandler@2b6471df stateTo() completed. Socket state change success(updateWanted:BEING_CLOSE_BY_CLIENT ,before:RUN_DUPLEX ,current:BEING_CLOSE_BY_CLIENT). 2017-03-22 15:22:24 INFO DefaultPinpointClientHandler@2b6471df channelClosed() started. 2017-03-22 15:22:24 INFO DefaultPinpointClientHandler@2b6471df stateTo() completed. Socket state change success(updateWanted:CLOSED_BY_CLIENT ,before:BEING_CLOSE_BY_CLIENT ,current:CLOSED_BY_CLIENT). 2017-03-22 15:22:24 INFO PinpointClientHandshaker@2301af85 handshakeAbort() started. 2017-03-22 15:22:24 INFO PinpointClientHandshaker@2301af85 unexpected state

tomcat catalina.out에는 정상적으로 shutdown 명령어를 실행한 것 처럼 나옵니다. 별로로 명령어 실행한적 없으며, agent 4대 전부 동시에 내려갔습니다. Mar 22, 2017 3:22:26 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads SEVERE: The web application [/user] appears to have started a thread named [Timer-0] but has failed to stop it. This is very likely to create a memory leak. Mar 22, 2017 3:22:26 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads SEVERE: The web application [/user] appears to have started a thread named [Timer-1] but has failed to stop it. This is very likely to create a memory leak. Mar 22, 2017 3:22:26 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads SEVERE: The web application [/user] appears to have started a thread named [Timer-2] but has failed to stop it. This is very likely to create a memory leak. Mar 22, 2017 3:22:26 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads SEVERE: The web application [/user] appears to have started a thread named [IdleConnectionTimeoutThread_NoRetry] but has failed to stop it. This is very likely to create a memory leak. Mar 22, 2017 3:22:26 PM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks SEVERE: The web application [/user] created a ThreadLocal with key of type [org.apache.log4j.helpers.ThreadLocalMap] (value [org.apache.log4j.helpers.ThreadLocalMap@7149fffa]) and a value of type [java .util.Hashtable] (value [{globalId=14245326537M161005074213C707298}]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak. Mar 22, 2017 3:22:26 PM org.apache.coyote.http11.Http11Protocol destroy INFO: Stopping Coyote HTTP/1.1 on http-8010

koo-taejin commented 7 years ago

안녕하세요

현재 전달주신 정보만으로는 정확한 원인을 파악하기 어렵습니다.

위의 이슈들과 관련하여 몇가지 설정을 살펴보기를 권장해 드립니다.

  1. agent, collector, web, hbase 설치 위치
  2. 각 설치 위치에 따라 정확한 설정이 필요합니다. 위와 관련된 설정은 다음과 같습니다. (ip, port를 정확히 확인하기를 추천드립니다.) (agent/pinpoint.config, collector/hbase.properties, pinpoint-collector.properties, web/hbase.properties, pinpoint-web.properties) 특히 pinpoint-collector.properties, pinpoint-web.properties의 cluster관련된 설정의 가이드를 읽어보고 설정을 다시 한번 체크해보기를 권해드립니다.
  3. 저희가 배포하는 pinpoint.config의 기본 설정의 경우 sampling rate는 20요청당 1건만 추적을 하게 되어있습니다. 만약 충분한 요청이 가지 않는다면 웹에서는 요청이 없는 것 처럼 보일 수 있습니다.

추가적으로 pinpoint는 어플리케이션을 먼저 종료시키지 않습니다. 어플리케이션의 종료는 과거에 경험상 개발자나 서버운영자의 설정 이나 실행실수로 인해서 종료되는 경우가 많았습니다. os의 systemlog를 확인하고 어떤 event에 의해서 process가 종료되어있는지를 확인해 보시는게 좋을 것 같습니다. 개인적으로 process를 background가 아닌 foreground로 실행시키고 터미널의 종료 혹은, 사내 환경에 따른 네트워크 단절에 의해서 어플리케이션이 종료되는 경우를 자주 보았습니다.

gogomasaru commented 7 years ago
  1. quickstart로 가동했습니다.
  2. quickstart의 29994(TCP), 29995(UDP), 29996(UDP)로 WAS 에이전트에 설정도 동일하게 맞습니다. 방화벽도 오픈되어 netstat 명령어로 established로 나옵니다.
  3. 샘플링은 20 -> 1로 변경했습니다. 이외에는 IP, port만 quickstart에 있는 정보로 수정했습니다.
  4. tomcat은 확인하여 조치했습니다. 감사합니다.
  5. 로그에 보면 testapp과 다르게 호출은 되지만, 데이터 sending이 안되는 것 같습니다. 아래 WAS agent로그에서 send만 receive되고 다른내용은 send되지 않고 있습니다. pinpoint collector로그에서는 빈칸으로 값이 받습니다. 데이터를 보내지 못해 no data로 화면이 나오고 있는 것 같습니다. 로그 첨부드립니다. 혹시 의심가는 로그 확인 가능할까요?

quickstart.collector.log 일부.txt

quickstart.web.log - 일부.txt

WAS agent.txt

koo-taejin commented 7 years ago

로그만 보면 agent - collector 간의 TCP연결은 정상적으로 보이네요. agent의 log 레벨을 DEBUG로 변경하여서 agent에서 collector로 SPAN 데이터 전달을 시도하는지 확인하고 문제의 원인을 좁혀 보기를 권해 드립니다.

gogomasaru commented 7 years ago

항상 감사합니다. 위 차트가 보이지 않는 현상은 UDP 방화벽 이슈로 해결했습니다. quickstart 기준으로 제가 오픈한 방화벽은 아래와 같습니다. image

  1. 아키텍처 보면 thrift 사용한다고 되어있습니다. thrift로 전송하는 데이터 종류와 통신 포트 알수 있을까요?

  2. realtime active thread chart 방화벽 없는 PC에서는 잘 나오고 있으나 방화벽 있는 PC에서는 해당 차트가 나오지 않습니다. 관련된 통신 포트 알수 있을까요?

  3. inspector에 다른 차트는 잘 나오나 Data Source 차트가 나오지 않습니다. 각 config에는 true로 설정되어있습니다. pinpoint-web.properties -> config.show.inspector.dataSource=true

agent config -> profiler.pinpoint.datasource=true

default

koo-taejin commented 7 years ago

quickstart를 기준으로 collector와 web간의 cluster 환경을 위해서 양방향으로 29997 TCP port가 추가적으로 열려야 합니다.

추가적으로 DataSource 차트는 DataSource의 agent에서 DataSource를 pinpoint가 발견해야지만 표시가 되게 됩니다. quickstart는 자체 DataSource가 존재하지 않기 때문에 NOT FOUND가 나오는 것이 정상입니다.