2013-07-01 2 views
4

응용 프로그램이 실행되는 서버에 소프트웨어를 설치하기 만하면 자세한 통화 트리 통계를 비롯하여 응용 프로그램의 성능 메트릭을 수집하는 AppDynamic 또는 New Relic 종류의 시스템을 어떻게 구축합니까?AppDynamics 또는 NewRelic 계열의 시스템 - 어떻게 작동합니까?

디버그 정보로 앱을 컴파일하지 않고도 이러한 통계를 수집 할 수 있습니까?

이러한 서비스를 구축 할 때 고려해야 할 성능상의 이점은 무엇입니까? 그러한 소프트웨어가 응용 프로그램에 미치는 영향을 최소화하려면 어떻게해야합니까?

답변

6

이러한 제품이 일반적으로 작동하는 방식은 일반적으로 사용되는 라이브러리 및 메소드에서 바이트 코드 삽입/함수 삽입/원숭이 패칭을 수행하는 것입니다. 예를 들어 JDBC 쿼리 메서드, 서블릿 기본 클래스 및 HTTP 클라이언트 라이브러리에 연결할 수 있습니다. 요청이 애플리케이션에 입력되면 모든 중요한 메소드/호출을 추적하고 어떤 방식 으로든 기록하십시오. 데이터를 가져 와서 분석, 차트 및 경고로 처리하십시오.

그 외에도 통계 프로파일 링 또는 기타 옵션을 추가 할 수 있습니다.

까다로운 일은 프로세스 경계에서 요청을 추적하고 수집 할 성능 데이터의 양을 처리하는 것입니다. (AppNeta에서이 문제를 해결합니다.)

체크 아웃 한 가지는 Twitter 지프 킨 (https://github.com/twitter/zipkin)이며, 상당히 초기 단계지만 재미있는 프로젝트를 지원하지 않습니다.

10

AppDynamics와 New Relic은 개발자가 응용 프로그램 (예 : 서블릿, 스트럿츠, SOAP, JMS, JDBC 등)을 빌드하는 데 사용하는 공통 인터페이스 (진입 점 및 종료점)를 모니터링하기 위해 표준 BCI를 사용합니다. 이것은 실행되는 코드의 5 % 미만을 나타내는 타이밍 정보와 함께 코드 실행 (콜 그래프)의 기본 골격을 제공합니다.

프로덕션 JVM에서 너무 많은 오버 헤드가 발생하지 않으면 서 느려지는 동안 나머지 95 % 코드 실행의 시간을 알아내는 것이 그 비결입니다. AppDynamics는 메모리 내 에이전트 분석과 Java API 호출의 조합을 사용하여 나머지 코드 실행을 실시간으로 추출합니다. 즉, 사용자 정의 계측이 필요하지 않으며 모니터링 솔루션에서 계측 할 클래스/메소드를 명시 적으로 선언해야합니다.

AppDynamics 데이터 수집은 New Relic의 데이터 수집과 매우 다릅니다. 예를 들어, AppDynamics를 사용하면 요청 집계를 말하기보다는 특정 사용자 요청에 대해 여러 JVM에 대한 완벽한 분산 콜 그래프를 얻을 수 있습니다.

요즘 BCI는 진단/콜 그래프 정보를 트리거하는 공급 업체에서 사용하는 분석 및 알고리즘이 다르므로 문제를 해결하기 위해 적시에 올바른 가시성을 확보 할 수 있습니다.

스티브.