KR20130019366A - 분산 환경에서 효율적으로 트랜젝션-분리 메트릭들을 수집하는 방법 - Google Patents
분산 환경에서 효율적으로 트랜젝션-분리 메트릭들을 수집하는 방법 Download PDFInfo
- Publication number
- KR20130019366A KR20130019366A KR1020120089770A KR20120089770A KR20130019366A KR 20130019366 A KR20130019366 A KR 20130019366A KR 1020120089770 A KR1020120089770 A KR 1020120089770A KR 20120089770 A KR20120089770 A KR 20120089770A KR 20130019366 A KR20130019366 A KR 20130019366A
- Authority
- KR
- South Korea
- Prior art keywords
- transaction
- component
- branch
- another
- collector
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3419—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3495—Performance evaluation by tracing or monitoring for systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/87—Monitoring of transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/875—Monitoring of systems including the internet
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
어플리케이션의 서로 다른 트랜젝션들의 컴포넌트 인보케이션들을 위한 트랜젝션-분리 메트릭들이 얻어진다. 대응하는 트리 데이터 구조들이 상기 서로다른 트랜젝션들의 인보크된 컴포넌트들의 시퀀스들을 서술하는 에이전트 및 및 관리자에 의해 유지된다. 각 컴포넌트들의 시작과 종료가 트리 데이터 구조의 각 브랜치에 있는 노드에 의해 각각 나타내진다. 각 트랜젝션은 브랜치를 트랜젝션 트레이스에 매칭시킴으로써 식별된다. 트랜젝션-차별 메트릭들을 수집하기 위해, 수집기들이 하나 이상의 노드들에 링크된다. 예컨대, 서로 다른 트랜젝션들에서 컴포넌트 인보케이션들을 위해 메트릭들이 개별적으로 수집될 수 있다. 하나 이상의 트랜젝션에서 서로 다른 컴포넌트들의 인스턴스들을 위한 메트릭들이 또한 수집될 수 있다. 유저 인터페이스가 버틱스들(vertices)이 에지들에 의해 연결된 유향 그래프(directed graph)를 포함한다. 수집기들의 메트릭들에 근거하여, 에지부들이 서로로부터 시각적으로 구분된다. 각 에지부는 하나 이상의 수집기들과 관계될 수 있다.
Description
컴퓨팅 환경에서 소프트웨어를 모니터링하기 위한 기술이 제공된다.
인터넷은 물론 인트라넷 및 엑스트라넷과 같은 다른 컴퓨터 네트워크들의 증가는 e-커머스(e-commerce), 교육 및 다른 영역들에 있어서 많은 새로운 어플리케이션들을 가져왔다. 기관(organizations)들은 점점 이러한 어플리케이션에 의존하여 그들의 비즈니스 또는 기타의 목적들을 수행하며, 이것들이 기대된바 대로 수행되는지 확인하기 위하여 상당한 자원을 쏟아 붓는다. 이를 위하여, 다양한 어플리케이션 관리 기법들이 개발되어 왔다.
한가지 기법은 어플리케이션에서 인보케이션되는 개별 소프트웨어 컴포넌트들에 관한 어플리케이션 런타임 데이터를 수집하여 어플리케이션의 인프라스트럭처를 모니터링하는 것을 포함한다. 이 기법은 모니터링되고 있는 시스템 내에 본질적으로(essentially) 상주하는 에이전트들(agents)을 사용할 수 있다. 예를 들어, 소프트웨어의 인스트루먼테이션(instrumentation)을 사용하여, 쓰레드 또는 프로세서가 트레이싱되어 인보케이션(invoke)되는 각각의 컴포넌트를 식별하고 그리고 또한 각각의 컴포넌트의 실행 시간과 같은 런타임 데이터를 얻을 수 있다. 트레이싱(tracing)은 실행되는 컴퓨터 프로그램 단계들의 상세 레코드(detailed record), 또는 트레이스를 얻는 것을 나타낸다. 트레이스의 일 타입은 스택 트레이스(stack trace)이다. 트레이스들은 디버깅을 보조하여 사용될 수 있다.
일반적으로, 정적 및 동적 데이터를 포함하는 트랜젝션 트레이스 데이터가 에이전트로부터 관리자에게로 통신된다. 그러나, 기존의 기법은 비효과적이며 실질적인 오버헤드 비용을 발생시킨다.
본 발명은 위의 문제 및 다른 문제들을 해결하는 소프트웨어 모니터링 기법을 제공한다.
일 실시예에서, 적어도 하나의 어플리케이션을 모니터링하기 위한 방법을 수행하도록 적어도 하나의 프로세서를 프로그래밍하기 위한 컴퓨터 판독가능 소프트웨어가 내장된 하나 이상의 유형의(tangible) 프로세서-판독가능 저장 디바이스들이 제공된다. 본 방법은, (a) 각각의 브랜치들을 포함하는 트리 데이터 구조를 제공하는 단계와, 여기서 상기 각각의 브랜치들은 상기 적어도 하나의 어플리케이션의 각각의 트랜젝션들을 나타냄과 아울러, 상기 각각의 트랜젝션들의 컴포넌트들의 시작 포인트 및 종료 포인트를 나타내는 노드를 포함하며, 상기 각각의 브랜치들 중 하나의 브랜치는 상기 각각의 트랜젝션들 중 하나의 트랜젝션을 나타내고, 그리고 제 1 수집기(gatherer)에 링크되는 하나의 컴포넌트에 대한 적어도 하나의 노드를 포함하며, 상기 하나의 브랜치 내의 상기 하나의 컴포넌트를 위한 적어도 하나의 노드는 상기 하나의 트랜젝션에서 상기 하나의 컴포넌트의 하나의 인보케이션(invocation)의 시작과 종료 중 적어도 하나를 나타낸다.
본 방법은, (b) 인보크된 컴포넌트들의 하나의 시퀀스를 검출하기 위해 상기 어플리케이션을 트레이싱하는 단계와, 상기 트레이싱은 상기 하나의 트랜젝션에서 상기 하나의 컴포넌트의 상기 하나의 인보케이션의 시작과 종료 중 적어도 하나를 검출하는 것을 포함하며, (c) 상기 트레이싱이 상기 하나의 트랜젝션에서 상기 하나의 컴포넌트의 상기 하나의 인보케이션의 시작과 종료 중 적어도 하나를 검출할 때, 상기 제 1 수집기의 콘텍스트(context)에 있는 상기 하나의 컴포넌트의 적어도 하나의 메트릭(metric)을 수집하기 위해 제 1 수집기를 이용하는 단계와, (d) 인보크된 컴포넌트들의 상기 하나의 시퀀스가 상기 하나의 브랜치와 부합함을 판단하기 위해 상기 트레이싱의 결과를 상기 트리 데이터 구조와 비교하여 단계와, 그리고 (e) 상기 판단에 응답하여, 상기 제 1 수집기의 콘텍스트에 있는 상기 하나의 컴포넌트를 위한 상기 적어도 하나의 메트릭을 관리자에게 보고하는 단계를 더 포함한다.
또 다른 실시예에서, 적어도 하나의 어플리케이션을 관리하기 위한 방법을 수행하도록 적어도 하나의 프로세서를 프로그래밍하기 위한 컴퓨터 판독가능 소프트웨어가 내장된 하나 이상의 유형의 프로세서-판독가능 저장 디바이스들이 제공된다. 본 방법은 상기 적어도 하나의 어플리케이션에서의 각각의 트랜젝션들을 트레이싱하는 적어도 하나의 에이전트로부터 하나 이상의 보고들(reports)을 수신하는 단계를 포함하며, 여기서 상기 하나 이상의 보고들은 상기 각각의 트랜젝션들 중의 적어도 하나의 트랜젝션을 위한 적어도 하나의 메트릭과 제 1 수집기의 관련 식별(identification)을 포함함과 아울러, 및 상기 각각의 트래잭션들 중의 적어도 또 다른 트랜젝션을 위한 적어도 하나의 메트릭과 제 2 수집기의 관련 식별을 포함하며, 상기 제 1 수집기는 상기 적어도 하나의 트랜젝션에서의 컴포넌트 인보케이션들에 응답하여 상기 적어도 하나의 트랜젝션을 위한 상기 적어도 하나의 메트릭을 수집하는데 이용된 것이며, 상기 제 2 수집기는 상기 적어도 또 다른 트랜젝션에서의 컴포넌트 인보케이션들에 응답하여 상기 적어도 또 다른 트랜젝션에 대한 상기 적어도 하나의 메트릭을 수집하는데 이용되었다.
본 방법은 또한 상기 하나 이상의 보고들에 근거하여 유저 인터페이스를 제공하는 단계를 더 포함하며, 상기 유저 인터페이스는 에지(edges)에 의해 연결된 버틱스들로 구성된 유향 그래프(directed graph)를 포함하고, 상기 에지들은 상기 적어도 하나의 트랜젝션을 나타내는 제 1 에지부와 그리고 상기 적어도 또 다른 트랜젝션을 나타내는 제 2 에지부를 포함하며, 상기 제 1 에지부는 상기 제 2 에지 부와 시각적으로 구분된다.
또 다른 실시예에서, 적어도 하나의 어플리케이션을 모니터링하기 위한 방법을 수행하도록 적어도 하나의 프로세서를 프로그래밍하기 위한 컴퓨터 판독가능 소프트웨어가 내장된 하나 이상의 유형의 프로세서-판독가능 저장 디바이스들이 제공된다. 본 방법은, (a) 상기 적어도 하나의 어플리케이션의 각각의 트랜젝션들을 트레이싱하는 단계, 상기 트레이싱하는 단계는 적어도 하나의 트랜젝션 내의 컴포넌트의 일 인스턴스 및 적어도 또 다른 트랜젝션 내의 상기 컴포넌트의 또 다른 인스턴스를 검출하며, (b) 상기 컴포넌트의 상기 일 인스턴스가 상기 적어도 일 트랜젝션의 콘텍스트에서 검출되었음을 판단하고, 그리고 별도로, 상기 컴포넌트의 상기 또 다른 인스턴스가 상기 적어도 또 다른 트랜젝션의 콘텍스트에서 검출되었음을 결정하는 단계와, (c) 상기 컴포넌트의 상기 일 인스턴스가 상기 적어도 하나의 트랜젝션의 콘텍스트에서 검출되었다는 판단에 응답하여, 관리자에게, 상기 적어도 하나의 트랜젝션의 콘텍스트에서 상기 컴포넌트의 상기 일 인스턴스의 적어도 하나의 메트릭을 보고하는 단계와, 그리고 (d) 상기 일 컴포넌트의 상기 또 다른 인스턴스가 상기 적어도 또 다른 트랜젝션의 콘텍스트에서 검출되었음을 판단함에 응답하여, 상기 관리자에게, 상기 적어도 또 다른 트랜젝션의 콘텍스트 내에서 상기 컴포넌트의 상기 또 다른 인스턴스의 적어도 하나의 메트릭을 보고하는 단계를 포함하며, 상기 적어도 하나의 트랜젝션의 콘텍스트는 상기 적어도 또 다른 트랜젝션의 콘텍스트와 구분된다.
하나 이상의 유형의(tangible) 프로세서-판독가능 저장 디바이스들의 컴퓨터-구현 단계들을 수행하는 대응하는 프로세서-구현 방법들이 제공될 수 있다.
하나 이상의 유형의 프로세서-판독가능 저장 디바이스들을 판독하기 위한 하나 이상의 유형의 프로세서-판독가능 저장 디바이스들 및 하나 이상의 프로세서들을 포함하는 대응하는 시스템들이 제공될 수 있다.
실행될 때, 여기에서 제공된 방법 단계들을 수행하는 프로세서-판독가능 명령들로 엔코딩된 대응하는 유형의 컴퓨터- 또는 프로세서-판독가능 저장 디바이스들이 제공될 수 있다.
도 1a는 어플리케이션의 복수의 인스턴스들이 서로 다른 서버들에서 구동(run)되고, 이 서버들의 에이전트들이 관리자에게 보고되는 예시적인 시스템을 도시한다.
도 1b는 어플리케이션의 복수의 인스턴스들이 서로 다른 서버들에서 구동되고, 이 서버들의 에이전트들이 중간 콜렉터(collector)들을 통해 관리자에게 보고되는 예시적인 시스템을 도시한다.
도 2a는 트랜직션의 트레이싱을 시작하기 위한 프로세스의 일 실시예를 기술하는 흐름도이다.
도 2b는 트랜젝션의 트레이싱을 완료하기 위한 프로세스의 일 실시예를 기술하는 흐름도이다.
도 3은 도 1a 또는 도 1b의 네트워크의 컴퓨팅 디바이스를 도시한다.
도 4는 하나 이상의 어플리케이션의 동작을 기술하는데 사용되는 계층(hierarchy)을 도시한다.
도 5a는 도 4의 보고 및 쿼트 비즈니스 트랜젝션(Reports and Quotes Business Transactions)에서 인보케이션되는 컴포넌트들의 예시적인 시퀀스에서의 의존 관계들(dependency relationships)을 도시한다.
도 5b는 도 5a의 의존 관계들에 대한 대안적인, 더욱 간단한 뷰를 도시한다.
도 6a-6i는 도 5a의 트랜젝션들에서 인보크된 컴포넌트들의 서로 다른 시퀀스들에 대한 트랜젝션 트레이스들을 도시한다.
도 7a1은 도 6a-6i의 트랜젝션 트레이이스들에 근거하여 제공되는 에이전트1 및 에이전트2의 트리 데이터 구조의 예를 도시한다.
도 7a2는 도 7a1의 트리 데이터 구조에 대한 대안적인 등가의 뷰를 도시한다.
도 7b는 새로운 브랜치 형태의 도 7a1의 에이전트1의 트리 데이터 구조에 대한 갱신을 도시한다.
도 7c1은 도 7a1의 에이전트1 및 에이전트2의 트리 데이터 구조들을 결합하는 관리자의 트리 데이터 구조를 도시한다.
도 7c2는 도 7a1의 에이전트1의 트리 데이터 구조 내의 최종 노드와 도 7c1의 관리자 트리 데이터 구조의 최종 노드 사이의 대응(correspondence)을 도시한다.
도 7d는 도 7b의 에이전트1의 트리 데이터 구조에 대한 갱신에 부합하는, 도 7c1의 관리자의 트리 데이터 구조에 대한 갱신을 새 브랜치의 형태로 도시한다.
도 8a1은 도 7a1의 트리 데이터 구조에서의 서브시스템1에 대한 브랜치들 및 컴포넌트 인보케이션들의 기록을 도시한다.
도 8a2는 도 7a1의 트리 데이터 구조에서의 서브시스템2에 대한 브랜치들 및 컴포넌트 인보케이션들의 기록을 도시한다.
도 8b1은 도 7a1의 트리 데이터 구조에서의 서브시스템1의 서로 다른 노드들/컴포넌트들을 위한 정적 데이터에 대한 참조 레코드를 도시한다.
도 8b2는 도 7a1의 트리 데이터 구조의 서브시스템2의 서로 다른 노드들/컴포넌트들을 위한 정적 데이터에 대한 참조 레코드를 도시한다.
도 8b3은 도 7b의 agt1-new-브랜치에 대한 도 8b1의 레코드에 대한 갱신을 도시한다.
도 8b4는 도 7c1의 트리 데이터 구조의 관리자의 서로 다른 노드들/컴포넌트들을 위한 정적 데이터에 대한 참조 레코드를 도시한다.
도 8b5는 도 7d에서의 mgr-new-브랜치7에 대한 도 8b4의 레코드에 대한 갱신을 도시한다.
도 8c는 도 7a1의 트리 데이터 구조의 서브시스템1의 서로 다른 노드들/컴포넌트들을 위한 상세사항들의 트레이싱으로부터의 동적 데이터의 레코드를 도시한다.
도 8d는 서로 다른 컴포넌트들과 관련된 정적 데이터의 레코드들을 도시한다.
도 9는 에이전트가 적어도 하나의 어플리케이션에 대해 도 7a1에서와 같은 트리 데이터 구조를 유지하는 예시적인 프로세스를 도시한다.
도 10a는 관리자가 에이전트로부터 수신된 것과 같은, 도 7a1에서와 같은 트리 데이터 구조의 브랜치 식별자 및 동적 데이터의 보고에 근거하여 유저 인터페이스를 제공하는 예시적인 프로세스를 도시한다.
도 10b는 관리자가 하나 이상의 에이전트들로부터 수신된 갱신들에 근거하여 도 7a1-7c1에서와 같은 트리 데이터 구조를 갱신하는 예시적인 프로세스를 도시한다.
도 11a는 정적 데이터 및 동적 데이터를 사용하여 주석과 함께 도 6a의 트랜젝션 트레이스를 도시한다.
도 11b는 정적 데이터 및 동적 데이터를 사용하여 주석과 함께 도 6a의 트랜젝션 트레이스를 도시한다.
도 12a는 각각의 트랜젝션의 각각의 브랜치에서의 일 컴포넌트에 대한 노드에 수집기(gatherer)가 링크된 상태의 도 7a1의 트리 데이터 구조를 도시한다.
도 12b는 서로 다른 각각의 트랜젝션들의 서로 다른 각각의 브랜치들에서의 동일한 컴포넌트의 복수의 발생들(occurrences)에 대한 노드들에 수집기가 링크된 상태의 도 7a1의 트리 데이터 구조를 도시한다.
도 12c는 서로 다른 각각의 트랜젝션의 동일한 각각의 브랜치에서의 동일한 컴포넌트의 복수의 발생들에 대한 노드들에 수집기가 링크된 상태의 도 7a1의 트리 데이터 구조를 도시한다.
도 13a는 도 12a의 트리 데이터 구조의 수집기들(1200, 1202)에 대한 참조 레코드를 도시한다.
도 13b는 도 12b의 트리 데이터 구조의 수집기(1204)에 대한 참조 레코드를 도시한다.
도 13c는 도 12c의 트리 데이터 구조의 수집기(1206)에 대한 참조 레코드를 도시한다.
도 14a는 도 13a의 트리 데이터 구조에 근거한 예시적인 유저 인터페이스를 도시한다.
도 14b는 도 13b의 트리 데이터 구조에 근거한 예시적인 유저 인터페이스를 도시한다.
도 14c는 도 13c의 트리 데이터 구조에 근거항 예시적인 유저 인터페이스를 도시한다.
도 15a는 도 5b및 도 14a에 부합하는 예시적인 유저 인터페이스를 도시한다.
도 15b는 도 15a에 대한 대안인 예시적인 유저 인터페이스를 도시한다.
도 15c는 또 다른 예시적인 유저 인터페이스를 도시한다.
도 16a는 에이전트가 적어도 하나의 어플리케이션에 대한 트랜젝션-분리 메트릭들(transaction-segregated metrics)을 얻는 예시적인 프로세스를 도시한다.
도 16b는 도 16a의 프로세스에 대응하여, 관리자가 에이전트로부터의 트랜젝션-분리 메트릭들의 보고에 근거하여 유저 인터페이스를 제공하는 예시적인 프로세스를 도시한다.
도 1b는 어플리케이션의 복수의 인스턴스들이 서로 다른 서버들에서 구동되고, 이 서버들의 에이전트들이 중간 콜렉터(collector)들을 통해 관리자에게 보고되는 예시적인 시스템을 도시한다.
도 2a는 트랜직션의 트레이싱을 시작하기 위한 프로세스의 일 실시예를 기술하는 흐름도이다.
도 2b는 트랜젝션의 트레이싱을 완료하기 위한 프로세스의 일 실시예를 기술하는 흐름도이다.
도 3은 도 1a 또는 도 1b의 네트워크의 컴퓨팅 디바이스를 도시한다.
도 4는 하나 이상의 어플리케이션의 동작을 기술하는데 사용되는 계층(hierarchy)을 도시한다.
도 5a는 도 4의 보고 및 쿼트 비즈니스 트랜젝션(Reports and Quotes Business Transactions)에서 인보케이션되는 컴포넌트들의 예시적인 시퀀스에서의 의존 관계들(dependency relationships)을 도시한다.
도 5b는 도 5a의 의존 관계들에 대한 대안적인, 더욱 간단한 뷰를 도시한다.
도 6a-6i는 도 5a의 트랜젝션들에서 인보크된 컴포넌트들의 서로 다른 시퀀스들에 대한 트랜젝션 트레이스들을 도시한다.
도 7a1은 도 6a-6i의 트랜젝션 트레이이스들에 근거하여 제공되는 에이전트1 및 에이전트2의 트리 데이터 구조의 예를 도시한다.
도 7a2는 도 7a1의 트리 데이터 구조에 대한 대안적인 등가의 뷰를 도시한다.
도 7b는 새로운 브랜치 형태의 도 7a1의 에이전트1의 트리 데이터 구조에 대한 갱신을 도시한다.
도 7c1은 도 7a1의 에이전트1 및 에이전트2의 트리 데이터 구조들을 결합하는 관리자의 트리 데이터 구조를 도시한다.
도 7c2는 도 7a1의 에이전트1의 트리 데이터 구조 내의 최종 노드와 도 7c1의 관리자 트리 데이터 구조의 최종 노드 사이의 대응(correspondence)을 도시한다.
도 7d는 도 7b의 에이전트1의 트리 데이터 구조에 대한 갱신에 부합하는, 도 7c1의 관리자의 트리 데이터 구조에 대한 갱신을 새 브랜치의 형태로 도시한다.
도 8a1은 도 7a1의 트리 데이터 구조에서의 서브시스템1에 대한 브랜치들 및 컴포넌트 인보케이션들의 기록을 도시한다.
도 8a2는 도 7a1의 트리 데이터 구조에서의 서브시스템2에 대한 브랜치들 및 컴포넌트 인보케이션들의 기록을 도시한다.
도 8b1은 도 7a1의 트리 데이터 구조에서의 서브시스템1의 서로 다른 노드들/컴포넌트들을 위한 정적 데이터에 대한 참조 레코드를 도시한다.
도 8b2는 도 7a1의 트리 데이터 구조의 서브시스템2의 서로 다른 노드들/컴포넌트들을 위한 정적 데이터에 대한 참조 레코드를 도시한다.
도 8b3은 도 7b의 agt1-new-브랜치에 대한 도 8b1의 레코드에 대한 갱신을 도시한다.
도 8b4는 도 7c1의 트리 데이터 구조의 관리자의 서로 다른 노드들/컴포넌트들을 위한 정적 데이터에 대한 참조 레코드를 도시한다.
도 8b5는 도 7d에서의 mgr-new-브랜치7에 대한 도 8b4의 레코드에 대한 갱신을 도시한다.
도 8c는 도 7a1의 트리 데이터 구조의 서브시스템1의 서로 다른 노드들/컴포넌트들을 위한 상세사항들의 트레이싱으로부터의 동적 데이터의 레코드를 도시한다.
도 8d는 서로 다른 컴포넌트들과 관련된 정적 데이터의 레코드들을 도시한다.
도 9는 에이전트가 적어도 하나의 어플리케이션에 대해 도 7a1에서와 같은 트리 데이터 구조를 유지하는 예시적인 프로세스를 도시한다.
도 10a는 관리자가 에이전트로부터 수신된 것과 같은, 도 7a1에서와 같은 트리 데이터 구조의 브랜치 식별자 및 동적 데이터의 보고에 근거하여 유저 인터페이스를 제공하는 예시적인 프로세스를 도시한다.
도 10b는 관리자가 하나 이상의 에이전트들로부터 수신된 갱신들에 근거하여 도 7a1-7c1에서와 같은 트리 데이터 구조를 갱신하는 예시적인 프로세스를 도시한다.
도 11a는 정적 데이터 및 동적 데이터를 사용하여 주석과 함께 도 6a의 트랜젝션 트레이스를 도시한다.
도 11b는 정적 데이터 및 동적 데이터를 사용하여 주석과 함께 도 6a의 트랜젝션 트레이스를 도시한다.
도 12a는 각각의 트랜젝션의 각각의 브랜치에서의 일 컴포넌트에 대한 노드에 수집기(gatherer)가 링크된 상태의 도 7a1의 트리 데이터 구조를 도시한다.
도 12b는 서로 다른 각각의 트랜젝션들의 서로 다른 각각의 브랜치들에서의 동일한 컴포넌트의 복수의 발생들(occurrences)에 대한 노드들에 수집기가 링크된 상태의 도 7a1의 트리 데이터 구조를 도시한다.
도 12c는 서로 다른 각각의 트랜젝션의 동일한 각각의 브랜치에서의 동일한 컴포넌트의 복수의 발생들에 대한 노드들에 수집기가 링크된 상태의 도 7a1의 트리 데이터 구조를 도시한다.
도 13a는 도 12a의 트리 데이터 구조의 수집기들(1200, 1202)에 대한 참조 레코드를 도시한다.
도 13b는 도 12b의 트리 데이터 구조의 수집기(1204)에 대한 참조 레코드를 도시한다.
도 13c는 도 12c의 트리 데이터 구조의 수집기(1206)에 대한 참조 레코드를 도시한다.
도 14a는 도 13a의 트리 데이터 구조에 근거한 예시적인 유저 인터페이스를 도시한다.
도 14b는 도 13b의 트리 데이터 구조에 근거한 예시적인 유저 인터페이스를 도시한다.
도 14c는 도 13c의 트리 데이터 구조에 근거항 예시적인 유저 인터페이스를 도시한다.
도 15a는 도 5b및 도 14a에 부합하는 예시적인 유저 인터페이스를 도시한다.
도 15b는 도 15a에 대한 대안인 예시적인 유저 인터페이스를 도시한다.
도 15c는 또 다른 예시적인 유저 인터페이스를 도시한다.
도 16a는 에이전트가 적어도 하나의 어플리케이션에 대한 트랜젝션-분리 메트릭들(transaction-segregated metrics)을 얻는 예시적인 프로세스를 도시한다.
도 16b는 도 16a의 프로세스에 대응하여, 관리자가 에이전트로부터의 트랜젝션-분리 메트릭들의 보고에 근거하여 유저 인터페이스를 제공하는 예시적인 프로세스를 도시한다.
본 발명은 정적 및 동적 데이터를 포함하는 트랜젝션 트레이스 데이터를 에이전트로부터 관리자에게로 효율적으로 통신하는 소프트웨어 모니터링 기법을 제공한다. 효율성을 향상시키고 오버헤드 비용을 줄이기 위하여, 에이전트 및 관리자에 의해 유지되는 트리 데이터 구조는, 인보크된 소프트웨어 컴포넌트들의 시퀀스를 기술한다. 각각의 컴포넌트의 시작 및 끝은 트리 데이터 구조의 브랜치 내의 노드에 의해 표현된다. 트랜젝션을 식별하기 위하여, 에이전트가 브랜치의 고유 식별자(unique identifier)(예컨대, 브랜치의 최종 노드의 식별자)를 통신할 수 있다. 이는 인보크된 컴포넌트들의 시퀀스가 에이전트로부터 관리자에게로 효율적으로 보고될 수 있게 해준다. 또한, 정적 데이터가 노드들 또는 컴포넌트들 중 하나 이상으로 인덱스될 수 있고, 에이전트 및/또는 관리자에 의해 액세스될 수 있다. 정적 데이터는 일반적으로 주어진 소프트 웨어 버전에 대해 고정되고(fixed), 그리고 또한 고정된 또는 실행-독립적(execution-independent) 데이터로서 여겨질 수 있다. 정적 데이터는, 예를 들어, 컴포넌트와 관련된 클래스 명칭 또는 메쏘드 명칭, 메쏘드 콜들의 시퀀스, 트레이싱된 클래스 파일이 전개될 수 있는 아카이브 파일의 명칭(예컨데, JAVA 아카이브 파일 또는 .JAR 파일 또는 Web 아카이브 파일 또는 .WAR 파일), 텍스트 스트링, 컴포넌트 타입(예를 들어, 서브렛, EJB), 서브렛 또는 소켓을 위한 포트 넘버, URL, 호스트 명칭, 및 로컬 또는 리모트 인터페이스 명칭을 포함할 수 있다. 이들은 소프트웨어를 트레이싱하는 것으로부터 이용가능한 모든 타입의 정보들이다. 정적 데이터의 인덱싱은 동적 데이터를 에이전트로부터 관리자로 반복적으로 통신할 필요성, 및 에이전트 및/또는 관리자가 정적 데이터를 반복적으로 얻을 필요성을 없애준다.
동적 데이터가 트레이스로부터 얻어질 수 있다. 동적 데이터는 컴포넌트들의 시작 및 종료 시간, 및 전달(pass)되는 또는 모니터링된 방법에 의한 파라미터의 값과 같은 다른 동적 데이터를 포함할 수 있다. 동적 데이터는 또한 하나 이상의 노드들 또는 컴포넌트들로 인덱싱될 수 있다. 동적 데이터는 컴포넌트의 시작 및/또는 끝 노드들로 인덱싱될 수 있다. 이 인덱싱을 통해, 동적 데이터가 에이전트로부터 관리자에게로 효율적으로 보고될 수 있다.
트랜젝션이 트레이스될 때, 에이전트는 트리 데이터 구조에서 매칭 브랜치를 식별할 수 있다. 매치가 없다면, 에이전트가 트리 데이터 구조를 갱신하고 그 갱신을 관리자에게 보고하여, 에이전트 및 관리자가 동기화된 버전의 트리 데이터 구조를 유지할 수 있다. 또한, 관리자는 복수의 에이전트들로부터의 보고에 근거하여 트리 데이터 구조를 유지할 수 있으며, 여기서 트리 데이터 구조의 서로 다른 부분들은 서로 다른 에이전트들과 관련된다. 관리자는 또한, 에이전트들이 동일 소프트웨어의 서로 다른 인스턴스들을 모니터링할 때, 일 에이전트로부터 수신되는 갱신(update)을 또 다른 에이전트에게로 전달(pass on)할 수 있다. 이러한 식으로, 새로운 트랜젝션들이 에이전트들 사이에서 빠르게 전파될 수 있으며, 따라서 에이전트들의 트리 데이터 구조들이 동기화된다.
도 1a는 어플리케이션의 복수의 인스턴스들이 서로 다른 서버들에서 구동되고, 서버들의 에이전트들이 관리자에게 보고하는 예시적인 시스템(100)을 도시한다. 예시적인 관리되는(managed) 컴퓨팅 디바이스들(103, 105, 109)은 어플리케이션 서버들 또는 요구되는 기능을 달성하기 위한 코드를 실행하는 프로세서를 갖는 임의의 다른 타입의 컴퓨팅 디바이스를 포함할 수 있다. 관리되는 컴퓨팅 디바이스들은 서로 원격으로 위치되거나 함께-위치(co-located)될 수 있다. 관리되는 컴퓨팅 디바이스들은 이 예에서 네크워트(107)를 통해 관리자 컴퓨터(111)와 통신한다. 관리자 컴퓨터(111)는 관리되는 컴퓨팅 디바이스들에 대해 로컬로 또는 관리되는 컴퓨팅 디바이스들로부터 원격으로 존재할 수 있다. 관리되는 컴퓨팅 디바이스들(103, 105)은 또한 네트워크(102)를 통해 예시적인 웹 브라우저(101)와 같은 클라이언트 컴퓨팅 디바이스들과 통신한다. 웹 브라우저(101)는 예컨대, 인터넷 서비스 제공자를 통해 네트워크(102)에 액세스할 수 있다. 또한, 일례로서, 관리되는 컴퓨팅 디바이스(103)는 웹 브라우저로부터의 요청에 응답하기 위해 필요한 정보를 얻기 위하여, 예컨대, 웹 서비스 콜 또는 EJB 클라인트를 통해 관리되는 컴퓨팅 디바이스(109)를 콜한다. 관리되는 컴퓨팅 디바이스(103)는 또한, 웹 브라우저로부터의 요청에 응답하기 위해 필요한 정보를 얻기 위하여, 메인 프레임, 데이터베이스 또는 몇몇 다른 언인스트루먼트된 컴퓨팅 디바이스와 같은 백종료 시스템(108)을 콜할 수 있다. 인스트루먼테이션의 사용으로 인하여, 관리되는 컴퓨팅 디바이스로부터 완전한 범위(full range)의 성능 메트릭들이 얻어질 수 있으나, 관리되는 컴퓨팅 디바이스로부터 이들을 콜아웃하는데 사용되는 방법들로부터는, 언인스트루먼트된 서브시스템에 관련된 제한된 정보가 획득될 수 있다. 관리되는 컴퓨팅 디바이스들은 프론트 종료 서브시스템들인 것으로 여겨진다. 네트워크들(102, 107)은 동일한 것이거나, 오버랩 또는 구분될 수 있고, 그리고 예를 들어, 인터넷, 다른 광역 네트워크, 및/또는 로컬 영역 네트워크를 포함할 수 있다. 점선은 통신 경로를 나타낸다.
예를 들어, 웹-기반의 e-커머스 어플리케이션과 같은 기업용 어플리케이션을 구동하는 회사는 부하 균형(load balancing)을 위해 일 위치에서 다수의 어플리케이션 서버들을 사용할 수 있다. 예를 들어, 웹 브라우저(101)로부터의 요청들과 같은 유저들로부터의 요청들이 네트워크(102)를 통해 수신되고, 관리되는 컴퓨팅 디바이스들(103, 105) 중 임의의 것으로 라우팅될 수 있다. 에이전트 A1(104), 에이전트 A2(106) 및 에이전트 A3(110) 각각에 의해 표시된 관리되는 컴퓨팅 디바이스들(103, 105, 109)에서 구동되는 에이전트 소프트웨어는 각각의 관리되는 컴퓨팅 디바이스들에서 구동되는 어플리케이션, 미들웨어 또는 다른 소프트웨어로부터 정보를 수집한다. 그러한 정보는 인스트루먼테이션을 이용하여 얻어질 수 있으며, 그 일례는 바이트 코드 인스트루먼테이션이다. 그러나, 수집된 데이터는 다른 방식으로도 또한 얻어질 수 있다. 에이전트들은 본질적으로 모니터링되고 있는 컴퓨팅 디바이스에 상주하며 데이터 획득 포인트를 제공한다. 에이전트는 관리자(124)에게로 통신되는 데이터를 조직화하고 최적화한다. 일 구현예에서, 동일 어플리케이션의 서로 다른 인스턴스들이, 관리되는 컴퓨팅 디바이스들(103, 105)에서 구동되며, 한편 다른 어플리케이션은 관리되는 컴퓨팅 디바이스(109)에서 구동된다.
에이전트들로부터 수신된 데이터에 근거하여 정보를 디스플레이하기 위하여, 유저 인터페이스(113)와 통신하는 워크스테이션과 같은 별도의 컴퓨팅 디바이스(예컨대, 모니터) 상에 관리자(111)가 제공될 수 있다. 관리자는 또한 데이터베이스(112)에 액세스하여 에이전트들로부터 수신된 데이터를 저장할 수 있다. 예를 들어, 일부 대형 기관은, 하나 이상의 관리자들이 서로 다른 지형적 위치들에 분포된 다수의 에이전트들로부터 데이터를 획득하는 중앙 네트워크 오퍼레이션 센터를 이용한다. 설명을 위하여, 웹-기반의 e-커머스 기업은, 고객 오더들을 수신하는 서로 다른 지형적 위치들에 있는 서버들로부터, 지불(payment)을 처리하는 서버들로부터, 재고를 추적하고 오더들을 전달하는 웨어하우스에 있는 서버들로부터, 그리고 기타 서버들로부터 에이전트 데이터를 얻을 수 있다. 관리자(111) 및 유저 인터페이스 디스플레이(113)가 회사 본사 위치에 제공될 수 있다. 반드시 웹-기반일 필요는 없는 또는 레테일 또는 다른 판매를 수반하는 다른 어플리케이션들이, 마찬가지로 이들 시스템들을 관리하기 위한 에이전트들 및 관리자들을 이용한다. 예를 들어, 은행은 체크 및 크레딧 계좌를 처리하기 위한 어플리케이션을 사용할 수 있다. 또한, 언급된 멀티-컴퓨팅 디바이스 구성에 부가하여, 단일 컴퓨팅 디바이스가 또한 하나 이상의 에이전트들을 이용하여 모니터링될 수 있다.
소프트웨어의 실행을 모니터링하기 위하여 소프트웨어를 인스트루먼트화하기 위한 다양한 기법들이 알려져 있다. 예를 들어, 처음에 언급된 바와 같이, 소프트웨어의 실행을 추적하기 위하여 트레이싱이 사용될 수 있다. 트레이싱의 일례는 2011년 1월 11일 등록된 발명의 명칭이 "트랜젝션 트레이서(Transaction Tracer)"이며 본 명세서에 참조로서 포함되는 미국 특허 제7,870,431호에서 논의된다. 상기 특허 문헌에서 논의되는 일 기법에서, 모니터링될 어플리케이션의 오브젝트 코드 또는 바이트코드가 프로브들(probes)로 인스트루먼트화, 예컨대, 수정된다. 프로브들은 어플리케이션의 비즈니스 또는 다른 로직을 변경함이 없이 어플리케이션에 관한 구체적인 정보 피스들을 측정한다. 프로브들이 어플리케이션의 바이트코드 내에 인스톨되면, 이는 관리되는 어플리케이션(managed application)이라 칭해지고, 이 어플리케이션이 구동되는 컴퓨팅 디바이스는 관리되는 컴퓨팅 디바이스(managed computing device)로 칭해진다. 에이전트 소프트웨어가 프로브들로부터 정보를 수신하고 그 정보를, 관리자(111)에서와 같이, 다른 프로세스에 통신하거나, 예컨대, 정보가 비정상 조건을 나타내는지에 대한 판단을 위하여 정보를 로컬로 처리할 수 있다. 에이전트는 따라서, 프로브들로부터 수신된 정보를 수집 및 요약한다. 프로브들은 디렉티브 파일(directives file)에 의해 정의된 것과 같은 정보를 수집한다. 예를 들어, 프로브들로부터의 정보는 트랜젝션 또는 다른 실행 흐름의 시작 및 정지 시간들, 또는 트랜젝션/실행 흐름 내에서 개별 컴포넌트들의 시작 및 정지 시간들을 나타낼 수 있다. 이 정보는 이 정보가 바운드(bounds) 내에 있음을 판단하기 위하여 사전-확립된(pre-established) 기준과 비교될 수 있다. 정보가 바운드 내에 있지 않다면, 에이전트가 이 사실을 관리자에게 보고하여 적절한 문제해결(troubleshooting)이 수행될 수 있다. 에이전트들은 일반적으로 그들이 관련되어있는 로컬의 관리되는 컴퓨팅 디바이스상에서 실행되는 소프트웨어를 인지한다.
프로브들은 CORBA 메쏘드 타이머, 원격 메쏘드 인보케이션(Remote Method Invocation (RMI)) 메쏘드 타이머, 쓰레드 카운터, 네트워크 대역폭, JDBC 갱신 및 쿼리 타이머, 서브렛 타이머, 자바 서버 페이지(JSP) 타이머, 시스템 로그, 파일 시스템 입력 및 출력 데역폭 미터, 이용가능한 사용되는 메모리 및 EJB(Enterprise JavaBean) 타이머를 포함하는 메트릭들의 표준 세트를 보고할 수 있다. 메트릭은 특정 어플리케이션 활동(activity)에 대한 측정이다.
에이전트는 어플리케이션에 의해 액세스되는 자원들을 식별하는 트랜젝션들에 대한 정보를 보고한다. 일 기법에서, 트랜젝션들에 대해 보고할 때, 용어 "콜된(Called)"이 자원을 지칭한다. 이 자원은 컨슈머(consumer)인 부모 컴포넌트의 자원(또는 서브-자원)이다. 예를 들어, 서브렛 A가 트랜젝션에서 인보케이션되는 제 1 컴포넌트라 가정하기로 한다. 컨슈머 서브렛 A(하기 참조)하에서, 서브-자원 콜된 EJB가 있을 수 있다. 컨슈머들 및 자원들이 트리와 같은 방식으로 에이전트에 의해 보고될 수 있다. 트랜젝션에 대한 데이터가 또한 트리에 따라 저장될 수 있다. 예를 들어, 서브렛(예를 들어, 서브렛 A)이 네트워크 소켓(예를 들어, 소켓 C)의 컨슈머이고 그리고 또한 EJB(예를 들어, EJB B)(EJB는 또한 JDBC(예를 들어, JDBC D)의 컨슈머)의 컨슈머라면, 이 트리는 하기 같이 보일 수 있다.
서브릿 A
서브릿 A를 위한 데이터
콜된(Called) EJB B
EJB B를 위한 데이터
콜된 JDBC D
JDBC D를 위한 데이터
콜된 소켓 C
소켓 C를 위한 데이터
일 실시예에서, 위의 트리가 에이전트에 의해 스택(블레임 스택(Blame Stack)이라 칭해짐)에 저장된다. 트랜젝션들이 시작될 때, 이들이 스택 위로 푸쉬된다. 트랜젝션들이 완료될 때, 이들은 스택으로부터 팝 오프(popped off)된다. 일 실시예에서, 스택 상의 각각의 트랜젝션은 다음의 저장된 정보를 갖는다.: 트랜젝션의 타입, 그 트랜젝션을 위해 시스템에서 사용되는 명칭, 파라미터들의 해시맵 또는 디렉토리, 트랜젝션이 스택 상으로 푸쉬될 때에 대한 타임스탬프, 및 서브요소들. 서브요소들은 관심 트랜젝션 내에서부터 시작되는 다른 컴포넌트들(예를 들어, 메쏘드, 프로세서, 프로시저, 함수, 쓰레드, 명령 세트 등)을 위한 블레임 스택 엔트리들이다. 위의 예와 같은 트리를 사용하여, 서브렛 A를 위한 블레임 스택 엔트리가 두 개의 서브요소들(sub-elements)을 가질 것이다. 제 1 서브엔트리는 EJB B를 위한 엔트리일 것이고 제 2 서브요소는 소켓 스페이스 C를 위한 엔트리일 것이다. 서브요소가 특정 트랜젝션을 위한 엔트리의 일부라하더라도, 서브요소는 또한 그 고유의 블레임 스택 엔트리를 가질 것이다. 트랜젝션/브랜치에 대한 엔트리 포인트의 예는 URL이다. 위의 트리에서 공지된 바와 같이, EJB B는 서브렛 A의 서브요소이고 또한 그 고유의 엔트리를 갖는다. 트랜젝션에 대한 상부 (또는 초기) 엔트리 (예를 들어, 서브렛 A)는 루트 컴포넌트라 칭해진다. 스택 상의 엔트리들 각각은 오브젝트이다.
도 1b는 어플리케이션의 복수의 인스턴스들이 서로 다른 서버들에서 구동되고, 이 서버들의 에이전트들이 중간 관리자들(intermediate managers)을 통해 관리자에게 보고하는 예시적인 시스템(115)을 도시한다. 이 예에서, 에이전트 A4(117) 및 에이전트 A5(119)를 각각 갖는 추가적인 관리되는 컴퓨팅 디바이스들(116, 118)이 제공된다. 또한, 에이전트 A4 및 에이전트 A5로부터 각각 데이터를 수신하는 중간의 또는 낮은 레벨의, 관리자 컴퓨팅 디바이스들(120)(관리자 A) 및 (121)(관리자 B)이 제공된다. 중간 관리자들은 또한 네트워크(122)를 통해 데이터를 관리자(111)(이 경우에, 관리자(111)는 높은 레벨 관리자임)에 보고한다. 네트워크(102, 107, 122)는 동일하거나, 오버랩되거나 또는 서로 구분되는 네트워크일 수 있다.
도 2a는 트랜젝션의 트레이싱을 시작하기 위한 프로세스의 일 실시예를 기술하는 흐름도이다. 단계들은 적합한 에이전트(들)에 의해 수행된다. 단계(130)에서, 트랜젝션이 시작된다. 일 실시예에서, 프로세스는 메쏘드(예를 들어, "loadTracer" 메쏘드)의 시작에 의해 트리거된다. 단계(132)에서, 에이전트는 요구되는 파라미터 정보를 획득한다. 일 실시예에서, 유저는 어떤 파라미터 정보가 구성 파일 또는 UI를 통해 획득될 지를 구성할 수 있다. 획득되는 파라미터들은 해시 맵 또는 디렉토리에 저장되며, 이는 블레임 스택 상에 푸시되는 오브젝트의 일부이다. 다른 실시예들에서, 파라미터들의 신원(identification)이 미리-구성된다(pre-configured). 저장될 수 있는 많은 서로 다른 파라미터들이 존재한다. 일 실시예에서, 사용되는 파라미터들의 실제 리스트는, 모니터링되는 어플리케이션에 의존한다. 하기의 테이블은 획득될 수 있는 몇몇 파라미터들의 예를 제공한다.
파라미터들은 쿼리, 쿠키, 포스트, URL, 및 세션 타입 명칭/값 쌍들을 포함할 수 있다.
단계(134)에서, 시스템은 현재의 시간을 표시하는 타임스탬프를 획득한다. 단계(136)에서, 스택 엔트리가 생성된다. 단계(138)에서, 스택 엔트리가 블레임 스택 상에 푸시된다. 일 실시예에서, 타임스탬프가 단계(138)의 부분으로서 부가된다. 프로세스는 트랜젝션이 시작될 때 수행된다. 트랜젝션의 서브-컴포넌트가 시작할 때(예컨대, EJB B는 서브렛 A의 서브-컴포넌트이다 - 위에 기술된 트리 참조) 유사한 프로세스가 수행된다.
도 2b는 트랜젝션의 트레이싱을 종료하기 위한 프로세스의 일 실시예를 기술하는 흐름도이다. 프로세스는 트랜젝션이 종료할 때 에이전트에 의해 수행된다. 단계(140)에서, 프로세스가 트랜젝션(예를 들어, 메쏘드) 종료(예컨대, 메쏘드 "finishTrace"의 콜)에 의해 트리거된다. 단계(142)에서, 시스템은 현재 시간을 획득한다. 단계(144)에서, 스택 엔트리가 제거된다. 단계(146)에서, 단계(142)로부터의 시간스탬프를 스택 엔트리에 저장된 시간스탬프와 비교함으로써 트랜젝션의 실행 시간이 계산된다. 단계(148)에서, 트레이서를 위한 필터가 적용된다. 예를 들어, 필터는 일 초의 임계 기간을 포함할 수 있다. 따라서, 단계(148)는, 단계(146)으로부터의 계산된 기간(duration)이 일 초보다 큰지 여부를 판단하는 것을 포함할 것이다. 임계값이 초과되지 않으면(단계(150)), 트랜젝션을 위한 데이터가 폐기된다. 일 실시예에서, 전체 스택 엔트리가 폐기된다. 또 다른 실시예에서, 파라미터들 및 시간스탬프들만이 폐기된다. 다른 실시예들에서, 데이터의 다양한 서브세트들이 폐기될 수 있다. 일부 실시예들에서, 임계 기간이 초과되지 않으면, 데이터는 에이전트에 의해 도 1a 또는 1b의 시스템 내의 다른 컴포넌트들로 전송되지 않는다. 기간이 임계값을 초과하면(단계(150)), 에이전트는 단계(160)에서 컴포넌트 데이터를 형성한다. 컴포넌트 데이터는 보고될 트랜젝션에 대한 데이터이다. 일 실시예에서, 컴포넌트 데이터는 트랜젝션의 명칭, 트랜젝션의 타입, 트랜젝션의 시작 시간, 트랜젝션의 기간, 파라미터들의 해시 맵 또는 디렉토리, 및 서브요소들 전체(요소들의 재귀적 리스트(recursive list)일 수 있음)를 포함한다. 다른 정보가 또한 컴포넌트 데이터의 부분일 수 있다. 단계(162)에서, 에이전트는 TCP/IP 프로토콜을 통해 관리자(111)로 컴포넌트 데이터를 송신함으로써 컴포넌트 데이터를 보고한다.
도 2b는 트랜젝션이 완료될 때 무엇이 발생하는지를 나타낸다. 그러나, 서브-컴포넌트가 완료될 때, 수행되는 단계들은, 시간 스템프를 얻는 단계, 서브-컴포넌트에 대한 스택 엔트리를 제거하는 단계 및 완성된 서브요소를 전의 스택 엔트리에 부가하는 단계를 포함한다. 일 실시예에서, 필터들 및 결정 로직(decision logic)은, 특정 서브-컴포넌트에보다는 오히려 트랜젝션의 시작 및 끝에 적용된다.
일 실시예에서, 트랜젝션 트레이서가 오프이면, 시스템은 여전히 블레임 스택을 사용할 것이나, 파라미터들은 저장되지 않을 것이고 컴포넌트 데이터가 생성되지 않을 것임에 주목하여야 한다. 몇몇 실시예들에서, 시스템은 트레이싱 기술을 오프로하여 시작하도록 디폴트로 된다. 위에서 기술된 바와 같이, 트레이싱은 유저가 그것을 요청한 후에만 시작된다.
도 3은 도 1a 또는 1b의 네트워크의 컴퓨팅 디바이스를 도시한다. 컴퓨팅 디바이스(300)은 도 1a 또는 1b와 관련하여 논의된 것와 같은 웹 브라우저, 어플리케이션 서버, 관리자 및/또는 유저 인터페이스 중 하나로서 사용될 수 있는 시스템의 간략화된 표현이다. 컴퓨팅 디바이스(300)는 하드 디스크 또는 휴대가능 매체와 같은 저장 디바이스(310), 다른 컴퓨팅 디바이스들과 통신하는 네트워크 인터페이스(320), 소프트웨어 명령들을 실행하기 위한 프로세서(330), 소프트웨어 명령들이 소프트웨어 디바이스(310)로부터 로딩된 후 이 소프트웨어 명령들을 저장하기 위한 예컨대 RAM과 같은 작업 메모리(340), 및 하나 이상의 비디오 모니터와 같은 유저 인터페이스 디스플레이(350)를 포함한다. 유저 인터페이스가 하나 이상의 모니터들에 제공될 수 있다. 저장 디바이스(310)는 프로세서(330)를 여기에서 논의된 기능을 제공하기 위한 방법들을 수행하도록 프로그래밍하기 위한 프로세서 판독가능 코드가 내장된 유형의, 비-일시적(non-transitory) 프로세서-판독가능 또는 컴퓨터-판독가능 저장 디바이스인 것으로 고려될 수 있다. 유저 인터페이스 디스플레이(350)는 하나 이상의 에이전트들로부터 수신된 데이터에 근거하여 운영자(human operator)에게 정보를 제공할 수 있다. 유저 인터페이스 디스플레이(35)는 그래픽이든 또는 표 등이든 임의의 알려진 디스플레이 기법을 사용할 수 있다. 온-스크린 디스플레이에 부가하여, 프린터로부터의 하드 카피와 같은 출력이 제공될 수 있다.
저장 디바이스(310)가 컴퓨팅 디바이스(예컨대, 어플리케이션 서버, 관리자 및/또는 유저 인터페이스들)의 부분일 때 데이터베이스가 저장 디바이스(310) 내에 포함될 수 있다. 저장 디바이스(310)는 하나 이상의 에이전트들로부터 수신된 데이터를 저장하는, 그리고 여기에 기술된 것과 같은 유저 인터페이스를 제공하기 위한 데이터를 획득하기 위해 액세스될 수 있는 하나 이상의 저장 디바이스들을 나타낼 수 있다. 저장 디바이스(310)는 데이터 저장소(data store)를 나타낼 수 있다.
또한, 여기에 기술된 기능은 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어 둘 모두의 조합을 이요하여 구현될 수 있다. 소프트웨어를 위하여, 하나 이상의 프로세서들을 프로그래밍하기 위한 프로세서 판독가능 코드가 내장된 하나 이상의 비-일시적, 유형의 프로세서 판독가능 저장 디바이스들이 사용될 수 있다. 비-일시적, 유형의 프로세서 판독가능 저장 디바이스들은 휘발성 및 비휘발성 매체, 착탈식(removable) 및 고정식(non-removable) 매체와 같은 컴퓨터 판독가능 매체를 포함할 수 있다. 예를 들어, 비-일시적, 유형의 컴퓨터 판독가능 매체는, 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성, 비휘발성, 착탈식 및 고정식 매체를 포함할 수 있다. 비-일시적, 유형의 컴퓨터 판독가능 매체의 예는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광학 디스크 저장, 자기 카세트, 자기 테이프, 자기 디스크 저장 또는 다른 자기 저장 디바이스, 또는 요구되는 정보를 저장하는데 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함한다. 대안적인 실시예에서, 소프트웨어의 일부 또는 전부가 커스텀 집적 회로, 게이트 어레이, FPGA, PLD, 및 특수 목적 프로세서를 포함하는 전용 하드웨어로 대체될 수 있다. 일 실시예에서, 하나 이상의 실시예들을 구현하는 소프트웨어(저장 디바이스 상에 저장됨)가 사용되어 하나 이상의 프로세서들을 프로그래밍할 수 있다. 하나 이상의 프로세서들은 하나 이상의 유형의 컴퓨터 판독가능 매체/저장 디바이스, 주변장치 및/또는 통신 인터페이스와 통신할 수 있다.
도 4는 하나 이상의 어플리케이션들의 동작을 기술하는데 사용되는 계층(hierarchy)을 도시한다. 계층의 서로 다른 레벨들은 임의의 요구되는 조직화 구조에 근거하여 정의될 수 있다. 예를 들어, 계층은 휴먼-페이싱 용어(human-facing terminology), 즉, 모니터링되는 어플리케이션과 클라이언트의 상호작용에 대한 이해를 돕는 용어를 포함할 수 있다. 계층은 어플리케이션과의 임의의 유형의 상호작용 - 상기 상호작용이 영리 목적의 비즈니스의 영역(예컨대, e-커머스 트랜젝션), 또는 교육 기관 또는 정부 기관의 영역에 있든지 간에 - 을 망라할 수 있다. 또한, 하나 이상의 계층은 하나 이상의 계층의 상이한 레벨들에서의 노드들을 포함할 수 있으며, 여기서 각각의 노드는 설명적 명칭(descriptive name)을 갖는다. 계층은 어플리케이션을 어떻게 운영자가 더 잘 이해할 수 있는 방식으로 실행할지에 대한 정보를 조직화하기 위한 방식을 제공하는 추상 구조(abstract construct)인 것으로 고려될 수 있다.
계층의 상부 레벨은 "도메인"이라 명명된 모델인 레벨(400)이다. 계층의 다음 레벨은 비즈니스 서비스 레벨(402)이다. 비즈니스 서비스의 예는 웹 사이트를 이용하여 주식(stock)을 거래하는것과 관련된다. 따라서, "거래(trading)"는 계층의 비즈니스 서비스 레벨에서의 노드의 명칭일 수 있다. 계층의 다음 레벨은 비즈니스 트랜젝션 레벨이다. 비즈니스 서비스는 다수의 비즈니스 트랜젝션들로 구성될 수 있다. 예컨대, 거래를 위해, 비즈니스 트랜젝션들은 보고(Reports)(404)(예를 들어, 주식 또는 계좌에 관한 보고서를 봄) 및 쿼트(Quotes)(406)(예를 들어, 주식 가격에 대한 쿼트를 획득함)를 포함할 수 있다. 또한, 비즈니스 트랜젝션은 하나 이상의 비즈니스 트랜젝션 요소들과 관련될 수 있다. 일 기법에서, 비즈니스 트랜젝션은 단지 하나의 식별 컴포넌트를 가진다. 비즈니스 트랜젝션 컴포넌트는 서브렛 또는 EJB와 같은 서버에의해 인식가능하고 측정가능한 어플리케이션의 일 타입의 컴포넌트일 수 있다. 일 기법에서, 어플리케이션의 컴포넌트들 중 하나가, 비즈니스 트랜젝션을 위한 식별 트랜젝션 컴포넌트인 비즈니스 트랜젝션 컴포넌트로서 설정된다.
비즈니스 트랜젝션 컴포넌트는 비즈니스 트랜젝션을 위한 식별 컴포넌트인 트랜젝션을 위한 식별 트랜젝션 컴포넌트이다. 트랜젝션은 클라이언트로부터의 요청에 응답하여, 클라이언트에게 대응 응답을 제공하기 위하여 인보케이션되는 소프트웨어 컴포넌트들의 시퀀스를 나타낼 수 있다. 예를 들어, 비즈니스 트랜젝션 컴포넌트는
에이전트에 의해 보고된 컴포넌트 데이터가 언제 규칙(rule)들의 세트에 매치되는지를 결정함으로써 식별될 수 있다. 이 정의(definition)는, 예를 들어, 규정된 URL 호스트 명칭, URL 파라미터, HTTP 포스트 파라미터, 쿠키 및/또는 세션 관리자 파라미터를 포함할 수 있다. 추가적으로, 또는 대안적으로, 정의는 트랜젝션이 규정된 URL 호스트 명칭으로 시작할 것을 요구할 수 있다. 에이전트 또는 관리자는, 예를 들어, 컴포넌트 데이터를, 비즈니스 트랜젝션 컴포넌트가 언제 비즈니스 트랜젝션 내에 존재하는지를 결정하기 위한 규칙들의 세트와 대조하여 비교할 수 있다. 비즈니스 트랜젝션 컴포넌트가 검출되면, 관련된 비즈니스 트랜젝션은 규정된 타입의 비즈니스 트랜젝션이다. 예를 들어, 비즈니스 트랜젝션 컴포넌트(408)가 검출되면, 관련된 비즈니스 트랜젝션은 보고(408)이다. 비즈니스 트랜젝션 컴포넌트(410)가 검출되면, 관련된 비즈니스 트랜젝션은 쿼트(406)이다.
도 5a는 도 4의 보고 및 쿼트 비즈니스 트랜젝션에서 인보크된 컴포넌트들의 예시적인 시퀀스에서의 의존 관계를 도시한다. 컴포넌트들은 흐름 경로 내의 블록들로서 표시된다. 동일 컴포넌트가 한번 이상 나타날 수 있다. 또한, 컴포넌트들은 서로 다른 서브시스템들(즉, 서브시스템(1)(점선 위의 컴포넌트들) 또는 서브시스템2(점선 아래의 컴포넌트들))에서 실행될 수 있다.
프로그래머로하여금 컴포넌트라 칭해지는 빌딩 블록들로부터 어플리케이션 또는 다른 프로그램을 어셈블링할 수 있게 하는데에는 컴포넌트-지향(component-oriented) 프로그래밍 모델이 유용한다. 각각의 컴포넌트가 소프트웨어의 전체 기능과 어우러지는 특정 기능을 수행할 수 있다. 또한, 컴포넌트가 다른 컴포넌트들을 콜할 수 있음은 물론 재귀적 콜(recursive call)에서 그 자신을 콜하여, 컴포넌트들의 시퀀스가 프로그램에서 인보케이션될 수 있다. 컴포넌트 지향 프로그래밍 모델의 일례는 자바 서버 페이지, EJB(Enterprise Java Bean), 서브렛, 및 JDBC(Java Database Connectivity) 컴포넌트와 같은 컴포넌트들을 이용할 수 있는 J2EE이다. JDBC는 클라이언트가 어떻게 데이터베이스에 액세스할 수 있는지를 정의하는 JAJV(TM) 프로그래밍 언어용 어플리케이션 프로그래밍 인터페이스(API)이다. 이는 데이터베이스 내에서 데이터를 쿼리하고 갱신하는 방법을 제공한다. 그러나, .NET와 같은 다른 컴포넌트 지향 프로그래밍 모델이 또한 사용될 수 있다. 또한, 프로그래밍 모델이 반드시 객체지향일 필요는 없다.
이 예는 앞에서 논의된 보고 및 쿼트 비즈니스 트랜젝션에 대한 세부사항들을 제공한다. 한가지 가능한 구현예에서, 비즈니스 트랜젝션의 각각의 컴포넌트는 하나 이상의 클래스-메쏘드 쌍을 포함한다. 예를 들어, 서브렛은 JAVA 클래스이다. 이는 요청을 수신하고 대응하는 응답을 생성하는 오브젝트이다. 클래스-메쏘드 쌍은 표기법 클래스.메소드에 의해 표시된다. 예를 들어, 보고는 요구되는 보고에 관한 유저의 입력을 수신하기 위하여 보고 스크린을 유저 인터페이스(UI) 상에 디스플레이하는 컴포넌트 C1(502)을 포함할 수 있다. C1에 대한 클래스-메쏘드 쌍의 예시적인 포맷은 ServletA1.DisplayReportScreen이다. C1은 루트(500)아래에 있다. 따라서, 에이전트가 C1이 인보케이션되었음을 검출할 때마다, 에이전트는 현재의 트랜젝션이 보고들의 일부라고 결론내리고 그 컴포넌트 데이터를 보고들와 관련시킨다.
C1은 요청된 보고와 관련된 C2(504)를 콜할 수 있다. C2는 요청된 보고의 유저 입력을 처리하는 ServletA2.RequestedReport와 같은 클래스-메소드 쌍을 포함할 수 있다. 이 처리는 예를 들어, 요청의 포맷을 검사하는 것, 및 포맷이 유효하면, 보고 요청을 수신하는 서브시스템(2)에서 컴포넌트 C5(508)에 대한 콜을 만드는 것을 포함한다. 예를 들어, 이 콜은 크로스-프로세스, 크로스-쓰레드 트랜젝션 또는 크로스-서브시스템 콜일 수 있다. 포맷이 유효하지 않다면, 제어 흐름은 C1으로 리턴하며, 이는 C3를 인보케이션하여 예컨대, 에러 메시지를 디스플레이할 수 있다.
C5를 위한 클래스-메쏘드 쌍의 예시적인 포맷은 ServletA3.ReceiveReportRequest이다. C5는, 예컨대, 보고 요청의 타입에 근거하여, 데이터베이스1에 액세스하기 위하여 C6(510)을 콜하고/콜하거나 데이터베이스2에 액세스하기 위하여 C7(512)를 콜할 수 있다. 예를 들어, C6 및 C7은 각각 하나 이상의 SQL 스테이트먼트들을 인보케이션하는 JDBC 드라이버 콜을 포함할 수 있다. 제어 흐름은 그후 C5로 리턴되고, 그후 C2로 그리고 그후 C1으로 리턴된다. 후속적으로, C1은 데이터베이스로부터 검색된 데이터에 근거하여 요청된 보고의 디스플레이와 같은 디스플레이를 제공하는 것과 관련된 C3(506)를 콜한다. 제어 흐름은 이후 C1으로 리턴한다.
예를 들어, (서로 다른 시간 주기 등에 걸쳐) 보고 데이터를 상이하게 디스플레이(예를 들어, 리디스플레이(re-display))하기 위한 유저 커맨드에 근거하여, 디스플레이를 조정하도록 C1은 C3를 추가적 횟수로 호출할 수 있다.
또한, 루트(500) 하에서, 원하는 쿼트(quote)에 관한 유저의 입력을 수신하기 위해 유저 인터페이스(User Interface, UI) 상에 쿼트 스크린(quotes screen)을 디스플레이하는 컴포넌트 C4(514)가 제공될 수 있다. C1은 요청된 보고와 관련된 C2(504)를 호출할 수 있다. C2는 예를 들어, 요청의 포맷을 점검함으로써, 그리고 만약 포맷이 유효하다면, 예를 들어 서브시스템1에 대해 로컬(local)인 데이터 소스로부터 그 요청된 쿼트를 획득함으로써, 유저 입력을 프로세싱할 수 있다. 만약 포맷이 유효하지 않다면, 제어 흐름은 C4로 리턴되고, C4는 예를 들어 에러 메시지를 디스플레이하기 위해 C3을 호출할 수 있다.
그 다음에 제어 흐름은 C4로 리턴된다. C4는 C3(518)를 호출할 수 있는바, 이는 데이터 소스로부터 검색된 데이터에 근거하여 그 요청된 쿼트의 디스플레이와 같은 그러한 디스플레이를 제공하기는 것과 관련된다. 예를 들어, (서로 다른 시간 주기에 걸쳐, 서로 다른 이동 평균(moving averages) 등으로) 쿼트 데이터를 상이하게 디스플레이(예를 들어, 리디스플레이)하기 위한 유저 커맨드에 근거하여, 디스플레이를 조정하도록 C4은 C3를 추가적 횟수로 호출할 수 있다.
유의해야 하는 것으로, 하나의 컴포넌트는 또 하나의 컴포넌트를 호출한 이후 계속 실행될 수 있는바, 이는 비동기 모드, 멀티-쓰레드 모드 혹은 멀티-프로세스 모드로 실행을 시작한다. 또는, 하나의 컴포넌트는 동기 모드, 단일-쓰레드 모드 혹은 단일-프로세스 모드로, 그 호출된 컴포넌트가 실행을 마칠 때까지, 일시적으로 잠시 멈출 수 있다. 잠시 멈추고 있는 컴포넌트는 대기 구간(wait interval)에 있는 것으로 고려될 수 있고, 실행 중인 컴포넌트는 활성 실행 모드에 있는 것으로 고려될 수 있다. 또한, 컴포넌트는 트랜젝션(transaction) 동안 한번 이상 인보크(invoke)될 수 있다.
도 5b는 도 5a의 종속 관계의 더 간결한 대안적 도면을 나타낸다. 노드(505)는 노드(504)와 노드(516)를 결합하고, 노드(507)는 노드(506)와 노드(518)를 결합한다.
도 6a 내지 도 6i는 도 5a의 트랜젝션들에서 인보크된 컴포넌트들의 상이한 시퀀스들에 대한 트랜젝션 트레이스(transaction trace)들을 나타낸다. 수평 방향은 시간을 나타내고, 수직 방향은 콜 스택 깊이 혹은 위치를 표시한다. 호출 스택으로 지칭되기도 하는 트랜젝션 트레이스는, 하나 이상의 프로그램들, 프로세스들, 혹은 쓰레드들의 실행 동안 호출 또는 인보크된 인스트루먼트(instrument)된 컴포넌트를 식별한다. 인스트루먼트된 컴포넌트들의 트레이스 데이터는 어플리케이션의 이해 및 디버그를 위해 종속 데이터와 함께 사용될 수 있다. 트랜젝션 트레이스는 트랜젝션의 트레이스, 혹은 트랜젝션의 일부 또는 모두일 수 있고, 그리고 각각의 에이전트들을 갖는 하나 이상의 컴퓨팅 디바이스들에 걸쳐 확장할 수 있다. 특히, 각각의 에이전트에 대해 개별 트랜젝션 트레이스가 제공될 수 있고, 이에 따라 상이한 쓰레드들이 상이한 트랜젝션 트레이스들에 대해 분리된다. 트랜젝션 트레이스는 유저 인터페이스 디스플레이 상에 그래픽 표현으로 제공될 수 있다.
도 6a의 트랜젝션 트레이스는 도 5a의 블록들(502 및 504)에 대응한다. 그래프 부분(600)은 C1을 나타내고, 그래프 부분(602)은 C2를 나타낸다. C1은 t0에서 실행을 시작하고 t7에서 종료 혹은 멈춘다. C1에 의해 호출되는 C2는 t1에서 실행을 시작하고 t6에서 종료한다.
도 6b의 트랜젝션 트레이스는 도 6a의 트랜젝션 트레이스에 맞춰 시간-정렬되어 있고, 도 5a의 블록들(508 및 510)에 대응한다. 그래프 부분(610)은 C5을 나타내고, 그래프 부분(612)은 C2를 나타낸다. C5는 t2에서 실행을 시작하고 t5에서 종료한다. C5에 의해 호출되는 C6은 t2에서 실행을 시작하고 t4에서 종료한다.
도 6c의 트랜젝션 트레이스는 도 6a의 트랜젝션 트레이스에 맞춰 시간-정렬되어 있고, 도 5a의 블록들(508 및 512)에 대응한다. 그래프 부분(620)은 C5을 나타내고, 그래프 부분(622)은 C7을 나타낸다. C5는 t2에서 실행을 시작하고 t5에서 종료한다. C5에 의해 호출되는 C7은 t2에서 실행을 시작하고 t4에서 종료한다. 도 6c의 트랜젝션 트레이스는, 예를 들어 데이터베이스1 대신에 데이터베이스2가 호출된다면, 도 6b의 트랜젝션 트레이스에 대한 대안일 수 있다. 시간 포인트들(t2-t5)은 도 6b에서와 동일할 필요는 없다. 더욱이, 시간 포인트들(t0, t1, t2, 등)은 일반적으로 동일한 시간 증분치를 나타낼 필요가 없다.
도 6d의 트랜젝션 트레이스는 도 5a의 블록들(502 및 504)에 대응한다. 그래픽 부분(620)은 C1을 나타내고, 그래프 부분(632)은 C2를 나타낸다. C1은 t0에서 실행을 시작하고 t3에서 종료한다. C1에 의해 호출되는 C2는 t1에서 실행을 시작하고 t2에서 종료한다. 이러한 트랜젝션 트레이스는, C1이 C2를 호출하고 C2가 유저 요청의 포맷이 유효하지 않다고 판단하고 이에 따라 제어 흐름이 C1로 직접 리턴되는 경우를 나타낼 수 있다.
도 6e의 트랜젝션 트레이스는 도 5a의 블록들(502 및 506)에 대응한다. 그래픽 부분(640)은 C1을 나타내고, 그래프 부분(642)은 C3을 나타낸다. C1은 t0에서 실행을 시작하고 t3에서 종료한다. C1에 의해 호출되는 C3은 t1에서 실행을 시작하고 t2에서 종료한다. 이러한 트랜젝션 트레이스는, C1이 C3을 호출하고 C3이 보고를 디스플레이 혹은 리디스플레이하는 경우를 나타낼 수 있다.
도 6f의 트랜젝션 트레이스는 도 5a의 블록들(502 및 506)에 대응한다. 그래픽 부분(650)은 C1을 나타내고, 그래프 부분들(652 및 654)은 C3의 개별 호출들을 나타낸다. C1은 t0에서 실행을 시작하고 t5에서 종료한다. C3은, 제 1 시간에 C1에 의해 호출될 때, t1에서 실행을 시작하고 t2에서 종료한다. C3은, 제 2 시간에 C1에 의해 호출될 때, t3에서 실행을 시작하고 t4에서 종료한다. 이러한 트랜젝션 트레이스는, C1이 C3을 제 1 시간에 호출하여 보고를 디스플레이하게 하고 제 2 시간에 호출하여 보고를 리디스플레이하게 하는 경우를 나타낼 수 있다.
도 6g의 트랜젝션 트레이스는 도 5a의 블록들(502, 504 및 506)에 대응한다. 그래픽 부분(660)은 C1을 나타내고, 그래프 부분(662)은 C3을 나타내며, 그리고 그래프 부분(664)은 C2를 나타낸다. C1은 t0에서 실행을 시작하고 t5에서 종료한다. C3은, C1에 의해 호출될 때, t1에서 실행을 시작하고 t2에서 종료한다. C2는, C1에 의해 호출될 때, t3에서 실행을 시작하고 t4에서 종료한다. 이러한 트랜젝션 트레이스는, C1이 C3을 호출하여 보고를 디스플레이하게 하고 그리고 유저가 보고에 대한 또 다른 요청을 행하지만, 그 요청의 포맷이 유효하지 않아 제어 흐름이 C2로부터 C1로 직접 리턴되는 경우를 나타낼 수 있다.
도 6h의 트랜젝션 트레이스는 도 5a의 블록들(514 및 516)에 대응한다. 그래픽 부분(670)은 C4를 나타내고, 그래프 부분(672)은 C2를 나타낸다. C4는 t0에서 실행을 시작하고 t3에서 종료한다. C2는, C1에 의해 호출될 때, t1에서 실행을 시작하고 t2에서 종료한다. 이러한 트랜젝션 트레이스는, C4가 쿼트에 대한 유저 요청과 함께 C2를 호출하는 경우를 나타낼 수 있다.
도 6i의 트랜젝션 트레이스는 도 5a의 블록들(514 및 518)에 대응한다. 그래픽 부분(680)은 C4를 나타내고, 그래프 부분(682)은 C3을 나타낸다. C4는 t0에서 실행을 시작하고 t3에서 종료한다. C1에 의해 호출되는 C3은 t1에서 실행을 시작하고 t2에서 종료한다. 이러한 트랜젝션 트레이스는, C4가 C3을 호출하고 C3이 쿼트를 디스플레이하는 경우를 나타낼 수 있다.
도 7a1은 도 6a 내지 도 6i의 트랜젝션 트레이스들에 근거하여 제공되는, 에이전트1 및 에이전트2의 트리 데이터 구조들의 예를 도시한다. 트리 데이터 구조는, 노드들 그리고 노드들을 연결하는 화살표들 혹은 에지들을 포함하는 방향 그래프 혹은 분산 트리로 표현될 수 있다. 트리에 걸쳐 있는 각각의 상이한 경로는 트리의 브랜치를 나타내는 것으로 고려될 수 있다. 각각의 브랜치는 적어도 하나의 어플리케이션의 인보크된 컴포넌트들의 각각의 트랜젝션 혹은 시퀀스를 나타낸다. 더욱이, 각각의 노드는 컴포넌트의 실행의 시작 혹은 종료를 나타낸다. 각각의 노드는 또한 고유 식별자(unique identifier)를 포함할 수 있다. 그리고, 브랜치 내의 마지막 노드의 식별자는 (예를 들어, 서브시스템/에이전트 내에서 고유한) 브랜치의 고유 식별자로서의 역할을 할 수 있다. 즉, 브랜치 내의 마지막 노드의 식별자가 주어지는 경우, 브랜치 내의 각각의 선행 노드로 되돌아가 브랜치의 처음 루트 노드까지 작업이 수행될 수 있다. 트리의 브랜치는 컴포넌트 시퀀스 혹은 트랜젝션(이것은 또한 복수의 서브시스템들에 걸쳐 확장함)을 나타낼 수 있다. 예를 들어, 점선 위의 브랜치 부분은 서브시스템1에서 실행되는 컴포넌트들에 대한 노드들을 포함하고, 점선 아래의 브랜치 부분은 서브시스템2에서 실행되는 컴포넌트들에 대한 노드들을 포함한다. 복수의 브랜치들은, 적어도 부분적으로, 오버랩(overlap)될 수 있고, 이에 따라 이들은 공통되는 일부 노드들을 갖는다. 전형적으로, 적어도 루트 노드는 복수의 브랜치들에 공통된다.
어플리케이션 혹은 다른 소프트웨어를 모니터링하는 에이전트는 관련된 트리 데이터 구조를 유지할 수 있다. 예를 들어, 서브시스템1에서의 에이전트1(agt1)은 루트 노드(700)에서 시작하는 트리 데이터 구조를 유지할 수 있고, 그리고 서브시스템2에서의 에이전트2(agt2)는 루트 노드(742)에서 시작하는 트리 데이터 구조를 유지할 수 있다. 관리자는 하나 이상의 에이전트들의 트리 데이터 구조에 근거하는 트리 데이터 구조를 유지할 수 있다. 예를 들어, 관리자는 도 7c1의 트리 데이터 구조를 유지할 수 있는바, 이것은 에이전트1과 에이전트2의 트리 데이터 구조들을 결합한 것이다.
루트 노드(700)는 서브시스템1 내의 모든 브랜치들에 대해 시작 노드다. 제 1 브랜치(트랜젝션(agt1-T1)을 나타내는 agt1-branch1)는 노드들(702, 704, 706 및 708)을 포함한다. 제 2 브랜치(트랜젝션(agt1-T2)을 나타내는 agt1-branch2)는 노드들(702, 710, 712 및 714)을 포함한다. 제 3 브랜치(트랜젝션(agt1-T3)을 나타내는 agt1-branch3)는 노드들(702, 710, 712, 716, 718 및 720)을 포함한다. 제 4 브랜치(트랜젝션(agt1-T4)을 나타내는 agt1-branch4)는 노드들(702, 710, 712, 722, 724 및 726)을 포함한다. 제 5 브랜치(트랜젝션(agt1-T5)을 나타내는 agt1-branch5)는 노드들(728, 730, 732 및 734)을 포함한다. 제 6 브랜치(트랜젝션(agt1-T6)을 나타내는 agt1-branch6)는 노드들(728, 736, 738 및 740)을 포함한다.
루트 노드(742)는 서브시스템2 내의 모든 브랜치들에 대해 시작 노드다. 제 1 브랜치(트랜젝션(agt2-T1)을 나타내는 agt2-branch1)는 노드들(744, 746, 748 및 750)을 포함한다. 제 2 브랜치(트랜젝션(agt2-T2)을 나타내는 agt2-branch2)는 노드들(744, 752, 754 및 756)을 포함한다.
각각의 노드의 식별자는, 예를 들어, 식별자 내의 값들의 수에 근거하여, 브랜치 내의 노드의 순차적 위치를 표시할 수 있다. 예를 들어, 노드(702)는 식별자 "0:0"을 갖는다. 이 식별자는 콜론으로 분리된 두 개의 값들을 갖는바, 이것이 표시하는 바는 (식별자 "0"을 갖는) 루트 노드 이후의, 브랜치 내의 제 2 노드임을 표시한다. 제 2 브랜치, 제 3 브랜치, 및 제 4 브랜치 내에서, 노드들(702, 710 및 712)(제 2 노드, 제 3 노드 및 제 4 노드)은 공통이다. 제 2 브랜치 내에서, 마지막 노드(714)는 식별자 0:0:1:0:0을 갖는다. 제 3 브랜치 내에서, 마지막 노드(716)는 식별자 0:0:1:0:1을 갖는다. 제 4 브랜치 내에서, 마지막 노드(722)는 식별자 0:0:1:0:2를 갖는다. 다양한 다른 노드 식별 방식/코드 워드들이 또한 사용될 수 있다.
노드 식별자들은 독립적으로 할당될 수 있고, 따라서 상이한 서브시스템들에서 반복될 가능성이 있다. 그러나, 서브시스템 식별자(예를 들어, 에이전트 식별자)와 노드 식별자의 조합은 고유(unique)하다.
상이한 방식으로 트리 데이터 구조가 제공될 수 있다. 한 가지 방법에서, 서브시스템의 에이전트는 추가적 트랜젝션들이 트레이스됨에 따라 시간에 따른 트리 데이터 구조를 확립한다. 각각의 트랜젝션 트레이스, 예를 들어, 인보크된 컴포넌트들의 시퀀스는 트리의 브랜치들과 비교되어 매칭 여부가 판단된다. 만약 매칭이 존재한다면, 트랜젝션은 트리에 의해 이미 나타나 있는 것이다. 그러나 만약 매칭이 존재하지 않는다면, 트랜젝션은 트리에 의해 아직 나타나 있지 않은 것이며, 트리 데이터 구조는 새로운 트랜젝션을 나타내기 위해 업데이트될 수 있다. 이러한 업데이트는, 기존 브랜치와 부분적으로 오버랩할 수 있는 혹은 오버랩하지 않을 수 있는 새로운 브랜치를 추가하는 것을 포함할 수 있다. 추가적인 노드들은 트리 데이터 구조 내에 이미 존재하는 호출된 컴포넌트의 시작 및 종료의 또 다른 인스턴스를 나타낼 수 있다. 예를 들어, agt1-branch3에서, 노드들(710 및 712)은 C3의 하나의 인스턴스의 시작 및 종료를 나타내고, 그리고 노드들(716 및 718)은 C3의 또 다른 인스턴스의 시작 및 종료를 나타낸다.
서브시스템1의 agt1-branch1과 서브시스템2의 agt2-branch1 혹은 agt2-branch2를 결합한 복수의 서브시스템들에 걸쳐 확장하는 트리의 브랜치의 예가 도 7c1에 도시된다. 예를 들어, 서브시스템2의 브랜치1 내의 노드(742)는 서브시스템1의 브랜치1 내의 노드(704)의 뒤를 따르고, 브랜치1 내의 노드(706)로 리턴된다. 또는 서브시스템2의 브랜치2 내의 노드(742)는 서브시스템1의 브랜치1 내의 노드(704)의 뒤를 따를 수 있고, 브랜치1 내의 노드(706)로 리턴된다. 어느 경우에나, 제 1 서브시스템 내의 적어도 하나의 컴포넌트, 예를 들어, C2는 제 2 서브시스템 내의 적어도 하나의 컴포넌트, 예를 들어, C5를 호출한다.
서버 및 관리자에서의 각각의 에이전트는 서로 대응하는 개별 트리 데이터 구조들을 유지할 수 있다. 이상적으로, 트리 데이터 구조는 적어도 부분적으로 동기화되며, 이에 따라 이들은 적어도 하나의 어플리케이션 혹은 다른 소프트웨어의 트랜젝션들의 동일 세트를 나타낸다. 언급된 바와 같이, 에이전트가 새로운 트랜젝션을 검출할 때, 그 트리 데이터 구조를 업데이할 수 있고 이러한 업데이트를 관리자에게 보고할 수 있다. 관리자는, 또한 자신의 트리 데이터 구조를 업데이트할 수 있다. 더욱이, 적어도 하나의 어플리케이션의 다른 인스턴스들을 모니터링하는 다른 에이전트들이 있을 수 있으며, 이들이 업데이트들을 또한 수신하여 자신의 각각의 트리 데이터 구조들을 업데이트하는 것이 바람직하다. 하나의 방법에 있어서, 새로운 트랜젝션을 검출한 에이전트는 다른 에이전트들에게 업데이트를 바로 제공할 수 있다. 또 다른 방법에 있어서, 에이전트는 관리자에게 업데이트를 보고하고, 관리자는 업데이트들을 다른 에이전트들에게 중계한다. 이러한 방법은 효율적인데, 왜냐하면 관리자는 다른 에이전트들이 관리자에게 보고하는 것이 어떤 것인지 알고 있고 업데이트들을 이들에게 전달할 수 있기 때문이다. 업데이트들은 임의의 포맷으로 제공될 수 있다. 에이전트로부터 관리자에게 전송된 업데이트들은 동적 데이터와 함께 혹은 별도로 전달될 수 있다.
에이전트 및 관리자가 그 대응하는 트리 데이터 구조들을 유지하도록 함으로써, 많은 효율적인 것들이 달성될 수 있다. 예를 들어, 트랜젝션과 관련된 그리고 트랜젝션의 컴포넌트들과 관련된 정적 데이터(static data)는, 트리의 노드들에 대해 인덱싱될 수 있고, 그럼으로써 단지 트리 내의 브랜치를 식별함으로써 이용가능하게 된다. 정적 데이터는 에이전트에 의해 관리자에게 반복적으로 전달될 필요가 없다. 정적 데이터는 일반적으로 어플리케이션 혹은 다른 모니터링된 소프트웨어의 소정의 버전에 대해 변하지 않는다. 따라서, 동일한 정적 데이터는 소정의 트랜젝션 혹은 컴포넌트의 복수의 호출들과 관련될 수 있다. 이와 대조적으로, 컴포넌트들의 시작 시간 및 종료 시간과 같은 동적 데이터(dynamic data), 그리고 임의의 방법에 전달되는 파라미터의 값과 같은 다른 동적 데이터는 고정되어 있지 않고, 각각의 트레이스된 트랜젝션에 대해 그리고 소정의 컴포넌트의 각각의 호출에 대해 변할 수 있다. 에이전트에 의해 수집된 바와 같은 동적 데이터는 에이전트로부터 관리자로 보고될 수 있다. 그러나, 동적 데이터가 적용되는 호출되는 컴포넌트들을 용이하게 식별하기 위해 노드들에 대해 동적 데이터를 인덱싱시킴으로써 여전히 효율성이 달성될 수 있다. 이러한 효율성을 달성하기 위해 사용될 수 있는 다양한 데이터 구조들이 도 8a1 내지 8c와 연계하여 설명된다.
도 7a2는 트리 데이터 구조의 대안적 및 등가적 도면을 나타낸다. 여기서, 노드들(711 및 717)은 노드(710)와 동일하고, 노드들(713 및 719)은 노드(712)와 동일한바, 이들은 동일한 각각의 식별자들을 가지고 있다. 본 도면에서, agt1-branch2는 노드들(710, 712 및 714)을 포함하고, agt1-branch3은 노드들(711, 713, 715, 718 및 720)을 포함하며, 그리고 agt1-branch4는 노드들(717, 719, 721, 724 및 726)을 포함한다. 본 도면에서 분명하게 나타난 것은, 노드(714)가 agt1-branch3 및 agt1-branch4의 일부가 아니다는 것이다.
도 7b는 새로운 브랜치의 형태로 도 7a1의 에이전트1의 트리 데이터 구조에 대한 업데이트를 도시한다. 명확한 설명을 위해, 서브시스템2는 도시되지 않았다. 트랜젝션(agt1-Tnew)을 나타내는 agt1-new-branch는, 도 9의 프로세스와 연계되어 이하에서 더 설명되는 바와 같이, 에이전트1의 트리 데이터 구조를 업데이기 하기 위해 추가되는 새로운 브랜치다. agt1-new-branch는, 식별자 "0:0"을 갖는 기존의 노드(702)(시작 C1), 식별자 "0:0:2"를 갖는 노드(760)(시작 C8), 식별자 "0:0:2:0"을 갖는 노드(762)(종료 C8), 그리고 식별자 "0:0:2:0:0"를 갖는 노드(764)(종료 C1)를 포함한다. 이것은 에이전트1에 의해 새롭게 검출된 경로이다.
도 7c1은 도 7a1의 에이전트1과 에이전트2의 트리 데이터 구조들을 결합한 관리자의 트리 데이터 구조를 도시한다. 언급된 바와 같이, 관리자의 트리 데이터 구조는, 복수의 에이전트들 및 어플리케이션드 혹은 다른 소프트웨어에 걸쳐 있는 데이터 구조를 제공하기 위해, 상이한 에이전트들의 트리 데이터 구조들을 결합할 수 있다. 이러한 경우에, 관리자의 트리 데이터 구조의 제 1 부분은 제 1 에이전트의 트리 데이터 구조에 대응하고, 그리고 관리자의 트리 데이터 구조의 제 2 부분은 제 2 에이전트의 트리 데이터 구조에 대응한다. 파선 노드들(노드들(744, 746, 748, 750, 752, 754 및 756))은 에이전트2 트리 데이터 구조로부터의 노드에 대응하고, 그리고 점선 노드들(노드들(790 및 792))은, 파선 노드들에 근거하여 추가된다. 관리자의 트리 데이터 구조의 실선 노드는 에이전트1 트리 데이터 구조에 대응한다. C2가 C5를 호출함이 알려져 있기 때문에, 노드(704)는 노드(744)를 가리킨다. C5가 C2로 리턴됨이 알려져 있기 때문에, 노드들(744, 746, 748 및 750)의 시퀀스를 따르는 경우 노드(750)는 노드(706)를 가리키고, 그리고 추가적인 노드들(790 및 792)이 부가되는바, 여기서 노드들(744, 752, 754 및 756)의 시퀀스를 따르는 경우 노드(756)는 노드(790)를 가리킨다. 노드들(790 및 792)은 에이전트1의 관점에서는, 노드들(706 및 708)과 각각 동일하다.
따라서, 관리자(mgr)의 트리 데이터 구조는 이러한 브랜치들(gr-branch1, mgr-branch2, mgr-branch3(agt1-branch2와 동일함), mgr-branch4(agt1-branch3과 동일함), mgr-branch5(agt1-branch4와 동일함), mgr-branch6(agt1-branch5와 동일함) 그리고 mgr-branch7(agt1-branch6과 동일함))을 포함한다. 트랜젝션이 복수의 서브시스템들을 호출하기 때문에, Mgr-branch1은 크로스-서브시스템 트랜젝션(cross-subsystem transaction)에서의 인보크된 컴포넌트들의 시퀀스를 나타낸다. Mgr-branch1은 복수의 트랜젝션들을 결합한 트랜젝션(mgr-T1)(예를 들어, 트랜젝션(agt1-T1)(노드들(702 및 704)), 그 다음 트랜젝션(agt2-T1)(노드들(744, 746, 748 및 750)), 그 다음 트랜젝션(agt1-T1)(노드들(706 및 708))의 나머지로 이어지는 부분)을 나타낸다. 트랜젝션(agt1-T1)은 서브시스템1로부터 온 것이고, 트랜젝션(agt2-T1)은 서브시스템2로부터 온 것임을 상기하자. Mgr-branch2는 트랜젝션(agt1-T1)(노드들(702 및 704)), 그 다음 트랜젝션(agt2-T1)(노드들(744, 752, 754 및 756)), 그 다음 트랜젝션(agt1-T1)(노드들(790 및 792))의 나머지로 이어지는 부분을 결합한 트랜젝션(mgr-T2)을 나타낸다. Mgr-branch3는 트랜젝션(agt1-T2)(노드들(702, 710, 712 및 714))과 동일한 트랜젝션(mgr-T3)을 나타낸다. Mgr-branch4는 트랜젝션(agt1-T3)(노드들(702, 710, 712, 716, 718 및 720))과 동일한 트랜젝션(mgr-T4)을 나타낸다. Mgr-branch5는 트랜젝션(agt1-T4)(노드들(702, 710, 712, 722, 724 및 726))과 동일한 트랜젝션(mgr-T5)을 나타낸다. Mgr-branch6은 트랜젝션(agt1-T5)(노드들(728, 730, 732 및 734))과 동일한 트랜젝션(mgr-T6)을 나타낸다. Mgr-branch7은 트랜젝션(agt1-T6)(노드들(728, 736, 738 및 740))과 동일한 트랜젝션(mgr-T7)을 나타낸다.
도 7c1에서의 노드 식별자들은, 노드(744)(0:0:0:0), 노드(746)(0:0:0:0:0), 노드(748)(0:0:0:0:0:0), 노드(750)(0:0:0:0:0:0:0), 노드(706)(0:0:0:0:0:0:0:0), 노드(708)(0:0:0:0:0:0:0:0:0), 노드(752)(0:0:0:0:1), 노드(754)(0:0:0:0:1:0), 노드(756)(0:0:0:0:1:0:0), 노드(790)(0:0:0:0:1:0:0:0) 그리고 노드(792)(0:0:0:0:1:0:0:0:0)을 제외하고는, 도 7a1에서와 동일하다. 이러한 것들은 관리자의 식별자들이다. mgr-branch1, mgr-branch2, mgr-branch3, mgr-branch4, mgr-branch5, mgr-branch6 및 mgr-branch7의 식별자들은 각각, 에이전트1에 의해 보여지는 바와 같이, 노드들(708, 792, 714, 720, 726, 734 및 740)의 식별자들이다.
관리자의 트리 데이터 구조가 상이한 에이전트들의 트리 데이터 구조들을 결합할 때, 관리자의 트랜젝션은 복수의 에이전트들의 복수의 트랜젝션들을 결합할 수 있다. 관리자 트랜젝션 대 에이전트 트랜젝션의 1대다 대응관계의 예로서, mgr-T1은 agt1-T1과 agt2-T1을 결합한다. 도 8a1 내지 도 8a3 참조. 이러한 경우에, 관리자의 트랜젝션의 유저 인터페이스 디스플레이는 복수의, 에이전트 트랜젝션들에 근거할 수 있다.
대안적으로, 관리자의 트리 데이터 구조는 상이한 에이전트들의 트리 데이터 구조들을 결합할 필요가 없지만, 관리자는 본질적으로 각각의 에이전트의 트리 데이터 구조의 카피(copy)인 각각의 에이전트에 대한 개별 트리 데이터 구조를 유지할 수 있다. 이러한 경우에, 관리자의 트랜젝션은 에이전트의 트랜젝션과 동일할 수 있다. 관리자 트랜젝션 대 에이전트 트랜젝션의 1대1 대응관계의 예로서, mgr-T3은 agt1-T2와 동일하다. 이러한 경우에, 관리자의 트랜젝션의 유저 인터페이스 디스플레이는 단일의 에이전트 트랜젝션들에 근거할 수 있다.
또는, 관리자는, 상이한 에이전트들의 개별 트리 데이터 구조들과, 그리고 상이한 에이전트들의 트리 데이터 구조들을 결합한 트리 데이터 구조 양쪽 모두를 유지할 수 있다. 개별 트리 데이터 구조는 도 9의 단계(904)에서와 같이 브랜치 매칭을 위해 사용될 수 있고, 상이한 에이전트들의 트리 데이터 구조들을 결합한 트리 데이터 구조는 예를 들어 도 10a의 단계들(1008 및 1010)에서와 같이 유저 인터페이스를 제공하는데 사용될 수 있다.
도 7c2는 도 7a1의 에이전트1의 트리 데이터 구조에서의 마지막 노드와, 도 7c1의 관리자의 트리 데이터 구조의 마지막 노드 간의 대응관계를 나타낸다. 언급된 바와 같이, 트리 데이터 구조 내의 브랜치의 마지막 노드의 식별자는 브랜치를 고유하게 식별하는데 사용될 수 있다. 일부 경우에 있어서, 동일한 마지막 노드 식별자는 에이전트 및 관리자의 트리 데이터 구조들에서 사용된다. 관리자가 상이한 에이전트들의 트리 데이터 구조들을 결합하는 경우와 같은 다른 경우에 있어서, 상이한 마지막 노드 식별자들은 에이전트 및 관리자의 트리 데이터 구조들에서 사용될 수 있다. 관리자는 마지막 노드 식별자들 간의 대응관계 기록을 유지할 수 있다. 예를 들어, 에이전트1의 마지막 노드 식별자 0:0:0:0:0은 식별자들 0:0:0:0:0:0:0:0:0 및 0:0:0:0:1:0:0:0:0을 갖는 관리자의 2개의 마지막 노드들(노드들(708 및 792))에 대응한다. 에이전트1의 나머지 마지막 노드 식별자들(도 7a1에서 노드들(714, 720, 726, 734 및 740)의 식별자들을 참조)은 관리자에 대해 동일하다. 또한, 에이전트2의 마지막 노드 식별자 0:0:0:0:0은 식별자들 0:0:0:0:0:0:0 및 0:0:0:0:1:0:0을 갖는 관리자의 2개의 마지막 노드들에 대응한다. 이러한 예에서, 고려할 에이전트2의 나머지 마지막 노드 식별자들은 없다. 노드 #는 이해를 돕기 위한 것으로 대응관계 기록의 일부일 필요는 없다.
따라서, 관리자가 제 1 노드 시퀀스의 에이전트1로부터 마지막 노드 식별자를 수신하고 제 2 노드 시퀀스의 에이전트2로부터 마지막 노드 식별자를 수신할 때, 이러한 마지막 노드 식별자들 중 하나 이상에 근거하여 트리 데이터 구조에 액세스할 수 있다. 더욱이, 이러한 액세스는, 에이전트1 및/또는 에이전트2의 마지막 노드 식별자에 직접적으로 근거할 수 있고, 그리고/또는 관리자의 대응하는 마지막 노드 식별자에 근거할 수 있다.
도 7d는 도 7b에서의 에이전트1의 트리 데이터 구조에 대한 업데이트에 부합하는, 새로운 브랜치 형태의 도 7c1의 관리자의 트리 데이터 구조에 대한 업데이트를 도시한다. 이러한 업데이트는 새로운 브랜치(mgr-new-branch)이고, 이는 에이전트1의 트리 데이터 구조에 대한 agt1-new-branch의 업데이트에 부합하는, 노드들(760, 762 및 764)을 포함한다.
도 8a1은 도 7a1의 트리 데이터 구조에서 서브시스템1에 대한 브랜치들 및 컴포넌트 호출들의 기록을 도시한다. 각각의 브랜치는 마지막 노드 식별자에 의해 식별된다. 예를 들어, "0:0:0:0:0"은 도 7a1에서 노드(708)를 식별하고, 이에 따라 서브시스템1에서 agt1-branch1 및 대응하는 트랜젝션(agt1-T1) 양쪽 모두를 또한 식별한다. 이러한 브랜치에 대한 컴포넌트 호출들은, 시작 C1(노드(702)), 시작 C2(노드(704)), 종료 C2(노드(706)) 및 종료 C1(노드(708))이다.
"0:0:1:0:0"은 도 7a1에서 노드(714)를 식별하고, 이에 따라 서브시스템1에서 agt1-branch2 및 대응하는 트랜젝션(agt1-T2) 양쪽 모두를 또한 식별한다. 이러한 브랜치에 대한 컴포넌트 호출들은, 시작 C1(노드(702)), 시작 C3(노드(710)), 종료 C3(노드(712)) 및 종료 C1(노드(714))이다.
"0:0:1:0:1:0:0"은 도 7a1에서 노드(720)를 식별하고, 이에 따라 서브시스템1에서 agt1-branch2 및 대응하는 트랜젝션(agt1-T2) 양쪽 모두를 또한 식별한다. 이러한 브랜치에 대한 컴포넌트 호출들은, 시작 C1(노드(702)), 시작 C3(노드(710)), 종료(C3(노드(712)), 시작 C3(노드(716)), 종료(C3(노드(716)) 및 종료(C1(노드(720))이다.
"0:0:1:0:2:0:0"은 도 7a1에서 노드(726)를 식별하고, 이에 따라 서브시스템1에서 agt1-branch4 및 트랜젝션(agt1-T4) 양쪽 모두를 또한 식별한다. 이러한 브랜치에 대한 컴포넌트 호출들은, 시작 C1(노드(702)), 시작 C3(노드(710)), 종료(C3(노드(712)), 시작 C2(노드(722)), 종료(C2(노드(724)) 및 종료(C1(노드(726))이다.
"0:1:0:0:0"은 도 7a1에서 노드(734)를 식별하고, 이에 따라 서브시스템1에서 agt1-branch5 및 트랜젝션(agt1-T5) 양쪽 모두를 또한 식별한다. 이러한 브랜치에 대한 컴포넌트 호출들은, 시작 C4(노드(728)), 시작 C2(노드(730)), 종료(C2(노드(732)) 및 종료(C4(노드(734))이다.
"0:1:1:0:0"은 도 7a1에서 노드(740)를 식별하고, 이에 따라 서브시스템1에서 agt1-branch6 및 트랜젝션(agt1-T6) 양쪽 모두를 또한 식별한다. 이러한 브랜치에 대한 컴포넌트 호출들은, 시작 C5(노드(744)), 시작 C7(노드(752)), 종료(C7(노드(754)) 및 종료(C5(노드(756))이다.
도 8a2는 도 7a1의 트리 데이터 구조에서 서브시스템2에 대한 브랜치들 및 컴포넌트 호출들의 기록을 도시한다.
"0:0:0:0:0"은 도 7a1에서 노드(750)를 식별하고, 이에 따라 서브시스템2에서 agt2-branch1 및 트랜젝션(agt2-T1) 양쪽 모두를 또한 식별한다. 이러한 브랜치에 대한 컴포넌트 호출들은, 시작 C5(노드(744)), 시작 C6(노드(746)), 종료(C6(노드(748)) 및 종료(C5(노드(750))이다.
"0:0:1:0:0"은 도 7a1에서 노드(756)를 식별하고, 이에 따라 서브시스템2에서 agt2-branch2 및 트랜젝션(agt2-T2) 양쪽 모두를 또한 식별한다. 이러한 브랜치에 대한 컴포넌트 호출들은, 시작 C5(노드(744)), 시작 C6(노드(746)), 종료(C6(노드(748)) 및 종료(C5(노드(750))이다.
도 8b1은 도 7a1의 트리 데이터 구조에서 서브시스템1의 상이한 노드들/컴포넌트들에 대해서 정적 데이터에 대한 참조들의 기록을 도시한다. 언급된 바와 같이, 다양한 타입의 정적 데이터가 컴포넌트 및 그 관련 노드들에 대해 참조될 수 있다. 예를 들어, 노드 "0:0"는 컴포넌트(C1)과 관련되며 static_data_C1(예를 들어, methodC1, classC1 및 JARC1, 등)에 대해 참조된다. 참조되는 정적 데이터의 상이한 기록들은, 이하에서 더 상세히 설명되는 도 8d에 도시된다. 클래스 명칭은 또한 하나 이상의 페어런트 클래스(parent class) 혹은 슈퍼 클래스(super class)의 명칭들을 포함할 수 있다. 하나의 방법에 있어서, 노드들 중 하나 이상은 정적 데이터에 대해 참조된다. 또 다른 방법에 있어서, 컴포넌트의 시작을 나타내는 노드들(하지만 컴포넌트의 종료를 나타내는 노드들은 아님)이 정적 데이터에 대해 참조된다. 다른 방법들도 가능하다. 관리자가 소정의 컴포넌트 혹은 노드와 관련된 정적 데이터에 액세스(예를 들어, 유저 인터페이스, 예를 들어, 트랜젝션 트레이스에 주석첨가와 같은 것)할 수 있도록 하는 것이 목표이다. 도 8a1 및 도 8b1의 기록들은 에이전트 및/또는 에이전트가 보고하는 관리자에 의해 트리 데이터 구조의 일부로서 제공될 수 있다.
이러한 기록은 브랜치 혹은 브랜치의 일부분을 형성하는 노드들을 그룹화할 수 있다. 예를 들어, 처음 5개 엔트리들("0:0" 내지 "0:0:0:0:0")은 agt1-branch1에 대한 것이고, 그리고 마지막 엔트리("0:0:0:0:0")는 브랜치의 식별자이다. 엔트리들(0:0:1, 0:0:1:0 및 0:0:1:0:0)은 agt1-branch2에서의 노드들(agt1-branch1에는 존재하지 않음)에 대한 것이다.
이러한 노드들은 직접적으로, 정적 데이터의 하나 이상의 타입들에 대해 참조될 수 있거나, 혹은 정적 데이터의 하나 이상의 타입들에 대해 참조되는 식별자에 대해 참조될 수 있다. 이러한 방식에서, 정적 데이터 식별자는 정적 데이터의 하나 이상의 타입들을 반복함이 없이 기록 내에서 효율적으로 반복될 수 있다.
정적 데이터는 소프트웨어의 인스트루멘테이션(instrumentation)(정적 데이터가 참조되는 하나 이상의 컴포넌트들의 인스트루멘테이션을 포함함)으로부터 획득 될 수 있다.
트랜젝션의 정적 데이터는 인스트루멘테이션으로부터 대부분 획득될 수 있다. 그러나, 원리적으로, 이것은 다른 소스들로부터 획득될 수 있고, 그리고 필요하다면 다른 정적 데이터와 혼합 혹은 결합될 수 있다. 예를 들어, 소정의 코드가 소정의 어플리케이션과 언제나 정적으로 관련되어 있다거나 혹은 언제나 정적으로 더 낮은 우선순위가 되도록 되어 있다는 것이 다른 소스들로부터 검출될 수 있다. 이러한 정보는 트레이스의 동작을 판단하는데 사용될 수 있다.
정적 데이터는 소프트웨어를 트레이스함으로써 이용가능한 모든 타입의 정보를 포함한다. 정적 데이터는 또한, 소프트웨어의 구성 방식으로 인해, 소정의 컴포넌트가 단지 제한된 수의 하나 이상의 페어런트 컴포넌트(parent component)들에 의해 호출될 수 있다는 것, 그리고/또는 소정의 컴포넌트가 단지 제한된 수의 하나 이상의 차일드 컴포넌트(child component)를 호출할 수 있다는 것을 표시할 수 있다. 예를 들어, 정적 데이터는, C2가 단지 C1 혹은 C4에 의해 호출되었고 C2가 단지 C5를 호출한다고 표시할 수 있다. 정적 데이터는 또한, 소정의 컴포넌트를 호출한 하나 이상의 페어런트 컴포넌트(parent component)들에 근거하여, 소정의 컴포넌트가 단지 제한된 수의 하나 이상의 차일드 컴포넌트(child component)들을 호출할 수 있다고 표시할 수 있다. 예컨대, 트리 데이터 구조에 있어서, 소정의 노드는, 예를 들어 소정의 콘텍스트(context) 내에서 그 소정의 노드에 어떻게 도달했는가에 근거하여, 단지 하나의 차일드 노드를 가질 수 있다. 이러한 정보는 매칭 단계(904)에서 유용할 수 있을 뿐만 아니라 트랜젝션 콘텍스트에 따라 트랜젝션 데이터를 분리하는 경우에도 유용할 수 있다.
또 다른 예로서, 서브렛(servlet)은 SQL문(SQL statements)을 사용하는 데이터베이스의 많은 상이한 방법들을 호출할 수 있다. 그러나, 서브렛은 이러한 방법들을 항상 임의로 호출하지 않는다. 만약 무엇인가가 이전에 발생했다면 일부 SQL들이 호출되고, 만약 그외의 무엇인가가 이전에 발생했다면 다른 SQL들이 호출된다. 이것은 비즈니스 로직(발생한 경우에는 어떤 SQL들이 호출될 수 )에 따른 관련된 SQL들의 파티션(partition)을 제공한다. 예를 들어, 만약 트랜젝션이 웹 사이트 상의 책 구매라면, 데이터베이스 로직의 일부분이 사용되고, 반면 트랜젝션이 웹 사이트 상의 모자 구매라면, 데이터베이스 로직의 또 다른 부분이 사용된다. 양쪽 경우에 있어서, 서브렛은 데이터베이스 호출을 위해 동일한 서브렛을 사용할 수 있다. 그러나 트리 데이터 구조의 사용은 데이터가 특정 트랜젝션 콘텍스트에 모이도록 할 수 있다. 이러한 데이터는 트랜젝션 트레이스 및 그것이 만들어 내는 응답 시간과 같은 메트릭(metric)들을 포함할 수 있을 뿐만 아니라 트랜젝션에 대해 획득된 다른 메트릭들을 포함할 수 있다.
정적 데이터는 에이전트에 의해 캐시될 수 있고, 이에 따라 소프트웨어 및/또는 인스트루멘테이션으로부터 반복적으로 검색될 필요가 없다.
도 8b1은 도 7a1의 트리 데이터 구조에서 서브시스템2의 상이한 노드들/컴포넌트들에 대해서 정적 데이터에 대한 참조들의 기록을 도시한다. 이러한 기록들은 서브시스템2의 에이전트에 의해 트리 데이터 구조의 일부로서 제공될 수 있고, 그리고 관련된 관리자에게 보고될 수 있다. 이것은 예를 들어 서브시스템1의 에이전트가 보고하는 동일 관리자일 수 있다. 복수의 에이전트들이 공통 관리자에게 보고할 수 있다. 기록 내에서, 예를 들어, 노드 "0:0"은 컴포넌트(C5)와 관련되고, static_data_C5에 대해 참조된다.
도 8b3은 도 7b의 agt1-new-branch에 대해서 도 8b1의 기록에 대한 업데이트를 도시한다. 노드들(760, 762 및 764)은 식별자들(0:0:2, 0:0:2:0 및 0:0:2:0:0)을 각각 가지며, 그리고 static_data_C8, static_data_C8 및 static_data_C1에 대해 각각 인덱싱된다.
도 8b4는 도 7c1의 트리 데이터 구조에서 관리자의 상이한 노드들/컴포넌트들에 대해 정적 데이터에 대한 참조들의 기록을 도시한다. 각각의 노드는, 언급된 바와 같이, 관련된 정적 데이터를 갖는다.
도 8b5는 도 7d의 mgr-new-branch7에 대해 도 8b4의 기록에 대한 업데이트를 도시한다. 노드들(760, 762 및 764)은 식별자들(0:0:2, 0:0:2:0 및 0:0:2:0:0)을 각각 가지며, 그리고 static_data_C8, static_data_C8 및 static_data_C1에 대해 각각 인덱싱된다. 이러한 업데이트는, 본 예에서, 공통 노드 식별자들로 인해, 도 8b3에서와 동일하다. 다른 경우에 있어서, 업데이트들은, 예를 들어, 상이한 노드 식별자들로 인해 서로 다를 수 있다.
도 8c는 도 7a1의 트리 데이터 구조의 서브시스템1의 상이한 노드들/컴포넌트들에 대한 세부 트레이스로부터의 동적 데이터의 기록을 도시한다. 이러한 기록은 서브시스템1의 에이전트에 의해 트리 데이터 구조의 일부로서 제공될 수 있고, 그리고 관련된 관리자에게 보고될 수 있다. 동적 데이터는 적어도 하나의 어플리케이션 혹은 다른 모니터링된 소프트웨어 인스턴스를 트레이스함으로써 에이전트에 의해 획득될 수 있다. 동적 데이터는 컴포넌트들의 시작 시간 및 종료 시간을 표시할 수 있다. 다른 동적 데이터는 컴포넌트들 간의 호출들에서 전달되는 파라미터들을 포함할 수 있다. 예를 들어, 도 5a에서, C1은 요청된 보고에 관련된 하나 이상의 파라미터들(예를 들어, 보고의 타입 혹은 보고의 생성 시기)과 함께 C2를 호출할 수 있다. 제어 흐름이 C1로 리턴될 때, C2는 하나 이상의 관련된 파라미터들을 C1에 전달할 수 있다. 각각의 서브시스템은, 그 관련 에이전트를 통해, 동적 데이터를 획득할 수 있고, 그리고 이것을 관리자에게 보고할 수 있다. 기록은 서브시스템1의 에이전트에 의해 그리고 에이전트가 보고하는 관리자에 의해 트리 데이터 구조의 일부로서 제공될 수 있다.
동적 데이터는 노드 "0:0"에 대해 엔트리를 포함하는바, 이것은 C1과 관련되며, 그리고 C1에 대한 시작 시간(t1) 및 다른 관련된 동적 데이터(dynamic_data_1)(예를 들어, 호출에서 C1에 전달되는 파라미터1)를 포함한다. 노드 "0:0:0"에 대한 엔트리는 C2와 관련되며, C2에 대한 시작 시간(t2) 및 다른 관련된 동적 데이터(dynamic_data_2)(예를 들어, 호출에서 C2에 전달되는 파라미터2)를 포함한다. 노드 "0:0:0:0"에 대한 엔트리는 C2와 관련되며, C2에 대한 종료 시간(t3) 및 다른 관련된 동적 데이터(dynamic_data_3)(예를 들어, C2로의 리턴(예컨대, C2로부터 호출된 컴포넌트로부터 C2로의 프로그램 흐름의 리턴)시 전달되는 파라미터3)를 포함한다. 노드 "0:0:0:0:0"에 대한 엔트리는 C1과 관련되며, C1에 대한 종료 시간(t4) 및 다른 관련된 동적 데이터(dynamic_data_4)(예를 들어, C1로의 리턴(예컨대, C1로부터 호출된 컴포넌트로부터 C1로의 프로그램 흐름의 리턴)시 전달되는 파라미터4)를 포함한다.
도 8d는 상이한 컴포넌트들과 관련된 정적 데이터의 기록들을 도시한다. 각각의 기록은 본 명세서에서 설명되는 바와 같은 정적 데이터의 다양한 타입들을 포함할 수 있다. 정적 데이터의 기록들은, static_data_C1, static_data_C2, static_data_C3, static_data_C4, static_data_C5, static_data_C6, static_data_C7 및 static_data_C8을 포함한다. 정적 데이터의 기록들은 에이전트 및 관리자에 의해 유지될 수 있다.
도 9는 적어도 하나의 어플리케이션에 대해, 도 7a1에서와 같이 에이전트가 트리 데이터 구조를 유지하는 예시적인 프로세스를 도시한다. 단계(900)는 예를 들어, 컴포넌트들의 시작 포인트 및 종료 포인트에 의해, 적어도 하나의 어플리케이션의 인보크된 컴포넌트들의 시퀀스들을 나타내는 브랜치들을 갖는 트리 데이터 구조를 유지하는 것을 포함한다. 단계(902)는, 트랜젝션(예를 들어, 트랜젝션의 인스턴스) 동안(여기서 트랜젝션은 시간에 따라 복수의 인스턴스들에서 인보크됨), 적어도 하나의 어플리케이션의 인보크된 컴포넌트들의 시퀀스를 식별하는 것을 포함한다. 예를 들어, 이것은 트랜젝션을 트레이스하는 것을 포함할 수 있다. 해당하는 특정 트랜젝션이 주된 트랜젝션으로서 참조될 수 있다.
단계(908)는, 트랜젝션 동안, 호출된 컴포넌트의 시퀀스에 대해, 동적 데이터, 예를 들어 메트릭들(인보크된 컴포넌트들의 시작 시간 및 종료 시간을 포함함)을 획득하는 것을 포함한다. 이러한 동적 데이터는 트랜젝션 트레이스로부터 획득될 수 있다. 판단 단계(904)에서, 트리 데이터 구조 내에 매칭되는 브랜치가 있는지 여부에 관한 판단이 행해진다. 예를 들어, 트랜젝션 트레이스의 결과가 다음과 같은 인보크된 컴포넌트들의 시퀀스, 즉 시작 C1, 시작 C2, 종료 C2, 종료 C1이라고 가정한다. 그러면, 이러한 시퀀스는, 매칭되는 브랜치가 발견될 때까지, 예를 들어, 도 7a1의 트리 데이터 구조에서의 각각의 브랜치와 비교될 수 있다. 하나의 방법에 있어서, 비교는 맨 처음 브랜치에서 시작하여 한번에 한 브랜치씩 진행된다. 다른 방법에 있어서, 트랜젝션 트레이스의 시작 포인트 및 종료 포인트의 수에 대응하는 노드들의 수를 갖는 브랜치들이 맨 처음 비교된다. 다른 방법들이 또한 가능하다. 본 예에서, agt1-branch1이 매칭되는 브랜치다. 단계(906)는 동적 데이터와, 그리고 매칭되는 브랜치의 식별자(예를 들어, agt1-branch1, 혹은 노드 0:0:0:0:0)를 관리자에게 보고하는 것을 포함한다. 동적 데이터는 예를 들어, 그 호출되는 컴포넌트들의 시작 시간 및 종료 시간의 리스트로서 보고될 수 있고, 여기서 각각의 시간은 브랜치의 노드들 중의 하나에 대응하고, 보고되는 시간의 순서는 브랜치 내의 노드들의 순서에 대응한다. 이러한 시간은 예를 들어, 에이전트의 클록에 근거하는 타임 스탬프일 수 있다.
매칭되는 브랜치는, 트랜젝션의 인보크된 컴포넌트들의 시퀀스의 시작 포인트 및 종료 포인트의 수와 동일한 수의 노드들을 갖는 브랜치일 수 있으며, 여기서 브랜치 내의 노드들의 시퀀스는 트랜젝션의 인보크된 컴포넌트들의 시퀀스의 시작 포인트 및 종표 포인트와 매칭된다. 트리의 루트 노드는 매칭에서 고려될 필요가 없다. 일부 경우에 있어, 브랜치는, 트랜젝션의 인보크된 컴포넌트들의 시퀀스의 시작 포인트 및 종료 포인트와 매칭되는 노드들의 시퀀스를 가질 수 있지만, 추가적인 노드들을 또한 가질 수 있다. 이러한 경우에, 트랜젝션의 인보크된 컴포넌트들의 시퀀스의 시작 포인트 및 종료 포인트에 대한 부분적 매칭이 존재하고, 그리고 단계(904)는 거짓(false)이다. 이러한 경우에, 주된 트랜젝션 트레이스는, 트리 데이터 구조의 브랜치에 의해 정확히 나타내지지 않는 그리고 트리 데이터 구조의 브랜치와 함께 확장하는, 인보크된 컴포넌트들의 시퀀스의 시작 포인트 및 종료 포인트의 새로운 시퀀스를 제공한다. 이러한 판단에 응답하여, 단계(910)는, 인보크된 컴포넌트들의 시퀀스를 나타내는 그리고 인보크된 컴포넌트들의 시퀀스와 함께 확장하는, 트리 데이터 구조를 업데이트하는 것을 포함한다. 예를 들어, 이것은 도 7b에서 agt1-new-branch일 수 있다. 함께 확장하는 브랜치는 해당 시퀀스와 동일한 시작 포인트 및 종료 포인트를 갖는다.
단계(912)에서, 업데이트는, 새로운 브랜치 내에서, 트랜젝션 트레이스 내의 하나 이상의 인보크된 컴포넌트들의 시작 포인트 및 종료 포인트를 나타내는 노드들을 제공하는 것을 포함할 수 있다. 예를 들어, 도 7b에서, agt1-new-branch는 새롭게 추가된 노드들(760, 762 및 764)을 포함한다. 새로운 브랜치는 하나 이상의 기존의 브랜치들과 부분적으로 오버랩할 수 있다. 예를 들어, 도 7b에서, 노드(702)는 agt1-branch1, agt1-branch2 및 agt1-new-branch 내에서 존재(오버랩)하고, 이에 따라 agt1-new-branch은 agt1-branch1 및 agt1-branch2과 오버랩한다.
따라서, 새로운 트랜젝션의 인보크된 컴포넌트들의 시퀀스는, 기존 브랜치들(예를 들어, agt1-branch1 및 agt1-branch2) 중 적어도 하나와 오버랩하는 오버랩 부분(노드(702))과, 그리고 기존 브랜치들 중 어느 것과도 오버랩하지 않는 오버랩하지 않는 부분(노드들(760, 762 및 764)을 포함하는 브랜치 부분)을 갖는 브랜치(예를 들어, agt1-new-branch)에 의해, 트리 데이터 구조 내에 나타내진다. 새로운 노드들(노드들(760, 762 및 764))이, 오버랩하지 않는 부분에 제공된다(오버랩 부분에는 제공되지 않음).
도 9에서, 단계(914)는, 트리 데이터 구조의 업데이트가 인보크된 컴포넌트들 중 하나 이상과 관련된 정적 데이터를 노드들에 대해 인덱싱하는 것을 포함함을 표시한다. 컴포넌트의 정적 데이터는 컴포넌트의 인스트루멘테이션으로부터 에이전트에 의해 액세스될 수 있고, 그리고 도 8b3과 연계되어 설명된 바와 같이 인덱싱될 수 있다.
단계(916)는 트리 데이터 구조의 업데이트를 에이전트로부터 관리자에게 보고하는 것을 포함한다. 이러한 업데이트는 주된 트랜젝션 인스턴스의 인보크된 컴포넌트들 중 하나 이상의 시작 포인트 및 종료 포인트를 식별할 수 있고, 그리고 관련된 정적 데이터에 대한 인덱싱을 행할 수 있다. 이러한 보고는 도 8a1 혹은 도 8a2에서 설명된 바와 같이 브랜치 정의의 형태로 제공될 수 있고, 그리고 도 8b1 혹은 도 8b2에서 설명된 바와 같이 정적 데이터에 대한 참조의 형태로 제공될 수 있다.
새로운 트랜젝션에 근거하여 트리 데이터 구조를 업데이트한 이후, 판단 단계(904)는, 트랜젝션 트레이스의 인보크된 컴포넌트들의 시퀀스가, 업데이트된 트리 데이터 구조와 다시 비교되는 경우, 참(true)이 될 것이다. 단계(906)는 동적 데이터와, 그리고 매칭되는 브랜치의 식별자를 에이전트로부터 관리자에게 보고하는 것을 포함한다. 이러한 보고는 예를 들어, 도 8c의 기록의 형태로 제공될 수 있다. 이러한 보고의 수신시, 관리자는 자신의 트리 데이터 구조를 업데이트할 수 있고, 이에 따라 에이전트의 트리 데이터 구조와 동기화된다. 따라서, 에이전트는, 통신 경로를 통해 데이터를 전송하는데 필요한 대역폭의 양 및 이러한 데이터를 전달 및 저장하는데 필요한 메모리의 양과 같은 오버헤드 비용을 감소시키면서, 관리자에게 트랜젝션을 효율적으로 보고할 수 있다.
도 10a는 예시적 프로세스를 도시하는바, 여기서 관리자는, 에이전트로부터 수신되는, 도 7a1에서와 같은 트리 데이터 구조의 브랜치 식별자 및 동적 데이터의 보고에 근거하여, 유저 인터페이스를 제공한다. 단계(1000)는, 예를 들어, 컴포넌트들의 시작 포인트 및 종료 포인트에 의해, 적어도 하나의 어플리케이션의 인보크된 컴포넌트들의 시퀀스들을 나타내는 브랜치들을 갖는, 관리자의 트리 데이터 구조를 유지하는 것을 포함한다. 단계(1002)는 에이전트로부터 매칭되는 브랜치의 식별자 및 동적 데이터의 보고를 수신하는 것을 포함한다. 단계(1004)는, 식별자에 근거하여, 그 인보크된 컴포넌트들의 시퀀스를 식별하는 것을 포함한다. 이것은, agt1-branch1이 브랜치(이것의 마지막 노드 식별자는 "0:0:0:0:0"임)에 의해 식별됨, 그리고 이 브랜치가 시작 C1, 시작 C2, 종료 C2, 및 종료 C1의 컴포넌트 시퀀스를 포함함을 판단하기 위해, 도 8a1에서와 같은 기록에 액세스하는 것을 포함할 수 있다.
대안적으로, 단계(1004)는, 에이전트1의 마지막 노드 0:0:0:0:0이 관리자의 마지막 노드 0:0:0:0:0:0:0:0:0에 대응함을 판단하기 위해 도 7c2에서와 같은 기록에 액세스하는 것을 포함할 수 있고, 그리고 mgr-branch1이 관리자의 마지막 노드 0:0:0:0:0:0:0:0:0에 의해 식별됨, 그리고 이 브랜치가 시작 C1, 시작 C2, 시작 C5, 시작 C6, 종료 C6, 종료 C5, 종료 C2, 종료 C1의 컴포넌트 시퀀스를 포함함을 판단하기 위해, 도 8a3에서와 같은 기록에 액세스하는 것을 포함할 수 있다.
단계(1006)은, 식별자에 근거하여, 트랜젝션의 인보크된 컴포넌트들과 관련된 정적 데이터를 찾는 것을 포함한다. 이것은, 예를 들어, 노드/브랜치 식별자 "0:0:0:0:0" 및 브랜치의 노드들 각각에 대해 인덱싱된 static_data_C1을 식별하기 위해, 도 8b1에서와 같은 기록에 액세스하는 것을 포함할 수 있다. 대안적으로, 이것은, 예를 들어, 노드/브랜치 식별자 "0:0:0:0:0:0:0:0:0" 및 브랜치의 노드들 각각에 대해 인덱싱된 static_data_C1을 식별하기 위해, 도 8b4에서와 같은 기록에 액세스하는 것을 포함할 수 있다.
단계(1008)는 트랜젝션의 인보크된 컴포넌트들의 시퀀스의 트랜젝션 트레이스를 유저 인터페이스(UI)에 제공하는 것을 포함한다. 트랜젝션 트레이스는, 식별된 브랜치로부터 직접 제공될 수 있다(왜냐하면 브랜치가 브랜치의 각각의 컴포넌트의 시작 및 종료를 식별하기 때문). 유저 인터페이스 상에 제공될 수 있는 트랜젝션 트레이스의 예들이 도 6a 내지 도 6i, 도 11a 및 도 11b에 있다. 단계(1010)은 도 11a 및 도 11b에 도시된 바와 같이, 정적 데이터 및/또는 동적 데이터에 근거하여 트랜젝션 트레이스에 주석첨가하는 것을 포함한다. 이것은 유저 인터페이스 상에 정적 데이터 및/또는 동적 데이터를 디스플레이하는 것을 포함할 수 있다. 또 다른 예로서, 도 14a 내지 도 14c와 연계하여 설명되는 바와 같이 UI가 제공될 수 있다.
도 10b는 관리자가, 하나 이상의 에이전트들로부터 수신된 업데이트들에 근거하여, 도 7a1 내지 도 7c1에서와 같은 트리 데이터 구조를 업데이트하는 예시적인 프로세스를 도시한다. 단계(1020)는, 예를 들어, 컴포넌트들의 시작 포인트 및 종료 포인트에 의해, 적어도 하나의 어플리케이션의 인보크된 컴포넌트들의 시퀀스들을 나타내는 브랜치들을 갖는 트리 데이터 구조를 유지하는 것을 포함한다. 단계(1022)는, 제 1 서브시스템의 제 1 에이전트 및 제 2 서브시스템의 제 2 에이전트와 같은 하나 이상의 에이전트들로부터 트리 데이터 구조의 업데이트를 수신하는 것을 포함한다. 단계(1024)는 업데이트를 하나의 에이전트로부터 또 다른 에이전트로 전달하는 것을 포함한다. 에이전트들이 동일한 소프트웨어의 상이한 인스턴스들을 모니터링하는 경우, 관리자는 하나의 에이전트로부터 수신된 업데이트를 또 다른 에이전트로 전달 혹은 중계할 수 있다. 이러한 방식으로, 새로운 트랜젝션들은 에이전트들 간에 빠르게 전파될 수 있고, 이에 따라 에이전트들의 트리 데이터 구조는 동기화된다. 단계(1026)는 업데이트로부터 그 인보크된 컴포넌트들의 시퀀스를 나타내는 브랜치를 갖는 관리자의 트리 데이터 구조를 업데이트하는 것을 포함한다. 예를 들어, 이것은 도 7d에서 mgr-new-branch를 추가하는 것을 포함할 수 있다. 업데이트는, 예를 들어, 도 8b3의 기록에 근거하여, 관리자의 트리 데이터 구조의 기록들을 업데이트하는 것을 포함할 수 있다.
단계(1028)에서, 업데이트는 트랜젝션의 하나 이상의 인보크된 컴포넌트들의 시작 포인트 및 종료 포인트를 나타낸는 노드들을 제공하는 것을 포함한다. 예를 들어, 이것은 도 7d에서 mgr-new-branch의 노드들(760, 762 및 764)을 추가하는 것을 포함할 수 있다. 단계(1030)에서, 업데이트는, 도 8b5의 기록들과 연계되어 도시된 바와 같은, 트랜젝션의 인보크된 컴포넌트들과 관련된 정적 데이터를 노드들에 대해 인덱싱하는 것을 포함한다. 유의해야 하는 것으로, 도 7d의 mgr-new-branch의 예에서, 관리자의 트리 데이터 구조에 대한 업데이트는 에이전트의 트리 데이터 구조의 노드들 중 일부 노드(예를 들어, 노드들(760, 762 및 764))는 포함하지만, 에이전트의 트리 데이터 구조의 노드들 중 다른 노드(예를 들어, 노드(702))는 포함하지 않을 수 있다.
도 11a는 정적 데이터 및 동적 데이터를 사용하는 주석을 갖는 도 6a의 트랜젝션 트레이스를 도시한다. 트랜젝션 트레이스들은 트랜젝션/실행 흐름의 완전한 픽처(picture)를 제공한다. 여기서, 주석은, C1에 대한 그래프 부분(600)에서 그리고 C2에 대한 그래프 부분(602)에서 제공된다. 주석 "methodC1|classC1|JARC1|dynamic_data_1"은 정적 데이터 그 다음 동적 데이터로 이어지는 3가지 타입을 포함하는바, 여기서 데이터 각각의 부분은 수직바에 의해 구분된다. 그러나, 다른 포맷들도 가능하다. 예를 들어, 주석은, 트랜젝션 트레이스의 그래프 영역들 외부(예를 들어, 위에 혹은 측면)에, 마우스 오버(mouse over) 혹은 호버 박스(hover box), 툴팁(tooltip)으로, 정보 액세스를 위해 오른쪽 클릭을 행함으로써, 팝업 원도우에서, 별개 윈도우 혹은 디스플레이 스크린 등에서 제공될 수 있다. 동적 데이터는 그 외관, 컬러, 폰트, 위치 등에 의해 정적 데이터로부터 개별적으로 구분될 수 있다.
도 11b는 정적 및 동적 데이터를 이용하는 주석(annotation)을 갖는 도 6a의 트랜젝션 트레이스를 도시한다. 이러한 주석은, C5에 대해서는 그래프 영역(610) 내에, 그리고 C6에 대해서는 그래프 영역(612) 내에 제공된다. 유저가 서브시스템들에 걸쳐서 확장되는 트랜젝션의 작동(behavior)을 보다 잘 이해할 수 있도록 하기 위해, 도 11a 및 11b의 트랜젝션 트레이스들은 동일한 유저 인터페이스 상에 동시에 디스플레이될 수 있다는 것을 주목해야 한다. C1 및 C2는 서브시스템1 내에 있고, C5 및 C6은 서브시스템2 내에 있다는 것을 상기한다. 서브시스템들의 클럭들이 적절하게 동기화된다면, 이러한 서브시스템들의 트랜젝션 트레이스들은 공통의 시간 라인 레퍼런스(time line reference)를 이용하여 디스플레이될 수 있다. 동기화가 보장되지 않는다면, 서브시스템들의 트랜젝션 트레이스들은 개별적인 시간 라인 레퍼런스들을 이용하여 디스플레이될 수 있다. 관리자는, 호출(call)할 때, C2가 C5에게 제공하는 상관 식별자(correlation identifier)에 기초하여 유저 인터페이스 내에서 2개의 트랜젝션 트레이스들을 관련시키는 것을 판단할 수 있다. 에이전트들은, 트레이스들이 관련되어야 함을 나타내기 위해 트리 데이터 구조를 이용하여 트랜젝션 트레이스들을 보고할 때, 관리자에게 상관 식별자를 제공한다. 추가의 정보에 대해서는, 2007년 6월 21일 공개되었으며 그 명칭이 "Correlating Cross Process And Cross Thread Execution Flows In An Application Manager"인 US2007/0143323을 참조하는 바, 이는 참조로서 본원에 포함된다.
예를 들어, C2가 트랜젝션 agt1-T1 내에서 인보크(invoke)될 때, 이는 C5를 호출하는 agt1-T1의 식별자를 포함할 수 있다. agent1은, 트랜젝션 agt1-T1에 관해 관리자에게 보고할 때, 식별자 agt1-T1을 포함한다. 유사하게, agent2는, 트랜젝션 agt2-T1에 관해 관리자에게 보고할 때, 식별자들 agt1-T1 및 agt2-T1을 포함한다. 그러면, 관리자는 식별자들 agt1-T1 및 agt2-T1의 트랜젝션들/트랜젝션 트레이스들이 관련되어 있음을 알게 된다.
다른 예시적인 유저 인터페이스는 도 7a1-7d의 트리 데이터 구조들을 직접 제공하는 바, 이는 예를 들어, 이들 사이에 노드들 및 에지들을 디스플레이함으로써 이루어진다. 상태 및 동적 데이터는 이러한 노드들 내에 또는 이러한 노드들 다음에 디스플레이될 수 있다.
도 12a는 각각의 트랜젝션의 각각의 브랜치 내의 하나의 컴포넌트에 대한 노드에 링크된 수집기를 갖는 도 7a1의 트리 데이터 구조를 도시한다. 하나 또는 그 보다 많은 수집기들이 트리 데이터 구조의 노드들과 관련될 수 있다. 하나 또는 그 보다 많은 수집기들이 하나의 노드와 관련될 수 있고, 하나 또는 그 보다 많은 노드들이 하나의 수집기와 관련될 수 있다. 하나의 수집기와 관련된 하나 또는 그 보다 많은 노드들은 하나 또는 그 보다 많은 컴포넌트들을 나타낼 수 있다.
하나의 시도에서, 수집기는 노드에 의해 표현되는 컴포넌트의 하나 또는 그 이상의 메트릭(metric)들을 수집하는 에이전트 코드 내의 소프트웨어 프로세스이다. 이러한 에이전트는 관리되는 어플리케이션 내의 방법들과 같은 인스트루먼트(instrument)되는 컴포넌트들에 연결되는 쌍(pair) <agent metric, gatherer>의 기본 데이터 구조를 이용할 수 있다. 이러한 메트릭들은, 예를 들어 컴포넌트가 인보크될 때 그 컴포넌트의 인스트루멘테이션 코드(instrumentation code)가 트리거될 때에, 수집된다. 예를 들어, 이러한 메트릭들은, 노드에 의해 표현되는 컴포넌트의 인스턴스(instance)가 인보크되는 횟수인 인보케이션들(invocations)의 카운트, 노드에 의해 표현되는 컴포넌트의 인스턴스의 응답 시간인 응답 시간, 다수의 인보케이션들에 걸친 이러한 응답 시간들의 평균, 에러 메시지가 노드에 의해 표현되는 컴포넌트와 관련되는 지를 나타내는 에러 메트릭, 또는 본원에서 설명되는 것들을 포함하는 임의의 다른 메트릭을 포함할 수 있다. 트리 내의 노드에 수집기를 링크시킴으로써, 노드에 의해 표현되는 컴포넌트의 인보케이션이 그 수집기의 콘텍스트(context)에 링크될 수 있다. 유사하게, 수집기는 그 노드에만 링크될 수 있는 바, 이러한 경우, 브랜치에 의해 고유하게 표현되는 각각의 트랜젝션 및 그 브랜치의 콘텍스트에 대한 수집기들의 일대일 링킹(one-to-one linking)이 있다.
에이전트에 대한 하나의 가치있는 사업 목적은, 트랜젝션 타입에 의해 분리되는 메트릭들(트랜젝션 분리성)을 제공하는 것이다. 예를 들어, 소정의 커스터머 어플리케이션 상의 각각의 식별되는 트랜젝션 타입에 대해, 예를 들어 트랜젝션 타입 "Buy book" 및 트랜젝션 "Buy CD"에 대해, 소정의 백종료(backend)에 대한 (또는 이러한 백종료 상에 인보크되는 어떠한 특정의 SQL 스테이트먼트들에 대한) 응답 시간을 보고하고자 할 수 있다. 이러한 목적을 위한 한 단계는, "트랜젝션" 메트릭 세트들, 예를 들어 커스터머 어플리케이션 내에서 인보크된 특정의 트랜젝션들에 의해 그 값들이 분할되는 메트릭들을 효율적으로 전달하는 능력이다.
트리 데이터 구조가 이러한 목적을 위해 이용될 수 있다. 설명한 바와 같이, 트리는 트랜젝션 포인트들 또는 노드들의 브랜치 시퀀스(branching sequence)를 통해 트랜젝션들을 서술(describe)한다. 이러한 시퀀스의 에지들은 트랜젝션 세그먼트들이라 불린다. 트랜젝션 구조는, 그것이 검출되는 코드의 수명(longevity)과 동등한 라이프사이클을 갖는다. 트랜젝션 구조는 변경된 트레이서에 의해 어플리케이션을 인스트루먼트하는 에이전트에 의해 처음으로 검출된다. 이후, 트랜젝션 구조는 다른 에이전트들 및 매너저와 공유된다. 트랜젝션 구조는 또한 관리자의 데이터베이스 내에 영구적으로 저장된다.
에이전트는 하나 또는 그 이상의 수집기들의 세트에 의해 트랜젝션 구조 내의 관심의 각 포인트를 데코레이트(decorate)한다. 각 수집기는 가능한 메트릭들의 다수의 세트와 관련된다. 에이전트는 메트릭들에 대한 "개수들(numbers)"을 수집하며, 그리고 에이전트 구조때문에, 가능한 트랜젝션 경로들의 각각의 것과 관련된 특정의 값들을 판단할 수 있다. 어떠한 종류들의 수집기들은 하나 보다 많은 트랜젝션 구조 엘리먼트 또는 노드와 관련될 수 있다. 예를 들어, 동시 발생의 인보케이션 수집기들은, 수집되고 있는 메트릭과 관련된 모든 트랜젝션 구조 엘리먼트들과 관련된다.
부가적으로, 에이전트들은, 다른 에이전트들에 의해 검출되는 트랜젝션 구조들에 관해 관리자로부터 업데이트들을 수신할 수 있다. 이에 의해, 예를 들어, 에이전트들은 크로스-JVM 트랜젝션들의 경우 효율적으로 보고할 수 있게 된다.
이러한 예에서, 수집기(1200)는 트랜젝션 agt1-T1 내의 노드(706)에만 링크되고, 수집기(1202)는 트랜젝션 agt-T4 내의 노드(724)에만 개별적으로 링크된다. 노드들(706 및 724) 모두는 C2의 인보케이션의 끝, 예를 들어 C2가 정지 시간(stop time)을 나타내지만, 각각의 트랜젝션들, (agt1-branch1에 의해 표현되는) agt1-T1 및 (agt1-branch4에 의해 표현되는) agt1-T4의 상이한 콘텍스트들을 나타낸다. 모니터되는 어플리케이션의 성능을 보다 잘 이해할 수 있도록 하기 위해서는, 하나 또는 그 보다 많은 트랜젝션 콘텍스트들에 따라 소정의 컴포넌트에 대한 메트릭들을 분리하는 것이 유익할 수 있다. 이는, 예를 들어, 어떠한 컴포넌트에 관한 성능 문제가 하나의 특정 트랜젝션 콘텍스트에서는 일어나지만, 다른 콘텍스트에서는 일어나지 않음을 나타낼 수 있다. 이후, 문제가 되는 특정의 콘텍스트가 더 조사될 수 있다. 수집기들은, 예를 들어 오퍼레이터 경험에 기초하여, 또는 문제가 되는 컴포넌트들 및/또는 트랜젝션들을 검출하는 자동화된 분석에 기초하여 구성될 수 있다.
수집기는, 트리 내의 하나 또는 그 이상의 선택된 노드들에 기초하여, 메트릭들이 획득되고 선택적으로 보고될 수 있게 한다. 컴포넌트들은 인스트루먼트되기 때문에, 컴포넌트들의 모든 발생들에 대해 메트릭들을 획득 및 보고하는 것이 가능하다. 하지만, 이것은 불필요한 오버헤드 비용들을 야기할 수 있다. 요구될 때(as-needed basis)에만 메트릭들을 수집 및 보고하는 것이 효율적이다. 또한, 트랜젝션 분리(transaction-segregated) 메트릭들을 수집 및 보고하는 것이 유익하다. 예를 들어, 수집기(1200)에 의해 노드(706)에서 얻어지는 메트릭들은 agt1-T1의 콘텍스트에서 인보케이션 C2에 대한 것이다. 대안적으로, 수집기들이 노드들(706, 724 및 732)에 링크된다면, 얻어지는 메트릭들은 C2가 인보크되는 모든 트랜젝션들 보다 적은 트랜젝션들의 서브세트에 특정되지 않을 것이다. 수집기(1200) 및 수집기의 어떠한 다른 묘사는 본원에서 하나 또는 그 이상의 타입들의 메트릭들을 수집할 수 있는 엔티티를 나타내는 것으로 의도된다.
다른 시도에서, 설명한 바와 같이, 하나의 수집기가 다수의 트랜젝션들에 링크될 수 있으며, 이에 따라 수집기에 의해 얻어지는 적어도 하나의 메트릭은 다수의 트랜젝션들의 컴포넌트들과 관련된다. 일반적으로, 다수의 변형들이 가능한 바, 이러한 변형들은 다음을 포함한다: (1) 수집기의 적어도 하나의 메트릭은 하나의 트랜젝션 내의 하나의 컴포넌트 인스턴스와 관련된다(예를 들어, 수집기(1200)는 도 12a의 agt1-T1 내의 노드(706)의 C2의 인스턴스에 링크된다), (2) 수집기의 적어도 하나의 메트릭은 하나의 트랜젝션 내의 하나의 컴포넌트의 다수의 인스턴스들과 관련된다(예를 들어, 수집기(1206)는 도 12c의 agt1-T3 내의 노드들(712 및 718)의 C3의 인스턴스들에 링크된다), (3) 수집기의 적어도 하나의 메트릭은, 하나의 트랜젝션 내에서, 하나의 컴포넌트의 하나의 컴포넌트 인스턴스 및 다른 컴포넌트의 하나의 컴포넌트 인스턴스와 관련된다(예를 들어, 수집기(1200)는 도 12a의 agt1-T1 내의 노드(706)의 C2의 인스턴스에 링크되며, 수집기(1200)는 또한 agt1-T1 내의 노드(708)의 C1의 인스턴스에 연결되도록 변형됨), 및 (4) 수집기의 적어도 하나의 메트릭은, 하나의 트랜젝션 내의 컴포넌트의 하나의 컴포넌트 인스턴스 및 다른 트랜젝션 내의 다른 컴포넌트의 하나의 컴포넌트 인스턴스와 관련된다(예를 들어, 수집기(1200)는 도 12a의 agt1-T1 내의 노드(706)의 C2의 인스턴스에 링크되며, 수집기(1200)는 또한 agt1-T2 내의 노드(714)의 C1의 인스턴스에 연결되도록 변형됨). 경우 (4)에서, 적어도 하나의 메트릭은 다수의 트랜젝션들, 예를 들어 하나의 트랜젝션 및 다른 트랜젝션에 대한 것이다.
도 12b는 상이한 각각의 트랜젝션들의 상이한 각각의 브랜치들 내의 동일한 컴포넌트의 다수의 발생들에 대해 노드들에 링크되는 수집기를 갖는 도 7a1의 트리 데이터 구조를 도시한다. 수집기(1204)는, 상이한 각각의 트랜젝션들 내에 있는 트리 내의 노드들, 즉 노드들(706 및 724)과 일대다 관계(one-to-many relationshp)로 링크된다. 이 경우, 수집기(1204)에 의해 얻어지는 메트릭들은 C2의 상이한 인스턴스들 및 각각의 트랜젝션들에 걸쳐서 수집된다. 메트릭들은, 고유의 트랜젝션 콘텍스트에서가 아닌, 수집기(1204)의 콘텍스트에서 얻어진다. 메트릭들은 agt1-T1 및 agt1-T4를 포함하는 트랜젝션들의 그룹의 콘텍스트에서 수집된다. 이는, 예를 들어 컴포넌트들의 하나 또는 그 이상의 인스턴스들이 트랜젝션들의 그룹 내에서 인보크되었음을 알 것이 요구되지만, 각 인보케이션이 발생된 트랜젝션을 구별할 필요가 없을 때에 유익할 수 있다.
도 12c는 각각의 트랜젝션의 동일한 각각의 브랜치 내의 동일한 컴포넌트의 다수의 발생들에 대해 노드들에 링크되는 수집기를 갖는 도 7a1의 트리 데이터 구조를 도시한다. 여기에서, 수집기(1206)는, 동일한 트랜젝션 내에 있으며 트랜젝션 agt1-T3 내의 동일한 컴포넌트 C3의 상이한 인스턴스들을 나타내는, 트리 내의 노드들, 즉 노드들(712 및 718)과 일대다 관계로 링크된다. 이 경우, 수집기(1206)에 의해 얻어지는 메트릭들은 트랜젝션 agt1-T3 내의 C3의 상이한 인스턴스들에 걸쳐서 수집된다. 메트릭들은 고유의 트랜젝션 콘텍스트에서 수집된다. 이는, 예를 들어 컴포넌트들의 하나 또는 그 이상의 인스턴스들이 트랜젝션들의 그룹 내에서 인보크되었음을 알 것이 요구되지만, 상이한 인스턴스들의 메트릭들을 구별할 필요가 없을 때에 유익할 수 있다.
도 7a1과 관련하여 설명된 바와 같이, agt1-T2는 노드들(702, 710, 712 및 714)의 시퀀스를 포함하고, agt1-T3은 노드들(702, 710, 712, 716, 718 및 720)의 시퀀스를 포함하고, agt1-T4는 노드들(702, 710, 712, 722, 724 및 726)의 시퀀스를 포함한다는 것을 상기한다. 주목할 사항으로서, 노드(712)에 해당하는 컴포넌트 인보케이션에 대해 하나 또는 그 이상의 메트릭들이 얻어질 때, 트랜젝션은 아직 고유하게 정의되지 않는데, 왜냐하면 3개의 상이한 노드 시퀀스들 중 어느 하나는 노드(712)를 따를 수 있기 때문이다. 이 경우, 메트릭들이 수집되고, 이후 트랜젝션이 특정된 아이덴티티가 아닌 경우, 이러한 메트릭들을 폐기(discard)하고 이들을 매너저에게 보고하지 않기로 판단할 수 있다. 즉, 하나의 시도에 있어서, 수집기(1206)는, 노드(712)가 특정의 트랜젝션, 예를 들어 agt-T2, agt-T3 또는 agt-T4의 일부일 때에만 노드(712)에 링크될 수 있다.
대조적으로, 노드(718)에 해당하는 컴포넌트 인보케이션에 대해 하나 또는 그 이상의 메트릭들이 얻어질 때, 트랜젝션(agt1-T3)이 고유하게 정의되는데, 왜냐하면 단지 하나의 노드 시퀀스 만이 노드(718)를 따를 수 있기 때문이다. 이 경우, 메트릭들이 수집되고, 이들이 관리자에게 보고될 것으로 판단된다. 예를 들어, 에이전트는 메트릭들과 같은 정보를 관리자에게 주기적으로(이를 테면, 매우 적은 분(minutes) 마다) 보고할 수 있다. 전형적으로, 트랜젝션은, 다음 보고 시간 이전에, 끝나거나, 또는 그렇지 않으면 고유하게 식별될 수 있는 포인트로 진행될 것이다. 에이전트는 아직 식별되지 않은(not-yet-identified) 트랜젝션에 대한 메트릭스들을, 이러한 트랜젝션이 식별될 때까지 이들 메트릭들이 수집될 때 저장할 수 있으며, 이때 이러한 메트릭들을 폐기하고, 이러한 메트릭들을 매너저에게 보고하고, 및/또는 어떠한 다른 동작을 취하기 위한 판단이 이루어질 수 있다.
다른 시도에서는, 트랜젝션이 완료되고 식별된 이후, 메트릭들이 보고되어야 하는 지에 대한 판단이 이루어진다. 또한, 트랜젝션 분리된 메트릭들이 제공될 때, 각각 에이전트 및 관리자에 의한 처리와 관련된 도 16a 및 16b를 참조한다.
또한, 도 12a-12c에 도시된 것과 같은 상이한 타입들의 수집기들이 결합하여 이용될 수 있다.
도 13a는 도 12a의 트리 데이터 구조에 대한 수집기들(1200 및 1202)에 대한 레퍼런스들의 기록을 도시한다. 이를 테면, 에이전트들 및 관리자들은 기록들을 저장할 수 있다. 기록의 제 1 엔트리는, 수집기(1200)가, 0:0:0:0의 식별자를 가지며 컴포넌트 C2 및 트랜젝션 agt1-T1을 나타내는 노드에 링크됨을 나타낸다. 기록의 제 2 엔트리는, 수집기(1202)가, 0:0:1:0:2:0의 식별자를 가지며 컴포넌트 C2 및 트랜젝션 agt1-T4를 나타내는 노드에 링크됨을 나타낸다.
도 13b는 도 12a의 트리 데이터 구조에 대한 수집기(1204)에 대한 레퍼런스들의 기록을 도시한다. 기록의 제 1 엔트리는, 수집기(1204)가, 0:0:0:0의 식별자를 가지며 컴포넌트 C2 및 트랜젝션 agt1-T1을 나타내는 노드에 링크됨을 나타낸다. 기록의 제 2 엔트리는, 수집기(1204)가 또한, 0:0:1:0:2:0의 식별자를 가지며 컴포넌트 C2 및 트랜젝션 agt1-T4를 나타내는 노드에 링크됨을 나타낸다.
도 13c는 도 12c의 트리 데이터 구조에 대한 수집기(1206)에 대한 레퍼런스들의 기록을 도시한다. 기록의 제 1 엔트리는, 수집기(1206)가, 0:0:1:0의 식별자를 가지며 컴포넌트 C3 및 트랜젝션 agt1-T3을 나타내는 노드에 링크됨을 나타낸다. 기록의 제 2 엔트리는, 수집기(1206)가 또한, 0:0:1:0:1:0의 식별자를 가지며 컴포넌트 C3 및 트랜젝션 agt1-T3을 나타내는 노드에 링크됨을 나타낸다.
도 14a는 도 13a의 트리 데이터 구조에 기초하는 예시적인 유저 인터페이스를 도시한다. 다양한 타입들의 유저 인터페이스(UI) 디스플레이들이, 하나 또는 그 이상의 에이전트들로부터 관리자에 의해 수신되는 메트릭들, 브랜치 식별자들 및 수집기 식별자들을 포함하는 정보에 기초하여 제공될 수 있다. 하나의 가능한 시도에서, UI 디스플레이(1400)는 트리 데이터 구조 및 그 노드들을 포함한다. 이를 테면, 라인 칼라, 패턴, 폭 또는 필 칼라(fill color) 또는 패턴과 같은 시각적인 특징들을 이용하여, 하나 또는 그 이상의 관심의 노드들을 식별하고, 관심을 두고 있지 않은 하나 또는 그 이상의 트랜젝션들의 노드들로부터 이들을 구별할 수 있다. 유사하게, 시각적인 특징들은 관심의 컴포넌트들을 식별하고, 이들을 관심을 두고 있지 않은 컴포넌트들로부터 구별하는 데에 이용될 수 있다.
예를 들어, 진하게 긴 대시선들(heavy long-dashed lines)은 agt1-T1을 식별하기 위해 노드들(702, 704, 706 및 708)에 대해 이용되고, 진하게 짧은 대시선들(heavy short-dashed lines)은 agt1-T4를 식별하기 위해 노드들(702, 710, 712, 722, 724 및 726)에 대해 이용된다. 영역(1402)은 수집기(1200)에 의해 수집된 데이터에 기초하여 노드(706)에 의해 표현되는 컴포넌트 인스턴스에 관한 예시적인 메트릭들을 제공한다. 영역(1404)은 수집기(1202)에 의해 수집된 데이터에 기초하여 노드(724)에 의해 표현되는 컴포넌트 인스턴스에 관한 예시적인 메트릭들을 제공한다. 이러한 메트릭들은, 예를 들어 에러들, 평균 응답 시간, 및 트랜젝션 agt1-T1의 콘텍스트에서의 그리고 개별적으로는 agt1-T4 콘텍스트에서의 인보케이션들의 개수를 포함할 수 있다.
도 14b는 도 13b의 트리 데이터 구조에 기초하는 예시적인 유저 인터페이스를 도시한다. UI 디스플레이(1410)에 있어서, UI 디스플레이(1400)에서와 같이, 진하게 긴 대신선들은 agt1-T1을 식별하기 위해 노드들(702, 704, 706 및 708)에 대해 이용되고, 진하게 짧은 대시선들은 agt1-T4를 식별하기 위해 노드들(702, 710, 712, 722, 724 및 726)에 대해 이용된다. 영역(1412)은, 수집기(1200)에 의해 수집된 데이터에 기초하여, 노드들(706 및 724)에 의해 표현되는 컴포넌트 인스턴스들에 관한 예시적인 메트릭들을 제공한다. 이러한 메트릭들은, 예를 들어 에러들, 평균 응답 시간, 및 agt1-T1 및 agt1-T4를 포함하는 트랜젝션의 그룹의 콘텍스트에서의 인보케이션들의 개수를 포함할 수 있다.
도 14c는 도 13c의 트리 데이터 구조에 기초하는 예시적인 유저 인터페이스를 도시한다. UI 디스플레이(1420)에서, 진하게 긴 대시선들은 agt1-T3을 식별하기 위해 노드들(702, 710, 712, 716, 718 및 720)에 대해 이용된다. 영역(1422)은, 수집기(1206)에 의해 수집된 데이터에 기초하여, 노드들(712 및 718)에 의해 표현되는 컴포넌트 인스턴스들에 관한 예시적인 메트릭들을 제공한다. 이러한 메트릭들은, 예를 들어 에러들, 평균 응답 시간, 및 agt1-T3의 콘텍스트에서의 C3의 다수의 발생들의 인보케이션들의 개수를 포함할 수 있다.
유사한 UI들이 다른 서브시스템들에 대해 제공될 수 있다. UI는 또한, 도 7c1 및 7d와 관련하여 설명된 것과 같은 다수의 서브시스템들로부터의 노드들을 결합시킬 수 있다.
도 15a는 도 5b 및 도 14a에 부합하는 예시적인 유저 인터페이스를 도시한다. UI(1500)는, 노드들/꼭지점들(nodes/vertices) 및/또는 이러한 노드들을 연결하는 화살표들/에지들(arrows/edges)을 갖는 트리 데이터 구조를 포함하는 지시 그래프(directed garph)이다. 도 14a-c의 UI들과 대조적으로, 각 노드는 인보크되는 컴포넌트를 나타내는 바, 여기서 하나의 노드는 컴포넌트의 실행 또는 인보케이션의 시작 또는 끝을 나타낸다. 각 노드는 1회 이상 시작 및 중지하는 컴포넌트를 나타낼 수 있다.
노드들은 루트 노드(root node)(1501), 및 하나의 경로에 있어서, C1에 대한 노드(1502), C2에 대한 노드(1504) 또는 C3에 대한 노드(1506), C3에 대한 노드(1506), C5에 대한 노드(1508), C6에 대한 노드(1510), 및 C7에 대한 노드(1512)를 포함한다. 다른 경로는 C4에 대한 노드(1514)를 포함하는 바, 이는 또한 C2 또는 C3을 호출한다. 화살표/에지(1524)는 노드들(1502 및 1504)을 연결하며, 다수의 에지 부분들을 포함한다. 하나의 에지 부분(1520)은 C2가 agt1-T1의 콘텍스트에서 C1에 의해 호출되었음을 나타내고, 다른 에지 부분(1522)은 C2가 agt1-T4의 콘텍스트에서 C1에 의해 호출되었음을 나타낸다. 또한, 에지 부분들(1520 및 1522)은, 이들 각각의 관련된 메트릭스들에 기초하여, 이를 테면 칼라, 패턴, 또는 두께와 같은 상이한 시각적인 특징들을 가질 수 있다. 각 에지 부분은 하나 또는 그 이상의 수집기들 및 이에 의해 이러한 하나 또는 이상의 수집기들에 의해 수집되는 메트릭스들과 관련될 수 있다.
제공되는 예에서, 에지 부분들(1520 및 1522)은, 예를 들어 하나의 트랜젝션(agt1-T4)에 기인하는 동일한 컴포넌트(C2)의 인보케이션들의 개수 대(versus) 다른 트랜젝션(agt1-T4)에 기인하는 동일한 컴포넌트(C2)의 인보케이션들의 개수에 기초하여, 두께에 의해 서로로부터 시각적으로 구별된다. 이 경우, 에지 부분(1520)은 에지 부분(1522) 보다 더 두껍다(예를 들어, 더 넓다). 이를 테면, 에지 부분(1522) 보다 두배 두꺼운 에지 부분(1520)은, C1이 agt-T4에서 보다 agt-T1에서 C1에 의해 두 배의 횟수로 인보크되었음을 나타낼 것이다.
다른 예에서, 에지 부분들(1520 및 1522)의 상대적인 두께는 agt-T4에 기인하는 C2의 에러들의 개수 대 agt-T4에 기인하는 C2의 에러들의 개수에 기초한다. 또 다른 예에서, 에지 부분들(1520 및 1522)의 상대적인 두께는 agt-T4에 기인하는 C2의 평균 응답 시간 대 agt-T4에 기인하는 C2의 평균 응답 시간에 기초한다.
다른 예에서, 빨간색과 같은 더 따듯한 칼라(hotter color)는 비교적 많은 개수의 인보케이션들을 나타내는 데에 이용되고, 청색과 같은 더 차가운 칼라(cooler color)는 비교적 적은 개수의 인보케이션들을 나타낸다. 다른 시도에서, 빨간색은 비교적 많은 개수의 에러들 또는 비교적 높은 평균 응답 시간을 나타내는 한편, 청색은 비교적 적은 개수의 에러들 또는 비교적 낮은 평균 응답 시간을 나타낸다. 다른 많은 옵션들이 가능하다.
부가적으로, 디스플레이 영역들(1524 및 1526)은 각각 에지 부분들(1520 및 1522)과 관련된 메트릭들을 제공한다. 이에 따라, 각각의 에지 부분(1520 및 1522)은 적어도 하나의 메트릭에 의해 데코레이트된다. 디스플레이 영역(1524)은 agt-T1의 평균 응답 시간에 대해 설정된 경보(alert)의 "경고(caution)" 상태를 나타낸다. 이러한 상태는, 이를 테면 평균 응답 시간이 임계치를 초과할 때에 설정될 수도 있다. 일반적으로, 경보들은, 관리되는 컴퓨팅 디바이스의 모든 성능에 대해, 그리고 관리되는 컴퓨팅 디바이스에 의해, 예를 들어 다른 관리되는 컴퓨팅 디바이스에 대해 또는 인스트루먼트되지 않는 백 종료 디바이스(back end edvice)에 대해 이루어지는 호출에 대해 설정될 수 있다. 이러한 경보들은 유저에 의해 생성 및 구성될 수 있다. 경보는 또한 비즈니스 트랜젝션(Business Transaction)에 대해 정의될 수 있다. 경보가 정의되어 있는 경우, 이는 이를 테면 정상(녹색), 경고(노랑색) 또는 위험(빨간색)과 같은 몇 개의 상태들 중에서 하나로 나타날 수 있다. 경보는 수집기에 의해 얻어지는 트랜젝션 분리된 메트릭들에 대해 설정될 수 있으며, 이에 따라 경보는 또한 하나 또는 그 이상의 특정된 트랜젝션들에 대해 특정되게 된다. 이는 유저가 시스템을 이해하고 진단하는 것을 돕는 유용한 정보를 제공한다.
UI는, 에지 부분들의 폭들 또는 다른 시각적인 특징이 선택된 메트릭을 나타내도록 하기 위해, 유저가 디스플레이 영역들(1524 및 1526) 중 하나 내의 메트릭들중 하나의 텍스트 설명(textual description)을 클릭하거나, 또는 그렇지 않으면 선택할 수 있게 한다. 또는, 풀다운 메뉴와 같은 다른 UI 디바이스는 유저가 설명된 바와 같이 UI를 구성할 수 있게 한다. 또한, UI는, 이를 테면 관심의 시간 기간 내에서 있지 않은 데이터를 제거(filter out)함으로써, 하나 또는 그 이상의 특정되는 기준을 충족시키지 않는 데이터를 제거할 수 있다. UI는 유저에 의해 선택되는 하나 또는 그 이상의 보고 에이전트들/서브시스템들에 기초하여 데이터를 제시할 수 있다.
UI 내의 다른 노드들 간의 경로들은 이용가능한 트랜젝션 분리된 메트릭들에 기초하여 유사하게 강화(enhance)될 수 있다. UI는 또한, 유저로 하여금 도 11a 및 11b와 같은 트랜젝션 트레이스들을 볼 수 있게 한다. 예를 들어, UI는 도 15a 또는 15b를 제공하는 데에 이용되는 개별적인 트랜젝션들의 리스트를 제공하고, 해당하는 트랜젝션 트레이스를 볼 수 있도록 트랜젝션들 중 하나를 선택할 수 있다.
트랜젝션 또는 트랜젝션들의 그룹에 의해 컴포넌트의 성능 메트릭들을 분리하는 능력은, 오퍼레이터로 하여금, 그 컴포넌트에 대해, 어플리케이션의 성능을 보다 용이하게 이해하고 문제들을 진단할 수 있게 한다. 예를 들어, 트랜젝션 분리된 메트릭들을 이용하지 않는 시도는 단지 컴포넌트 C1이 유별나게 높은 평균 응답 시간을 가짐을 나타낼 수 있다. 대조적으로, 트랜젝션 분리된 메트릭들에 기초하여, UI는 agt1-T1 및 agt1-T4 각각에 대해 평균 응답 시간들을 나타냄으로써, 아마도 이러한 트랜젝션들중 하나(하지만, 나머지 하나는 아니다)가 느린 응답 시간을 야기하고 있음을 판단할 수 있다.
다른 예로서, e-커머스 웹 사이트의 관리되는 컴퓨팅 디바이스가, 커스터머가 아이템을 구입하기 위해 쇼핑할 수 있게 하는 것 및 이러한 커스터머의 지불을 처리하는 것을 포함하는 트랜젝션들을 수행한다고 가정한다. 또한, 관리되는 컴퓨팅 디바이스는 커스터머가 상이한 타입들의 시간들에 대해 쇼핑할 수 있게 하는 것을 포함하는 트랜젝션들을 수행한다고 가정한다. 트랜젝션 분리된 메트릭들을 제공하는 능력은 이러한 2개의 트랜젝션들이 개별적으로 분석될 수 있게 한다. 여기에서 제공되는 시도들은 수집되는 데이터의 종류 및 이를 수집하는 프로세스를 최적화한다.
도 15b는 도 15a에 대한 하나의 대안인 예시적인 유저 인터페이스를 도시한다. UI(1530)는 (아이콘(1532)에 의해 표시된) agt1-T1 및 (아이콘(1534)에 의해 표시된) agt1-T4인 관심의 트랜젝션들에 집중(focus)한다. 이러한 예에서, C1에 대한 노드(1536)는 트랜젝션들 내의 제 1 컴포넌트를 나타내고, C3에 대한 노드(1537) 또는 C2에 대한 노드(1538)(이들중 어느 하나가 C1에 의해 호출된다)는 트랜젝션들 내의 제 2 컴포넌트들을 나타낸다. 에지(1545)는 에지 부분들(1542 및 1544)을 포함하는 바, 이러한 에지 부분들은, 이를 테면 도 15a와 관련하여 설명된 바와 같이 이들의 상대적인 폭들에 의해 서로로부터 시각적으로 구별된다. 메트릭 디스플레이 영역들(1540 및 1546)은 각각 에지 부분들(1542 및 1544)에 링크될 수 있다.
도 15c는 다른 예시적인 유저 인터페이스를 도시한다. 이러한 UI(1560)에서, 제공되는 상세사항(detail)의 레벨은, 디바이스 상에서 실행되고 있는 어플리케이션의 소프트웨어 컴포넌트의 레벨이 아니라, 관리되는 컴퓨팅 디바이스의 레벨이다. 관리되는 컴퓨팅 디바이스들은 노드들(1574 및 1576)에 의해 표시되는 어플리케이션 서버들이며, 이들은 이를 테면 도 1a의 서버들(103 및 109)에 해당할 수 있다. UI(1560)는, 본 예에서 일반적으로 (아이콘(1562)에 의해 표시되는) 트랜젝션1(T1) 및 (아이콘(1564)에 의해 표시되는) 트랜젝션2(T2)로서 지칭되는 관심의 트랜젝션들에 집중한다. 어플리케이션 서버(1576)는, 에지(1575)의 에지 부분들(1568 및 1570) 각각에 의해 지시되는 T1 및 T2와 관련하여 어플리케이션 서버(1574)에 의해 호출된다. 에지 부분들(1568 및 1570)은, 이를 테면 이전에 설명한 바와 같이 이들의 상대적인 폭들에 의해, 서로로부터 시각적으로 구별된다. 메트릭 디스플레이 영역들(1566 및 1572)은 각각 에지 부분들(1568 및 1570)에 링크될 수 있다. 물론, UI는 노드들 사이에서 2개 이상의 화살표들, 및 2개 보다 많은 노드들을 디스플레이할 수 있다. 실제로, 복잡한 UI는, 수일(days)의 시간 기간에 걸쳐서 얻어지는 메트릭들에 기초하여 수백개 또는 심지어 수천개의 노드들에 의해 얻어질 수 있다. 이러한 UI는 유저가 트렌드들을 시각적으로 검출할 수 있게 한다. 예를 들어, UI가 비교적 느린 응답 시간들을 갖는 트랜젝션들을 나타내기 위해 빨간색과 같은 더 따뜻한 칼라를 이용하는 경우, 유저는 문제를 더 조사하기 위해, 빨간색 에지들을 검출하고, 빨간색 에지를 갖는 영역들을 확대하도록 UI를 조정할 수 있다. 유사하게, UI는 유저로 하여금 인보케이션들이 비교적 높은 영역들을 볼 수 있게 한다.
자동화된 보고서가 또한, 예를 들어 리스트의 형태로 제공될 수 있다. 이러한 리스트는, 관련된 트랜젝션들을 식별함과 함께, 문제가 있는 것으로 매트릭들이 나타내는 컴포넌트들 및/또는 관리되는 컴퓨팅 디바이스들을 식별할 수 있다.
도 16a는 에이전트가 적어도 하나의 어플리케이션에 대해 트랜젝션 분리된 메트릭들을 얻는 예시적인 프로세스를 도시한다. 단계(1600)는, 에이전트가, 이를 테면 컴포넌트들의 시작 및 중지 포인트들에 의해, 적어도 하나의 어플리케이션의 인보크된 컴포넌트들의 시퀀스들을 나타내는 브랜치들을 갖는 트리 데이터 구조를 유지하는 것을 포함한다. 에이전트는 또한, 브랜치들의 하나 또는 그 이상의 노드들에 링크되는 하나 또는 그 이상의 수집기들을 유지한다. 단계(1602)는, 트랜젝션 동안, 적어도 하나의 어플리케이션의 인보크된 컴포넌트들의 시퀀스를 식별하고, 인보크된 컴포넌트들의 메트릭들을 얻는 것을 포함한다. 예를 들어, 이것은 트랜젝션들을 트레이싱하는 것을 포함할 수 있다. 단계(1604)는 트리 데이터 구조 내의 매칭하는 브랜치를 식별하는 것을 포함한다. 단계(1606)는 하나 또는 그 이상의 수집기들에 링크된 하나 또는 그 이상의 노드들에 대한 트랜젝션 분리된 메트릭들을 식별하는 것을 포함한다. 단계(1608)는, 트랜젝션 분리된 메트릭들, 매칭하는 브랜치의 식별자 및 하나 또는 그 이상의 수집기들의 식별자를, 에이전트로부터 관리자에게 보고하는 것을 포함한다. 설명한 바와 같이, 메트릭들은 주기적으로(이를 테면, 수 분 마다) 보고될 수 있는 바, 이 경우 전형적으로 많은 트랜젝션들에 대한 메트릭들이 얻어지고 보고될 것이다. 단계(1610)에서, 에이전트는 단계(1606)에서 트랜젝션 분리된 것으로 식별되지 않는 메트릭들을 폐기하고 관리자에게 보고하지 않을 수 있다. 선택적으로, 에이전트는 비 트랜젝션 분리된 메트릭스들을 보고할 수 있다. 하나의 시도에서, 어떠한 트랜젝션 분리도 없으면, 메트릭들의 감소된 세트가 보고된다.
도 16b는, 도 16a의 프로세스와 대응하여, 관리자가 에이전트로부터의 트랜젝션 분리된 메트릭들의 보고서에 기초하여 유저 인터페이스를 제공하는 예시적인 프로세스를 도시한다. 단계(1620)는 적어도 하나의 어플리케이션의 인보크된 컴포넌트들의 시퀀스들을 나타내는 브랜치들을 갖는 관리자의 트리 데이터 구조를 유지하는 것을 포함한다. 단계(1622)는 트랜젝션 분리된 메트릭들의 하나 또는 그 이상의 보고서들, 매칭하는 브랜치들의 식별자들 및 하나 또는 그 이상의 수집기들의 식별자를 수신하는 것을 포함한다. 단계(1624)는, 매칭하는 브랜치들의 식별자들에 기초하여, 트랜젝션들의 인보크된 컴포넌트들의 시퀀스들을 식별하는 것을 포함한다. 단계(1626)는, 하나 또는 그 이상의 수집기들의 식별자들에 기초하여, 트랜젝션 분리된 메트릭들을 액세스하는 것을 포함한다. 단계(1628)는, 이를 테면 도 14a-15b에 도시된 것과 같은, 트랜젝션들 및 관련된 트랜젝션 분리된 메트릭들을 도시하는 유저 인터페이스(UI)를 제공하는 것을 포함한다. 예를 들어, 트랜젝션 분리된 메트릭들은 영역들(1402, 1404, 1412, 1422, 1524, 1526, 1540 및 1546)로서 제공될 수 있다. UI는 또한, 트랜젝션 분리된 메트릭들에 기초하여 (이를 테면 도 15a 및 15b의 1520, 1522, 1542 및 1544와 같은) 에지 부분들의 시각적인 특징들을 설정한다.
다른 실시예는 어플리케이션을 모니터하기 위한 컴퓨터에 의해 구현되는(computer-implemented) 방법을 포함하는 바, 이 방법은 각각의 브랜치들을 포함하는 트리 데이터 구조를 유지하는 단계 ―각각의 각 브랜치는 각각의 트랜젝션 동안 어플리케이션 내의 인보크된 컴포넌트들의 각각의 시퀀스를 나타냄―; 서브젝트 트랜젝션(subject transaction) 동안, 어플리케이션 내의 인보크된 컴포넌트들의 시퀀스, 및 서브젝트 트랜젝션의 인보크된 컴포넌트들 각각의 시작 및 종료 포인트들의 시간들을 식별하기 위해 에이전트를 이용하는 단계; 각각의 브랜치들 중 하나를 서브젝트 트랜젝션의 인보크된 컴포넌트들의 시퀀스에 대한 매칭하는 브랜치로서 식별하는 단계; 시작 및 종료 포인트들의 시작들 및 매칭하는 브랜치의 식별자를 에이전트로부터 관리자에게 보고하는 단계를 포함한다.
일 예에서, 매칭하는 브랜치는 서브젝트 트랜젝션의 인보크된 컴포넌트들의 시작 및 종료 포인트들을 나타내는 노드들을 포함하고; 서브젝트 트랜젝션의 인보크된 컴포넌트들의 종료 포인트를 나타내는 노드들 중 하나는 매칭하는 브랜치의 마지막 노드이며; 그리고 매칭하는 브랜치의 식별자는 이러한 매칭하는 브랜치의 마지막 노드의 식별자를 포함하고, 이러한 매칭하는 브랜치의 마지막 노드의 식별자는 매칭하는 브랜치를 고유하게 식별한다.
일 예에서, 매칭하는 브랜치는 서브젝트 트랜젝션의 인보크된 컴포넌트들의 시작 및 종료 포인트들을 나타내는 노드들을 포함하며; 그리고 서브젝트 트랜젝션의인보크된 컴포넌트들과 관련된 정적인 데이터는, 서브젝트 트랜젝션의 인보크된 컴포넌트들의 시작 및 종료 포인트들을 나타내는 노드들에 인덱스된다.
몇몇 예들에서, 정적인 데이터는 클래스(class) 및 방법 이름들(method names) 중 적어도 하나를 포함하고; 정적인 데이터는 트레이싱되는 클래스가 배치(deploy)되는 아카이브 파일(archive file)의 이름을 포함하거나; 또는 정적인 데이터는 텍스트 스트링, 컴포넌트 타입 및 포트 번호 중에서 적어도 하나를 포함한다.
일 예에서, 서브젝트 트랜젝션 동안, 에이전트는 시작 및 종료 포인트들의 시간들 이외의 동적인 데이터를 얻고 이러한 시작 및 종료 포인트들의 시간들 이외의 동적인 데이터는 서브젝트 트랜젝션 이전에는 알려지지 않으며; 그리고 상기 보고하는 단계는 시작 및 종료 포인트들의 시간들 이외의 동적인 데이터를 관리자에게 보고하는 단계를 포함하고, 동적인 데이터는 서브젝트 트랜젝션의 인보크된 컴포넌트들의 시작 및 종료 포인트들을 나타내는 매칭하는 브랜치 내의 노드들에 인덱스되며, 그리고 동적인 데이터는 방법에 전달(pass)되는 파라미터의 값을 포함한다.
일 예에서, 트리 데이터 구조는, 각각의 트랜젝션들 동안 어플리케이션 내의 인보크된 컴포넌트들의 각각의 시퀀스들을 트레이싱함으로써 얻어진다.
일 예에서는, 다른 서브젝트 트랜젝션 동안, 어플리케이션 내의 인보크된 컴포넌트들의 다른 시퀀스를 식별하기 위해 에이전트를 이용하고; 인보크된 컴포넌트들의 다른 시퀀스가 트리 데이터 구조 내에서 표현되는 지를 판단하며; 그리고 인보크된 컴포넌트들이 다른 시퀀스가 트리 데이터 구조 내에서 표현되지 않는 경우, 서브젝트 트랜젝션의 인보크된 컴포넌트들의 다른 시퀀스를 나타내기 위해 트리 데이터 구조를 업데이트하는 것을 포함하며, 상기 업데이트하는 것은, (i) 다른 서브젝트 트랜젝션의 인보크된 컴포넌트들 중 하나 이상의 시작 및 종료 포인트들을 나타내는 노드들을 제공하고; (ii) 다른 서브젝트 트랜젝션의 인보크된 컴포넌트들 중 하나 이상과 관련된 정적인 데이터를 노드들에 인덱스시키는 것을 포함한다.
일 예에서, 에이전트는, 어느 관리자가 해당하는 트리 데이터 구조를 업데이트시키냐에 응답하여, 관리자에게 트리 데이터 구조의 업데이팅을 보고한다.
다른 실시예는 컴퓨터 시스템을 포함하는 바, 이러한 컴퓨터 시스템은: 소ㅍ트웨어 명령들을 저장하는 저장 디바이스; 워킹 메모리(working memory) ―소프트웨어 명령들은 저장 디바이스로부터 워킹 메모리 내에 로드됨―; 및 소프트웨어 명령들을 실행시키기 위한 프로세서를 포함하며, 상기 소프트웨어 명령들은, 실행될 때, 각각의 브랜치들을 포함하는 트리 데이터 구조를 유지하고 ―각각의 각 브랜치는 각각의 트랜젝션 동안 어플리케이션 내의 인보크된 컴포넌트들의 각각의 시퀀스를 나타냄―; 서브젝트 트랜젝션 동안, 어플리케이션 내의 인보크된 컴포넌트들의 시퀀스, 및 서브젝트 트랜젝션의 인보크된 컴포넌트들 각각의 시작 및 종료 포인트들의 시간들을 식별하기 위해 에이전트를 이용하고; 각각의 브랜치들 중 하나를 서브젝트 트랜젝션의 인보크된 컴포넌트들의 시퀀스에 대한 매칭하는 브랜치로서 식별하며; 그리고 이러한 식별에 응답하여, 시작 및 종료 포인트들의 시작들 및 매칭하는 브랜치의 식별자를 에이전트로부터 관리자에게 보고한다.
다른 실시예는 어플리케이션을 관리하기 위한 컴퓨터에 의해 구현되는 방법을 포함하는 바, 이 방법은 관리자의 트리 데이터 구조를 유지하는 단계 ―관리자의 트리 데이터 구조는 각각의 브랜치들을 포함하고, 각각의 각 브랜치는 각각의 트랜젝션 동안 어플리케이션 내의 인보크된 컴포넌트들의 각각의 시퀀스를 나타내고, 인보크된 컴포넌트들의 각각의 각 시퀀스는, 각각의 각 브랜치 내에서, 인보크된 컴포넌트들의 각각의 시퀀스의 인보크된 컴포넌트들의 시작 및 종료 포인트들을 나타내는 노드들의 각각의 시퀀스에 의해 표현되고―; 관리자에서, 어플리케이션의 하나의 인스턴스에 대해 인보크된 컴포넌트들의 각각의 시퀀스들 중 하나를 검출하는 에이전트로부터, (i) 인보크된 컴포넌트들의 각각의 시퀀스들 중 하나를 나타내는 각각의 브랜치들 중 하나의 식별자, 및 (ii) 인보크된 컴포넌트들의 각각의 시퀀스의 시퀀스들 중 하나의 인보크된 컴포넌트들의 시작 및 종료 포인트들의 시간들을 포함하는, 인보크된 컴포넌트들의 각각의 시퀀스들 중 하나의 동적인 데이터를 수신하는 단계; 식별자에 응답하여, 인보크된 컴포넌트들의 각각의 시퀀스들 중 하나와 관련된 정적인 데이터를 룩업(look up)하기 위해 관리자의 트리 데이터 구조를 이용하는 단계; 및 트랜젝션 트레이스를 도시하는 유저 인터페이스를 제공하는 단계 ―상기 트랜젝션 트레이스는 인보크된 컴포넌트들의 각각의 시퀀스들 중 하나의 인보크된 컴포넌트들의 시작 및 종료 포인트들의 시간들을 도시하며, 상기 트랜젝션 트레이스는 정적인 데이터에 기초하여 주석이 달려짐(annotated)―를 포함한다.
일 예에서, 에이전트는, 관리자의 트리 데이터 구조에 적어도 부분적으로 해당하는 트리 데이터 구조를 유지하며; 그리고 상기 수행되는 방법은, 에이전트로부터, 에이전트의 트리 데이터 구조에 대한 업데이트에 관한 정보를 수신하는 단계 ―에이전트의 트리 데이터 구조는 관리자의 트리 데이터 구조에 적어도 부분적으로 해당함―; 및 업데이트에 관한 정보에 응답하여, 관리자의 트리 데이터 구조를 업데이트시키는 단계를 더 포함한다.
일 예에서, 적어도 하나의 다른 에이전트가 어플리케이션의 다른 인스턴스에 대해 인보크된 컴포넌트들의 각각의 시퀀스를 검출하고; 이러한 다른 에이전트는 트리 데이터 구조를 유지하고, 이러한 다른 에이전트의 트리 데이터 구조는 상기 에이전트의 트리 데이터 구조에 적어도 부분적으로 해당하며; 그리고
상기 방법은, 트리 데이터 구조의 다른 인스턴스를 업데이트하는 데에 이용하기 위해 다른 에이전트에 업데이트에 관한 정보를 전달하는 단계를 더 포함한다.
일 예에서, 업데이트에 관한 정보는, 업데이트와 관련된 인보크된 컴포넌트들 중 하나 또는 그 이상의 시작 및 종료 포인트들을 나타내는 노드들을 식별한다.
일 예에서, 상기 업데이트시키는 단계는, 업데이트와 관련된 인보크된 컴포넌트들 중 하나 또는 그 이상의 시작 및 종료 포인트들을 나타내는 노드들에 대해 정적인 데이터를 인덱스시키는 단계를 포함한다.
상기 본 발명의 상세한 설명은 예시와 설명의 목적을 위해 제공되었다. 이러한 설명은 본 발명을 속속들이 규명한 것으로서, 또는 본 발명을 개시된 정확한 형태로 한정하는 것으로서 의도되지 않는다. 상기 교시에 비추어 많은 수정들 및 변형들이 가능하다. 설명된 실시예들은 본 발명의 사상과 실제적인 응용예를 최상으로 설명함으로써, 당업자가 다양한 실시예들에서 그리고 고려되는 특정의 용도에 적합한 다양한 변형들에 대해 본 발명을 최상으로 이용할 수 있도록 선택된 것이 다. 본 발명의 범위는 첨부된 청구범위에 의해서만 규정된다.
Claims (20)
- 컴퓨터에 의해 구현되는 어플리케이션 모니터링 방법으로서,
각각의 브랜치들(agt1-branch1 ~ agt1-branch6, agt2-branch1, agt2-branch2)를 포함하는 트리 데이터 구조를 제공하는 단계와, 여기서 상기 각각의 브랜치들은 상기 어플리케이션의 각각의 트랜젝션들(transactions)을 나타냄과 아울러, 상기 각각의 트랜젝션들의 컴포넌트들(components)의 시작 및 종료 포인트들을 나타내는 노드 (702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 734, 736, 738, 740)를 포함하며, 상기 각각의 브랜치들 중 하나의 브랜치(agt1-branch1)는 상기 각각의 트랜젝션들 중 하나의 트랜젝션을 나타내고, 제 1 수집기(1200)에 링크되는 하나의 컴포넌트를 위한 노드(706)를 포함하며, 상기 하나의 브랜치에 있는 상기 하나의 컴포넌트를 위한 노드는 상기 하나의 트랜젝션에서 상기 하나의 컴포넌트의 하나의 인보케이션(invocation)의 시작(704)과 종료(706) 중 적어도 하나를 나타내며;
인보크된(invoked) 컴포넌트들의 하나의 시퀀스를 검출하기 위해 상기 어플리케이션을 트레이싱(tracing)하는 단계와, 상기 트레이싱은 상기 하나의 트랜젝션에서 상기 하나의 컴포넌트의 상기 하나의 인보케이션의 시작과 종료 중 적어도 하나를 검출하는 것을 포함하며;
상기 트레이싱이 상기 하나의 트랜젝션에서 상기 하나의 컴포넌트의 상기 하나의 인보케이션의 시작과 종료 중 적어도 하나를 검출할 때, 상기 제 1 수집기의 콘텍스트(context)에 있는 상기 하나의 컴포넌트의 메트릭을 수집하기 위해 상기 제 1 수집기를 이용하는 단계와;
인보크된 컴포넌트들의 상기 하나의 시퀀스가 상기 하나의 브랜치와 부합함을 판단하기 위해 상기 트레이싱의 결과를 상기 트리 데이터 구조와 비교하는 단계와; 그리고
상기 판단에 응답하여, 상기 제 1 수집기의 콘텍스트에 있는 상기 하나의 컴포넌트를 위한 메트릭(metric)을 관리자에게 보고하는 단계를 포함하는 것을 특징으로 하는 어플리케이션 모니터링 방법. - 제 1항에 있어서,
상기 트리 데이터 구조의 상기 각각의 브랜치들 중 또 다른 브랜치는 상기 각각의 트랜젝션들 중 또 다른 트랜젝션을 나타내고, 제 2의 수집기에 링크되는 상기 하나의 컴포넌트를 위한 노드를 포함하며, 상기 또 다른 브랜치에 있는 상기 하나의 컴포넌트를 위한 노드는 상기 또 다른 트랜젝션에서 상기 하나의 컴포넌트의 하나의 인보케이션의 시작과 종료 중 적어도 하나를 나타내며,
상기 방법은:
인보크된 컴포넌트들의 또 다른 시퀀스를 검출하기 위해 상기 어플리케이션을 추가적으로 트레이싱하는 단계와, 상기 추가적인 트레이싱은 상기 또 다른 트랜젝션에서 상기 하나의 컴포넌트의 상기 하나의 인보케이션의 시작과 종료중 적어도 하나를 검출하는 것을 포함하며;
상기 제 2 수집기의 콘텍스트에 있는 상기 하나의 컴포넌트의 메트릭을 수집하기 위해, 상기 제 1 수집기가 아닌 상기 제 2 수집기를 이용하는 단계와;
인보크된 컴포넌트들의 상기 또 다른 시퀀스가 상기 또 다른 브랜치와 부합함을 판단하기 위해 상기 추가적인 트레이싱의 결과를 상기 트리 데이터 구조와 비교하는 단계와; 그리고
인보크된 컴포넌트들의 상기 또 다른 시퀀스가 상기 또 다른 브랜치와 부합함이 판단됨에 응답하여, 상기 제2 수집기의 콘텍스트에 있는 상기 하나의 컴포넌트를 위한 메트릭을 상기 관리자에게 보고하는 단계를 더 포함하는 것을 특징으로하는 어플리케이션 모니터링 방법. - 제 2항에 있어서
상기 하나의 브랜치의 노드는 상기 제 2 수집기에 링크되지 않고, 이에 따라 상기 하나의 트랜젝션에서 상기 하나의 컴포넌트의 상기 메트릭이 상기 제 2 수집기의 콘텍스트에 링크되지 않으며; 그리고
상기 또 다른 브랜치의 노드는 상기 제 1 수집기에 링크되지 않고, 이에딸따라 상기 또 다른 트랜젝션에서 상기 하나의 컴포넌트를 위한 메트릭이 상기 제 1 수집기의 콘텍스트에 링크되지 않는 것을 특징으로 하는 어플리케이션 모니터링 방법. - 제 1 내지 3항 중 어느 한 항에 있어서,
상기 메트릭은 상기 하나의 브랜치의 식별자와 함께 상기 관리자에 보고되며, 그럼으로써 상기 메트릭이 상기 하나의 트랜젝션에 링크되는 것을 특징으로 하는 어플리케이션 모니터링 방법. - 제 1 내지 4항 중 어느 한 항에 있어서,
인보크된 컴포넌트들의 상기 하나의 시퀀스가 상기 하나의 브랜치와 부합함을 판단하는 것은 상기 하나의 브랜치를 인보크된 컴포넌트들의 시퀀스를 위한 매칭 브랜치로서 확인하는 것을 포함하는 것을 특징으로 하는 어플리케이션 모니터링 방법. - 제 1 내지 5항 중 어느 한 항에 있어서,
인보크된 컴포넌트들의 상기 하나의 시퀀스가 상기 하나의 브랜치와 부합함을 판단하는 것은 상기 하나의 인보케이션이 상기 하나의 브랜치와 관계하는 특정의 엔트리 포인트를 통해 만들어졌음을 판단하는 것을 포함하는 것을 특징으로 하는 어플리케이션 모니터링 방법. - 제 1 내지 6항 중 어느 한 항에 있어서,
상기 제 1 수집기는 상기 트레이싱, 비교, 사용 및 보고 단계를 수행하는 에이전트의 일부인 것을 특징으로 하는 어플리케이션 모니터링 방법. - 제 1 내지 7항 중 어느 한 항에 있어서,
상기 메트릭은 상기 제 1 수집기의 콘텍스트에 있는 상기 하나의 컴포넌트의 에러 카운트, 상기 제 1 수집기의 콘텍스트에 있는 상기 하나의 컴포넌트의 인보케이션들의 카운트 및 상기 제 1 수집기의 콘텍스트에 있는 상기 하나의 컴포넌트의 인보케이션들에 대한 평균 응답 시간 중 적어도 하나를 포함하는 것을 특징으로 하는 어플리케이션 모니터링 방법. - 제 1 내지 8항 중 어느 한 항에 있어서,
상기 트리 테이터 구조의 각각의 브랜치들 중 또 다른 브랜치가 상기 각각의 트랜젝션들 중 또 다른 트랜젝션을 나타내고, 상기 제 1 수집기에 링크되는 상기 하나의 컴포넌트를 위한 노드를 포함하며, 상기 또 다른 브랜치에 있는 상기 하나의 컴포넌트를 위한 노드는 상기 또 다른 트랜젝션에서 상기 하나의 컴포넌트의 하나의 인보케이션의 시작과 종료 중 적어도 하나를 나타내며,
상기 방법은:
인보크된 컴포넌트들의 또 다른 시퀀스를 검출하기 위해 상기 어플리케이션을 추가적으로 트레이싱하는 단계와, 상기 추가적인 트레이싱 단계는 상기 또 다른 트랜젝션에서 상기 하나의 컴포넌트의 상기 하나의 인보케이션의 시작과 종료 중 적어도 하나를 검출하는 것을 포함하며;
상기 트레이싱이 상기 또 다른 트랜젝션에서 상기 하나의 컴포넌트의 상기 하나의 인보케이션의 시작과 종료 중 적어도 하나를 검출할 때, 상기 제 1 수집기의 콘텍스트에 있는 상기 하나의 컴포넌트들의 메트릭을 수집하기 위해 상기 제 1 수집기를 이용하는 단계와;
인보크된 컴포넌트들의 상기 또 다른 시퀀스가 상기 또 다른 브랜치와 부합함을 판단하기 위해 상기 추가적인 트레이싱의 결과를 상기 트리 데이터 구조와 비교하는 단계를 포함하며,
상기 보고는 인보크된 컴포넌트들의 상기 또 다른 시퀀스가 상기 또 다른 브랜치와 부합한다는 판단에 응답하여 이루어지며,
상기 메트릭은 상기 하나의 트랜젝션 및 상기 또 다른 트랜젝션에서 상기 하나의 컴포넌트의 동시적인 인보케이션들의 카운트를 제공하는 것을 특징으로 하는 어플리케이션 모니터링 방법. - 제 1 내지 9항 중 어느 한 항에 있어서,
상기 하나의 브랜치에 있는 상기 하나의 컴포넌트를 위한 노드는 상기 하나의 트랜젝션에서 상기 하나의 컴포넌트의 상기 또 다른 인보케이션의 시작과 종료중 적어도 하나를 나타내며;
상기 트레이싱은 상기 하나의 트랜젝션에서 상기 하나의 컴포넌트의 상기 또 다른 인보케이션의 시작과 종료 중 적어도 하나를 검출하는 것을 포함하며; 그리고
상기 사용은 상기 트레이싱이 상기 하나의 컴포넌트의 상기 또 다른 인보케이션의 시작 및 종료중 적어도 하나를 검출할 때, 상기 제 1 수집기의 콘텍스트에 있는 상기 하나의 컴포넌트의 메트릭을 수집하기 위해 상기 제 1 수집기를 이용하는 것을 포함하는 것을 특징으로 하는 어플리케이션 모니터링 방법. - 컴퓨터 시스템으로서,
소프트웨어 명령들을 저장하는 스토리지 디바이스와;
작업 메모리와, 상기 소프트웨어 명령들은 상기 스토리지 디바이스로부터 상기 작업 메모리에 적재되며; 그리고
상기 소프트웨어 명령들을 실행하는 프로세서를 포함하여 구성되며,
상기 소프트웨어 명령들은 실행시:
상기 어플리케이션의 각각의 트랜젝션들을 나타내고, 상기 각각의 트랙젝션들의 컴포넌트들의 시작과 종료를 나타내는 노드들을 포함하는 각각의 브랜치들을 포함하는 트리 데이터 구조를 제공하는 단계와, 상기 각각의 브랜치들중 하나의 브랜치는 상기 각각의 트랜젝션들 중 하나의 트랜젝션을 나타내고, 제 1 수집기에 링크되는 하나의 컴포넌트를 위한 상기 노드를 포함하며, 상기 하나의 브랜치에 있는 상기 하나의 컴포넌트를 위한 노드는 상기 하나의 트랜젝션에서 상기 하나의 컴포넌트의 하나의 인보케이션의 시작과 종료 중 적어도 하나를 나타내며;
인보크된 컴포넌트들의 하나의 시퀀스를 검출하기 위해 상기 어플리케이션을 트레이싱하는 단계와, 상기 트레이싱은 상기 하나의 트랜젝션에서 상기 하나의 컴포넌트의 상기 하나의 인보케이션의 시작과 종료 중 적어도 하나를 검출하며;
상기 트레이싱이 상기 하나의 트랜젝션에서 상기 하나의 컴포넌트의 상기 하나의 인보케이션의 시작과 종료중 적어도 하나를 검출할 때, 상기 제 1 수집기의 콘텍스트에 있는 상기 하나의 컴포넌트의 메트릭을 수집하기 위해 상기 제 1 수집기를 이용하는 단계와;
인보크된 컴포넌트들의 상기 하나의 시퀀스가 상기 하나의 브랜치와 부합함을 판단하기 위해 상기 트레이싱의 결과를 상기 트리 데이터 구조와 비교하는 단계와; 그리고
상기 판단에 응답하여, 상기 제 1 수집기의 콘텍스트에 있는 상기 하나의 컴포넌트를 위한 메트릭을 관리자에게 보고하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템. - 제 11항에 있어서,
상기 트리 데이터 구조의 각각의 브랜치들 중 또 다른 브랜치는 상기 각각의 트랜젝션들중 또 다른 트랜젝션을 나타내고, 상기 제 1 수집기에 링크되는 상기 하나의 컴포넌트를 위한 노드를 포함하며, 상기 또 다른 브랜치에 있는 상기 하나의 컴포넌트를 위한 노드는 상기 또 다른 트랜젝션에서 상기 하나의 컴포넌트의 하나의 인보케이션의 시작과 종료 중 적어도 하나를 나타내며,
상기 소프트웨어 명령들은 실행시:
인보크된 컴포넌트들의 또 다른 시퀀스를 검출하기 위해 상기 어플리케이션의 추가적인 트레이싱을 수행하는 단계와, 상기 추가적인 트레이싱은 상기 또 다른 트랜젝션에서 상기 하나의 컴포넌트의 상기 하나의 인보케이션의 시작과 종료중 적어도 하나를 검출하는 것을 포함하며;
상기 추가적인 트레이싱이 상기 또 다른 트랜젝션에서 상기 하나의 컴포넌트의 상기 하나의 인보케이션의 시작과 종료 중 적어도 하나를 검출할 때, 상기 제 1 수집기의 콘텍스트에 있는 상기 하나의 컴포넌트들의 메트릭을 수집하기 위해 상기 제 1 수집기를 이용하는 단계와;
인보크된 컴포넌트들의 상기 또 다른 시퀀스가 상기 또 다른 브랜치와 부합함을 판단하기 위해 상기 추가적인 트레이싱의 결과를 상기 트리 데이터 구조와 비교하는 단계를 포함하며,
상기 보고는 인보크된 컴포넌트들의 상기 또 다른 시퀀스가 상기 또 다른 브랜치와 부합한다는 판단에 응답하여 이루어지며,
상기 메트릭은 상기 하나의 트랜젝션 및 상기 또 다른 트랜젝션에서 상기 하나의 컴포넌트의 동시적인 인보케이션들의 카운트를 제공하는 것을 특징으로 하는 컴퓨터 시스템. - 제 11 또는 12항에 있어서,
상기 메트릭은 상기 하나의 브랜치의 식별자와 함께 상기 관리자에 보고되며, 그럼으로써 상기 메트릭이 상기 하나의 트랜젝션에 링크되는 것을 특징으로 하는 컴퓨터 시스템. - 제 11 내지 13항 중 어느 한 항에 있어서,
인보크된 컴포넌트들의 상기 하나의 시퀀스가 상기 하나의 브랜치와 부합한다는 판단은 상기 하나의 브랜치를 인보크된 컴포넌트들의 시퀀스를 위한 매칭 브랜치로서 확인하는 것을 포함하는 것을 특징으로 하는 컴퓨터 시스템. - 제 11 내지 14항 중 어느 한 항에 있어서,
인보크된 컴포넌트들의 상기 하나의 시퀀스가 상기 하나의 브랜치와 부합한다는 판단은 상기 하나의 인보케이션이 상기 하나의 브랜치와 관계하는 특정의 엔트리 포인트를 통해 만들어졌다는 판단을 포함하는 것을 특징으로 하는 컴퓨터 시스템. - 컴퓨터에 의해 구현되는 어플리케이션을 관리하는 방법으로서,
에이젼트로부터, 상기 어플리케이션에서 각각의 트랜젝션들을 트레이싱하는 에이젼트로부터 보고를 수신하는 단계와, 상기 보고는 상기 각각의 트랜젝션들 중 어느 하나의 트랜젝션을 위한 메트릭과 제 1 수집기의 관련 식별을 포함함과 아울러, 상기 각각의 트랜젝션들 중 적어도 또 다른 트랜젝션을 위한 메트릭과 제 2 수집기의 관련 식별을 포함하며, 상기 제 1 수집기는 상기 하나의 트랜젝션에서 컴포넌트 인보케이션들에 응답하여 상기 하나의 트랜젝션을 위한 메트릭을 수집하는 데 이용된 것이며, 상기 제 2 수집기는 상기 적어도 또 다른 트랜젝션에서 컴포넌트 인보케이션들에 응답하여 상기 적어도 또 다른 트랜젝션을 위한 메트릭을 수집하는 데 이용된 것이며; 그리고
상기 보고에 근거하여 유저 인터페이스를 제공하는 단계를 포함하며,
상기 유저 인터페이스는 에지들(edges)에 의해 연결된 버틱스들로 구성된 유향 그래프(directed graph)를 포함하고, 상기 에지들은 상기 하나의 트랜젝션을 나타내는 제 1 에지부와 그리고 상기 적어도 또 다른 트랜젝션을 나타내는 제 2 에지부를 포함하며, 상기 제 1 에지부는 상기 제 2 에지부와 시각적으로 구분되고,
상기 보고는 상기 하나의 트랜젝션에서 식별자 및 상기 적어도 또 다른 트랜젝션들의 식별자를 포함하고, 상기 하나의 트랜젝션에서 식별자는 트리 데이터 구조에 있는 하나의 브랜치의 식별자를 포함하고, 상기 적어도 또 다른 트랜젝션에서 식별자는 상기 트리 데이터 구조에 있는 또 다른 식별자를 포함하며,
상기 트리 데이터 구조는 상기 어플리케이션에 있는 각각의 트랜젝션들를 나타내는 각각의 브랜치들을 포함하고, 상기 유향 그래프는 상기 하나의 브랜치의 식별자에 근거하여 상기 제 1 에지부를 그리고 상기 또 다른 브랜치의 식별자에 근거하여 상기 제 2 에지부를 도시하는 것을 특징으로 하는 어플리케이션 관리 방법. - 제 16항에 있어서,
상기 보고는 상기 하나의 트랜젝션에서 식별자 및 상기 적어도 또 다른 트랜젝션에서 식별자를 포함하고, 상기 하나의 트랜젝션에서 식별자는 트리 데이터 구조에 있는 하나의 식별자를 포함하고, 상기 적어도 또 다른 트랜젝션에서 식별자는 트리 데이터 구조에 있는 또 다른 식별자를 포함하며, 상기 트리 데이터 구조는 상기 어플리케에션에 있는 각각의 트랜젝션들을 나타내고, 상기 유향 그래프는 상기 하나의 브랜치의 식별자에 근거하여 상기 제 1 에지부를 그리고 상기 또 다른 브랜치의 식별자에 근거하여 상기 제 2 에지부를 도시하는 것을 특징으로 하는 어플리케이션 관리 방법. - 제 17항에 있어서,
상기 제 1 에지부는 상기 하나의 트랜젝션을 위한 메트릭으로 장식(decoration)되고, 상기 제 2 에지부는 상기 적어도 또 다른 트랜젝션을 위한 메트릭으로 장식되는 것을 특징으로 하는 어플리케이션 관리 방법. - 제 16 내지 18항 중 어느 한 항에 있어서,
상기 하나의 트랜젝션에서 컴포넌트 인보케이션들과 상기 적어도 또 다른 트랜젝션에서 컴포넌트 인보케이션들은 동일 컴포넌트의 서로 다른 인스턴스들(instances)을 위한 것으로 되어, 상기 하나의 트랜젝션을 위한 메트릭은 상기 하나의 트랜젝션을 위한 트랜젝션-분리(transaction-segregated) 메트릭을 포함하며, 상기 적어도 또 다른 트랜젝션을 위한 메트릭은 적어도 또 다른 트랜젝션을 위한 트랜젝션-분리 메트릭을 포함하는 것을 특징으로 하는 어플리케이션 관리 방법. - 제 16 내지 19 항중 어느 한 항에 있어서,
상기 제 1 에지부는, 상기 하낭의 트랜젝션에 기인할 수 있는 동일 컴포너트의 인보케이션들의 수 대(對) 상기 적어도 또 다른 트랜젝션에 기인할 수 있는 동일 컴포넌트의 인보케이션들의 수를 표시하기 위해, 시각적으로 상기 제 2 에지부와 구분되는 것을 특징으로 하는 어플리케이션 관리 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/211,143 US8688729B2 (en) | 2011-08-16 | 2011-08-16 | Efficiently collecting transaction-separated metrics in a distributed enviroment |
US13/211,143 | 2011-08-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130019366A true KR20130019366A (ko) | 2013-02-26 |
KR101797185B1 KR101797185B1 (ko) | 2017-12-12 |
Family
ID=46875660
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120089770A KR101797185B1 (ko) | 2011-08-16 | 2012-08-16 | 분산 환경에서 효율적으로 트랜젝션-분리 메트릭들을 수집하는 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8688729B2 (ko) |
EP (1) | EP2560099A1 (ko) |
JP (1) | JP5886712B2 (ko) |
KR (1) | KR101797185B1 (ko) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8774530B1 (en) * | 2010-12-22 | 2014-07-08 | Emc Corporation | Automated diagnostic analysis of image data |
US8782614B2 (en) | 2011-04-08 | 2014-07-15 | Ca, Inc. | Visualization of JVM and cross-JVM call stacks |
FR3003664A1 (fr) * | 2013-03-21 | 2014-09-26 | France Telecom | Qualite de service offert par un serveur web |
US20130282545A1 (en) * | 2013-04-20 | 2013-10-24 | Concurix Corporation | Marketplace for Monitoring Services |
US11829350B2 (en) * | 2014-07-28 | 2023-11-28 | Micro Focus Llc | Detection of abnormal transaction loops |
US9805051B2 (en) * | 2014-09-10 | 2017-10-31 | Salesforce.Com, Inc. | Synchronization and strategic storage of multiple versions of a file |
US9779004B2 (en) * | 2015-03-23 | 2017-10-03 | Netapp, Inc. | Methods and systems for real-time activity tracing in a storage environment |
US10503781B2 (en) * | 2015-04-14 | 2019-12-10 | Sap Se | Extending graph traversals with application logic |
CN110300958B (zh) * | 2017-01-13 | 2023-04-18 | 甲骨文国际公司 | 用于分布式事务中间件环境中的条件调用路径监视的系统和方法 |
US9996324B1 (en) * | 2017-01-17 | 2018-06-12 | International Business Machines Corporation | Cooperative creation of dataflow models using sparse random instrumentation |
CN107330034B (zh) * | 2017-06-26 | 2020-08-07 | 百度在线网络技术(北京)有限公司 | 一种日志分析方法和装置、计算机设备、存储介质 |
US10713287B1 (en) * | 2018-04-06 | 2020-07-14 | Express Scripts Strategic Development, Inc. | Computerized method and apparatus for automated distributed ingest and presentation of multi-domain metrics |
US10846192B2 (en) * | 2018-10-31 | 2020-11-24 | Cisco Technology, Inc. | Transaction-based event tracking mechanism |
JP7372572B2 (ja) * | 2020-02-19 | 2023-11-01 | 日本電信電話株式会社 | サービスグラフ生成装置、サービスグラフ生成方法、およびプログラム |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001060163A (ja) * | 1999-08-24 | 2001-03-06 | Nec Corp | トランザクションログ情報の処理装置 |
US6823355B1 (en) | 2000-05-31 | 2004-11-23 | International Business Machines Corporation | Synchronous replication of transactions in a distributed system |
EP1410228B1 (en) | 2001-06-22 | 2016-03-23 | Wonderware Corporation | Remotely monitoring / diagnosing distributed components of a supervisory process control and manufacturing information application from a central location |
US20030174165A1 (en) | 2002-03-18 | 2003-09-18 | Barney Rock D. | System and method for rendering a directed graph |
US7246144B2 (en) | 2002-03-25 | 2007-07-17 | Data Quality Solutions | Method and system for managing a plurality of enterprise business systems |
US7870431B2 (en) * | 2002-10-18 | 2011-01-11 | Computer Associates Think, Inc. | Transaction tracer |
US7293259B1 (en) * | 2003-09-02 | 2007-11-06 | Sun Microsystems, Inc. | Dynamically configuring selected methods for instrument-based profiling at application run-time |
US20050222689A1 (en) | 2004-03-30 | 2005-10-06 | Tonic Solutions, Inc. | Method of determining performance of an application server environment relating to a transaction |
JP2006157313A (ja) * | 2004-11-26 | 2006-06-15 | Nec Corp | 経路作成システム、経路作成装置及び経路作成プログラム |
JP3945521B2 (ja) * | 2005-06-13 | 2007-07-18 | 株式会社日立製作所 | 分散処理システム及びその性能モニタリング方法 |
US7949673B2 (en) | 2005-12-15 | 2011-05-24 | Computer Associates Think, Inc. | Correlating cross process and cross thread execution flows in an application manager |
US8316354B2 (en) | 2005-12-15 | 2012-11-20 | Ca, Inc. | Execution flow shape compression for aggregate data reporting in an application manager |
US8341605B2 (en) | 2005-12-15 | 2012-12-25 | Ca, Inc. | Use of execution flow shape to allow aggregate data reporting with full context in an application manager |
US7805510B2 (en) * | 2006-05-11 | 2010-09-28 | Computer Associates Think, Inc. | Hierarchy for characterizing interactions with an application |
US7818418B2 (en) | 2007-03-20 | 2010-10-19 | Computer Associates Think, Inc. | Automatic root cause analysis of performance problems using auto-baselining on aggregated performance metrics |
JP2010117757A (ja) * | 2008-11-11 | 2010-05-27 | Nomura Research Institute Ltd | 性能監視システムおよび性能監視方法 |
US8327377B2 (en) | 2009-04-30 | 2012-12-04 | Ca, Inc. | Detecting, logging and tracking component dependencies in web service transactions |
-
2011
- 2011-08-16 US US13/211,143 patent/US8688729B2/en active Active
-
2012
- 2012-08-15 EP EP12180548A patent/EP2560099A1/en not_active Ceased
- 2012-08-15 JP JP2012180251A patent/JP5886712B2/ja not_active Expired - Fee Related
- 2012-08-16 KR KR1020120089770A patent/KR101797185B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
US20130046779A1 (en) | 2013-02-21 |
JP2013050950A (ja) | 2013-03-14 |
KR101797185B1 (ko) | 2017-12-12 |
JP5886712B2 (ja) | 2016-03-16 |
US8688729B2 (en) | 2014-04-01 |
EP2560099A1 (en) | 2013-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101797185B1 (ko) | 분산 환경에서 효율적으로 트랜젝션-분리 메트릭들을 수집하는 방법 | |
US8812434B2 (en) | Data structure for efficiently identifying transactions | |
US12003572B1 (en) | Two-way replication of search node configuration files using a mediator node | |
US10031815B2 (en) | Tracking health status in software components | |
US8782614B2 (en) | Visualization of JVM and cross-JVM call stacks | |
KR101791623B1 (ko) | 트랜잭션 트레이스 그래프와 논리적 서브시스템들의 맵 사이의 관계들을 시각화하는 방법 | |
EP2508995B1 (en) | Visualizing transaction traces as flows through a map of logical subsystems | |
US9202185B2 (en) | Transaction model with structural and behavioral description of complex transactions | |
US8826242B2 (en) | Data driven profiling for distributed applications | |
US20130047169A1 (en) | Efficient Data Structure To Gather And Distribute Transaction Events | |
US8516110B2 (en) | Automated availability data collection and reporting for system management environments | |
US10706108B2 (en) | Field name recommendation | |
US10644971B2 (en) | Graph search in structured query language style query | |
US20170285923A1 (en) | Multi-perspective application components dependencies |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |