KR20110129926A - 분산 애플리케이션들을 모니터링 하는 방법 - Google Patents

분산 애플리케이션들을 모니터링 하는 방법 Download PDF

Info

Publication number
KR20110129926A
KR20110129926A KR1020117022325A KR20117022325A KR20110129926A KR 20110129926 A KR20110129926 A KR 20110129926A KR 1020117022325 A KR1020117022325 A KR 1020117022325A KR 20117022325 A KR20117022325 A KR 20117022325A KR 20110129926 A KR20110129926 A KR 20110129926A
Authority
KR
South Korea
Prior art keywords
work item
interceptor
technology
distributed application
manager
Prior art date
Application number
KR1020117022325A
Other languages
English (en)
Other versions
KR101683321B1 (ko
Inventor
알렉산드레 에이 코엘호
에쉬빈쿠마르 제이 상비
드하난자이 엠 마하잔
라지브 수드하카르
아난드하 케이 가네산
벤카타 세슈 쿠마르 쿠라파티
일라리에 지 렛카
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20110129926A publication Critical patent/KR20110129926A/ko
Application granted granted Critical
Publication of KR101683321B1 publication Critical patent/KR101683321B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0748Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a remote unit communicating with a single-box computer node experiencing an error/fault
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3404Recording 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 parallel or distributed programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3409Recording 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/3433Recording 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 for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/875Monitoring of systems including the internet
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/542Intercept

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)

Abstract

분산 애플리케이션을 모니터링 하는 방법들, 시스템, 그리고 컴퓨터 판독 가능 매체들이 개시된다. 특정 방법은 분산 애플리케이션의 복수의 요소들을 식별한다. 방법은 또한 특정 요소와 결부된 특정 기술을 식별하고, 식별된 특정 기술을 기초로 기술 특정적 인터셉터를 특정 요소에 부가한다. 방법은 기술 특정적 인터셉터를 사용하여 특정 요소에 의해 송수신 된 메시지들을 가로채는 단계를 포함한다. 가로챈 메시지들을 기초로 적어도 하나의 잠재적 작업 항목이 생성된다. 방법은 분산 애플리케이션의 퍼포먼스에 미치는 적어도 하나의 잠재적 작업 항목의 예상되는 임팩트에 기초하여 적어도 하나의 잠재적 작업 항목의 실행 일정을 잡을지의 여부를 판단하는 단계를 포함한다.

Description

분산 애플리케이션들을 모니터링 하는 방법{MONITORING OF DISTRIBUTED APPLICATIONS}
소프트웨어 애플리케이션들은 그들이 다양한 물리적 요소들 사이에 분산되어 있는 경우에 모니터하기 어려울 수 있다. 더 나아가, 개개의 요소들은 도구화(instrumented)되지 않을 수도 있고, 다른 요소들이 각기 다른 기업 작업들 팀(enterprise operation teams)의 권한 밑에 있을 수 있다. 또한 애플리케이션들은 복수의 기술들을 포함할 수도 있다. 분산된 애플리케이션들이 이질적일 수도 있지만, 분산된 애플리케이션들에 대한 모니터링 시스템(monitoring system)은 주로 기술-특정적(technology-specific)이다(예를 들면 특정 시스템은 자바 애플리케이션 요소는 모니터할 수 있지만, .NET 애플리케이션 요소는 모니터하지 못한다). 추가로, 모니터링 시스템은 모니터 되는 분산 시스템의 퍼포먼스에 부정적인 임팩트를 줄 수 있다. 분산 시스템의 모든 처리(transaction)의 모니터링을 시도하는 과정에서 모니터링 시스템에 의해 상당한 프로세싱과 메모리 오버헤드(overhead)가 발생할 수 있고, 이는 작업을 방해하거나, 또는 분산 시스템의 퍼포먼스에 뚜렷한 임팩트를 줄 수 있다. 이런 퍼포먼스 측면의 임팩트는 실시간, 준 실시간(near real-time), 또는 임무 필수적인(mission-critical) 분산 애플리케이션에 있어서 문제가 될 수 있다.
본 명세서는 분산 애플리케이션을 모니터링 하는 시스템을 개시한다. 데이터베이스, 서버 및 웹 서비스와 같은 다양한 하드웨어 및 소프트웨어 분산 애플리케이션 구성요소의 모니터링이 지원된다. 또한 .NET, Java, WCF(Windows Communications Foundation), 인터넷 정보 서비스(IIS), 윈도우 기반 기술 및 UNIX 기반 기술과 같은 다수의 기술의 모니터링이 지원된다.
모니터링 시스템은 분산 애플리케이션의 구성요소에 의해 전송 및 수신되는 메시지를 가로챌 수 있는 하나 이상의 기술 특정적 인터셉터 및 기술 중립적 인터셉터 관리자를 포함한다. 기술 특정적 인터셉터 각각은 특정 기술에 특정적이고 특정 기술과 연관된 분산 애플리케이션 구성요소에 부착된다(예를 들어, .NET 인터셉터는 .NET 애플리케이션 또는 서비스를 포함하는 분산 애플리케이션 구성요소에 부착된다). 기술 특정적 인터셉터는 특정 기능의 호출을 추적하고, 분산 애플리케이션의 특정 실행 경로를 따라 활동을 추적하며, 또는 분산 애플리케이션에서 발생하는 이벤트(예를 들어, 소프트웨어 익셉션 또는 보고된 에러)를 추적하도록 구성될 수 있다. 기술 특정적 인터셉터는 가로챈 메시지들을 기초로 작업 항목을 생성하고, 이 작업 항목을 기술 중립적인 인터셉터 관리자에 전송한다.
기술 중립적 인터셉터 관리자는 수신된 작업 항목의 실행 일정을 잡을 수 있다. 예를 들어, 기술 중립적 인터셉터 관리자는 분산 애플리케이션의 발견된 의존도를 저장 위치에 저장하고, 활동 정보를 저장 위치에 저장하며, 이벤트의 발생을 IT 관리자 또는 관리 애플리케이션과 같은 클라이언트에 보고한다. 기술 중립적 인터셉터 관리자는 작업 항목 대기열 넣기(work item queuing), 의존도 캐싱, 백그라운드 쓰레딩, 쓰레기 수집 등과 같은 스로틀링 능력들(throttling capabilities)을 포함하여 모니터링 시스템의 성능 임팩트를 줄일 수 있다.
전술한 내용은 개념의 선택을 간단한 형태로 제공하려 한 것이고, 이에 대해 후속하는 상세한 설명에서 더 설명된다. 전술한 내용은 본 발명의 주제의 핵심 또는 필수적인 특징을 나타내려 하는 것은 아니며, 또한 본 발명의 범주를 제한하려는 것도 아니다.
도 1은 분산 애플리케이션을 모니터링 하는 시스템의 특정 실시예의 블록 다이어그램이다.
도 2는 분산 애플리케이션을 모니터링 하는 시스템의 다른 특정 실시예의 블록 다이어그램이다.
도 3은 분산 애플리케이션을 모니터링 하는 시스템과 함께 사용될 수 있는 아이덴티티 모니터의 특정 실시예의 블록 다이어그램이다.
도 4는 분산 애플리케이션을 모니터하기 위한 메시지 인터셉션을 도시하는 블록 다이어그램이다.
도 5는 분산 애플리케이션을 모니터링 하는 방법의 특정 실시예의 플로우 다이어그램이다.
도 6은 분산 애플리케이션을 모니터링 하는 방법의 다른 특정 실시예의 플로우 다이어그램이다.
도 7은 분산 애플리케이션을 모니터링 하는 방법의 특정 실시예의 플로우 다이어그램이다.
도 8은 분산 애플리케이션을 모니터링 하는 방법의 다른 특정 실시예의 플로우 다이어그램이다.
도 9는 분산 애플리케이션을 모니터링 하는 방법의 다른 특정 실시예의 플로우 다이어그램이다.
도 10은 기술 중립적 인터셉터 관리자(technology agnostic interceptor manager)에서 선택적으로 작업 항목 일정을 잡는 방법의 특정 실시예의 플로우 다이어그램이다.
도 11은 분산 컴퓨터 환경의 특정 실시예를 도시하는 일반적인 다이어그램이다.
도 12는 도 1 내지 11에서 도시된 바와 같은 컴퓨터-구현 방법들, 컴퓨터 프로그램 제품들, 그리고 시스템 요소들의 실시예들을 지지하도록 운용되는 컴퓨터 장치를 포함하는 컴퓨터 환경의 블록 다이어그램이다.
특정 실시예에서, 개시된 방법은 분산 애플리케이션의 복수의 요소들을 식별하는 단계 및 복수의 요소들 중 특정 요소와 결부된 특정 기술을 식별하는 단계를 포함한다. 또한, 방법은 식별된 특정 기술에 기반해서 특정 요소에 기술 특정적 인터셉터(technology specific interceptor)를 부가하는 단계와 부가된 기술 특정적 인터셉터를 사용하여 특정 요소에 의해 송수신 된 메시지들을 가로채는 단계를 포함한다. 방법은 더 나아가 가로챈 메시지들에 기반하여 적어도 하나의 잠재적 작업 항목(work item)을 생성하는 단계와 분산된 시스템의 퍼포먼스에 미치는 적어도 하나의 잠재적 작업 항목의 예상된 임팩트(impact)에 기초하여 적어도 하나의 잠재적 작업 항목의 실행 일정을 잡을지 여부를 판단하는 단계를 포함한다. 특정 실시예에서, 적어도 하나의 잠재적 작업 항목은 특정 명령 또는 명령들의 집합에 프로세싱이 필요한지 여부를 판단하는 단계에 대한 응답으로 생성되는 실행가능한 작업 항목이다.
다른 특정 실시예에서, 제시된 시스템은 복수의 기술 특정적 인터셉터들과 기술 중립적 인터셉터 관리자(technology agnostic interceptor manager)를 포함하고, 이들 기술 특정적 인터셉터들은 제 1 기술 특정적 인터셉터와 제 2 기술 특정적 인터셉터를 포함한다. 제 1 기술 특정적 인터셉터는 제 1 기술과 결부되어 있고 제 2 기술 특정적 인터셉터는 제 1 기술과는 다른 제 2 기술과 결부되어 있다. 제 1 기술 특정적 인터셉터는 제 1 기술과 결부된 제 1 분산 애플리케이션 요소의 운용을 추적하도록 설정되어 있고, 이것은 제 1 분산된 애플리케이션 요소에 의해 송수신 된 메시지들을 가로채는 단계를 포함한다. 제 1 기술 특정적 인터셉터는 더 나아가 제 1 분산된 애플리케이션 요소의 추적된 작업에 기반해서 작업 항목을 생성하도록 설정될 수 있고, 작업 항목을 기술 중립적 인터셉터 관리자로 발송하도록 설정된다. 제 2 기술 특정적 인터셉터는 제 2 기술과 결부된 제 2 분산 애플리케이션 요소의 작업을 추적하도록 설정되고, 이것은 제 2 분산된 애플리케이션 요소에 의해 송수신된 메시지들을 가로채는 단계를 포함한다. 제 2 기술 특정적 인터셉터는 더 나아가 제 2 분산 애플리케이션 요소의 추적된 작업에 기반해서 작업 항목들을 생성하고, 작업 항목들을 기술 중립적 인터셉터 관리자에 보내도록 설정된다. 기술 중립적 인터셉터 관리자는 복수의 작업 항목 관리자들을 포함하고, 작업 항목 관리자들은 제 1 기술 특정적 인터셉터와 결부된 제 1 작업 항목 관리자와 제 2 기술 특정적 인터셉터와 결부된 제 2 작업 항목 관리자를 포함한다. 각각의 작업 항목 관리자는 특정 기술 특정적 인터셉터(particular technology specific interceptor)와 결부되고 특정 기술 특정적 인터셉터로부터 작업 항목을 수신하고 작업 항목 대기열 내에 수신된 작업 항목들을 대기시키도록 설정된다. 각각의 작업 항목 관리자는 더 나아가 특정 기술 특정적 인터셉터에 의해 추적된 분산 애플리케이션 요소의 퍼포먼스에 미치는 특정 작업 항목의 임팩트를 허용할 수 있는 퍼포먼스 임팩트 임계값(threshold)과 비교하도록 설정된다. 각각의 작업 항목 관리자는 더 나아가 특정 작업 항목이 임팩트가 허용할 수 있는 퍼포먼스 임계값보다 낮은 경우에는 그 항목의 실행 일정을 잡고, 그 항목의 임팩트가 허용할 수 있는 퍼포먼스 임팩트 임계값보다 큰 경우에는 일정을 잡지 않고 특정 작업 항목의 실행을 중단하도록 설정된다.
다른 특정 실시예에서, 컴퓨터 판독 가능 매체가 제시된다. 컴퓨터 판독 가능 매체는 명령들을 포함하고, 이들 명령들이 컴퓨터에 의해서 실행될 때, 컴퓨터의 기술 중립적 인터셉터 관리자로 하여금 분산 애플리케이션의 제 1 요소에 첨부된 제 1 기술 특정적 인터셉터로부터 제 1 작업 항목을 수신하도록 한다. 제 1 기술 특정적 인터셉터는 제 1 기술에 특정되고, 제 1 요소는 제 1 기술과 결부된다. 컴퓨터 판독 가능 매체는 또한 명령들을 포함하고, 이들 명령들이 컴퓨터에 의해 실행될 때, 컴퓨터의 기술 중립적 인터셉터 관리자로 하여금 분산 애플리케이션의 제 2 요소에 첨부된 제 2 기술 특정적 인터셉터로부터 제 2 작업 항목을 수신하도록 한다. 제 2 기술 특정적 인터셉터는 제 2 기술에 특정되고, 제 2 요소는 제 2 기술과 결부되며, 제 2 기술은 제 1 기술과는 다르다. 컴퓨터 판독 가능 매체는 더 나아가 명령들을 포함하고, 명령들이 컴퓨터에 의해 실행될 때 컴퓨터로 하여금 분산 시스템상의 제 1 작업 항목의 제 1 임팩트와 분산 시스템상의 제 2 작업 항목의 제 2 임팩트에 기초해서 제 1 작업 항목과 제 2 작업 항목의 실행 일정을 잡을지의 여부를 판단하도록 한다.
도 1은 분산 애플리케이션(102)을 모니터링 하는 시스템(100)의 특정 실시예의 블록 다이어그램이다. 분산 애플리케이션(102)은 제 1 컴퓨터 장치(104)에서 WCF(Windows Communication Foundation) 요소(110)와 제 2 컴퓨터 장치(106)에서 .NET 요소(120)와 같은 여러 요소들을 포함한다. 제 1 컴퓨터 장치(104)와 제 2 컴퓨터 장치(106)는 분산되어 있다(예를 들면 독립된 하드웨어를 사용해서 운용하거나 또는 서로 원거리에 위치한다). 분산 애플리케이션(102)은 또한 WCF 요소(110)에 부가된 WCF 인터셉터(112)와 .NET 요소(120)에 부가된 .NET 인터셉터(122) 등과 같이 요소에 부가된 기술 특정적 인터셉터를 포함한다. 분산 애플리케이션(102)의 요소들은 메시지들을 주고 받을 수 있고, 요소들에 부가된 기술 특정적 인터셉터들은 메시지들을 가로챌 수 있다. 기술 특정적 인터셉터는 또한 가로챈 메시지들에 기반해서 작업 항목들을 생성할 수 있고 생성된 작업 항목들을 기술 중립적 인터셉터 관리자(130)에게 보낼 수도 있다.
분산 애플리케이션(102)의 각각의 요소는 분산 애플리케이션(102)의 다른 요소들에게 메시지를 발송하도록 설정될 수 있고, 분산 애플리케이션(102)의 다른 요소들로부터 메시지를 수신하도록 설정될 수 있다. 예를 들면, WCF 요소(110)와.NET 요소(120)는 서로 상대방에게 메시지들을 발송하고 수신하도록 설정될 수 있다. 특정 실시예에서, 메시지들은 XML(extensible markup language) 메시지들이다.
각각의 기술 특정적 인터셉터들은 기술 특정적 인터셉터가 부가된 요소의 특정 함수의 실시를 추적하도록 설정될 수 있다. 예를 들면, WCF 인터셉터(112)는 WCF 요소(110)에 위치하는 특정 함수의 실시를 추적하도록 설정될 수 있다. 특정 실시예에서, 특정 함수는 분산 애플리케이션(102)의 다른 요소들에 위치하는 소스 작업(source operation)과 목표물 작업(target operation)을 포함한다. 예를 들면, 특정 함수는 WCF 요소(110) 상에 소스 작업을 가지고 .NET 요소(120) 상에 목표물 작업을 가질 수 있다. 그리고 나서 WCF 인터셉터(112)는 특정 함수의 실행을 나타내는 메시지를 가로채서 WCF 요소(110) 상의 소스 작업과 .NET 요소(120) 상의 목표물 작업 사이의 의존도를 발견할 수 있다.
각각의 기술 특정적 인터셉터는 또한 분산 애플리케이션(102)의 특정 실행 경로 상의 활동을 모니터하도록 설정될 수 있고, 이것은 기술 특정적 인터셉터가 부가되어 있는 요소를 포함한다. 예를 들면, WCF 인터셉터(112)는 WCF 요소(110)와 .NET 요소(120) 사이의 메시지를 가로채고, 가로챈 메시지가 WCF 요소(110)를 포함하는 특정 실행 경로 상의 활동을 나타낸다는 것을 판단할 수 있다.
각각의 기술 특정적 인터셉터는 또한 분산 애플리케이션(102)에서 발생하는 특정 이벤트들(예를 들면, 소프트웨어 익셉션(exceptions) 또는 보고된 에러)을 추적하도록 설정될 수도 있다. 특정 실시예에서, 특정 이벤트는 특정 기간 동안에 추적된다. 예를 들면, WCF 인터셉터(112)는 WCT 요소(110)에서의 분당 익셉션 빈도를 계산하기 위해서, 일 분 동안에 WCF 요소(110)에서 발생하는 소프트웨어 익셉션(software exception)의 빈도를 추적할 수 있다. 또는, 특정 이벤트는 계속적으로 추적될 수도 있다. 예를 들면, WFC 인터셉터(112)는 WCF 요소(110)와 .NET 요소(120) 사이의 메시지를 가로채고, 가로챈 메시지로부터 WCF 요소(110) 또는 .NET 요소(120) 둘 중 어느 하나에서 소프르웨어 익셉션이 발생했음을 판단할 수 있다.
각각의 기술 특정적 인터셉터는 기술 특정적 인터셉터에서 가로챈 메시지들에 기반해서 작업 항목을 생성하고, 생성된 작업 항목들을 기술 중립적 특정 인터셉터로 발송하도록 설정될 수 있다. 예를 들면, WCF 인터셉터(112)는 WCT 요소(110)의 소스 작업과 .NET 요소(120)의 목표물 작업 사이에서 발견된 의존도를 저장하는 명령들을 포함하는 작업 항목을 생성하고, 작업 항목을 기술 중립적 인터셉터 관리자(13)에 전송할 수 있다. 다른 실시예에서, WCF 인터셉터(112)는 WCF 요소(110)를 포함하는 특정 실행 경로와 관련된 활동 정보(activity information)를 저장하라는 명령을 포함하는 작업 항목을 생성하고, 작업 항목을 기술 중립적 인터셉터 관리자(130)에게 전송할 수 있다. 또 다른 예시에서, WCF 인터셉터(112)는 WCF 요소(110) 또는 .NET 요소(120)에서 소프트웨어 익셉션이 발생했음을 보고하라는 명령을 포함하는 작업 항목을 생성할 수 있고, 작업 항목을 기술 중립적 인터셉터 관리자(130)에게 보낼 수 있다. .NET 인터셉터(122)는 이와 유사하게 작업 항목을 생성할 수 있다. 또는, WCF 인터셉터(112)는 세 가지 작업 모두에 대한 명령들을 포함하는 단일 작업 항목을 생성할 수도 있다.
복수의 인터셉터들이 단일 요소에 부가될 수도 있음에 주의해야한다. 예를 들면 웹서버가 .NET 기술과 WCF 기술 모두를 포함하는 경우에 있어서는, 도 1의 .NET 인터셉터(122)와 같은 .NET 인터셉터와 도 1의 WCF 인터셉터(112)와 같은 WCF 인터셉터는 그 둘 모두가 분산 애플리케이션(102)의 웹서버에 부가될 수 있다.
기술 중립적 인터셉터 관리자(130)는 분산 애플리케이션(102)의 웹 서비스 또는 분산 애플리케이션(102)의 관리자 애플리케이션에 위치할 수 있다. 기술 중립적 인터셉터 관리자(130)는 복수의 작업 항목 관리자들을 포함할 수 있고, 개개의 작업 항목 관리자는 특정 기술 특정적 인터셉터로부터 작업 항목들을 수신하도록 설정되어 있다. 예를 들면, 도 1에 도시된 실시예에서 기술 중립적 인터셉터 관리자는 WCF 인터셉터(112)로부터 작업 항목들을 수신하도록 설정된 WCF 작업 항목 관리자(140)와 .NET 인터셉터(122)로부터 작업 항목들을 수신하도록 설정된 .NET 작업 항목 관리자(150)를 포함한다. 각각의 작업 항목 관리자들은 또한 작업 항목 대기열 내에 작업 항목들을 저장하도록 설정될 수도 있다. 예를 들면, WCF 작업 항목 관리자(142)는 WCF 작업 항목 대기열(142)에 작업 항목들을 저장할 수 있고, .NET 작업 항목 관리자는 .NET 작업 항목 대기열(152)에 작업 항목들을 저장할 수 있다. 특정 실시예에서, 작업 항목들은 기술 중립적 인터셉터 관리자(130)가 작업 항목들을 수신하는 순서대로 작업 항목 대기열 안에 저장된다. 예를 들면, WCF 인터셉터(12)로부터 수신한 제 1 작업 항목은 제 2 작업 항목 보다 먼저 기술 중립적 인터셉터 관리자(130)에 의해 제 1 작업 항목이 수신된 경우에 WCF 작업 항목 대기열(142)에 WCF 인터셉터로부터 수신된 제 2 작업 항목보다 먼저 저장될 수 있다. 각각의 작업 항목 관리자들은 또한 작업 항목 대기열이 다 찬 경우에는 수신된 작업 항목을 중단한다. 예를 들면, WCF 작업 항목 관리자(140)는 WCF 작업 항목 관리자(140)가 WCF 작업 항목 대기열(142)이 꽉 찼다고 판단하는 경우에, 수신된 작업 항목을 중단할 수 있다(예를 들면 WCF 작업 항목 대기열(142)의 크기가 WCF 작업 항목 관리자(140)에게 알려진 최대 작업 항목 대기열 크기 변수와 일치하는 경우).
각각의 작업 항목 관리자들은 실행을 위해서 대기 중인 작업 항목들의 일정을 잡도록 설정되는 작업 항목 일정 로직(scheduling logic)을 포함할 수 있다. 예를 들면, WCF 작업 항목 관리자(140)는 WCF 작업 항목 일정 로직(144)을 포함할 수 있고 .NET 작업 항목 관리자(150)는 .NET 작업 항목 일정 로직(154)을 포함할 수 있다. 특정 실시예에서, WCF 작업 항목 일정 로직(144) 또는 .NET 작업 항목 일정 로직(154)은 특정 작업 항목이 분산 애플리케이션(102)의 퍼포먼스에 미치는 임팩트의 예상치에 기반을 두고 실행할 특정 작업 항목의 일정을 잡을지의 여부를 판단할 수 있다. 예를 들면, WCF 작업 항목 일정 로직(144)은 특정 작업 항목의 임팩트 예상치가 수용가능한 퍼포먼스 임팩트 임계값에 미치지 못할 경우(예를 들면 수용가능한 프로세서 활용 임팩트가 1%, 수용 가능한 메시지 대기 시간 임팩트가 1초, 또는 수용가능한 실행 행렬 길이 임팩트가 세 개의 실행 가능한 작업들)에는 특정 작업 항목의 실행 일정을 잡을 수 있다. 또는, WCF 작업 항목 일정 로직(144)은 WCF 요소(110)에 미치는 특정 작업 항목의 임팩트의 예상치에 기초하여 특정 작업 항목의 실행 일정을 잡을지 여부를 판단할 수 있다.
특정 실시예에서, 기술 특정적 인터셉터들은 작업 항목 관리자들로부터 빈 작업 항목들(empty work items)을 요청하고, 빈 작업 항목들에 정보와 실행 명령들을 저장하는 방식으로 작업 항목들을 생성하도록 설정될 수 있다. 이런 실시예에서, 작업 항목 관리자는 빈 작업 항목에 대한 요청을 거부함으로써 특정 분산 애플리케이션 요소에서의 모니티링의 퍼포먼스 임팩트를 감소시킬 수 있다. 예를 들면, .NET 요소(120)의 의존도를 발견한 후, .NET 인터셉터(122)는 .NET 작업 항목 관리자(150)로부터 빈 직업 항목을 요청할 수 있다. 만약 .NET 작업 항목 관리자(150)가 요청을 받아들여서 빈 작업 항목을 .NET 인터셉터(122)에 전송한다면, .NET 인터셉터(122)는 빈 작업 항목에 발견된 의존도를 저장하는 방식으로 작업 항목을 생성할 수 있고, 생성된 작업 항목을 .NET 작업 항목 관리자(150)로 보낼 수 있다. 특정 실시예에서, 작업 항목들은 만료 기간이 있고 만약 만료 기간 안에 실행을 위한 작업 일정이 잡히지 않는다면 작업 항목 대기열에서 빠지게 된다. 예를 들면, .NET 인터셉터(122)로부터 생성된 작업 항목은 .NET 작업 항목 관리자150)에 의해서 빈 작업 항목들이 생성되고 10초 이내에 일정이 잡히지 않으면 기간 만료로 인해 대기열에서 빠질 수 있다.
특정 실시예에서, 작업 항목 관리자(140)와 작업 항목 관리자(150)와 같은 작업 항목 관리자들은 아래 언급되는 예시적 C# 클래스 템플렛과 인터페이스에 따라 구현될 수도 있다.
public class WorkItemManager<T>
where T : class, IWorkItem, new()
{
public T RequestWorkItem();
public void QueueWorkItem(T workItem);
public void ReturnWorkItem(T workItem);
}
public interface IWorkItem
[
void Initialize();
void Setup();
void Doprocess();
void Cleanup();
}
작업중에, 기술 특정적 인터셉터는 분산 애플리케이션(102)의 요소들에 부가될 수도 있다. 예를 들면, WCF 인터셉터(112)는 WCF 요소(110)에 부가될 수도 있고, .NET 인터셉터(122)는 .NET 요소(120)에 부가될 수도 있다. 각각의 기술 특정적 인터셉터는 분산 애플리케이션(102)에서 함수 호출 실행들, 활동 정보, 퍼포먼 이벤트들, 또는 이들의 어떠한 조합들도 추적하도록 설정될 수 있다. 예를 들면, WCF 인터셉터(112)는 WCF 요소(110)에서 특정 WCF 함수의 실행을 추적하도록 설정될 수 있고, WCF 요소(110)를 포함하는 분산 애플리케이션(102)의 특정 실행 경로에서의 활동 정보(activity information)를 추적하도록 설정될 수 있고, WCF 요소(110)에서 발생하는 소프트웨어 익셉션을 추적하도록 설정될 수 있다. 이와 유사하게, .NET 인터셉터(122)는 .NET 요소의 특정 .NET 함수의 실행을 추적하도록 설정될 수 있고, .NET 요소(120)를 포함하는 분산 애플리케이션(102)의 특정 실행 경로와 관련되는 활동 정보를 추적하도록 설정될 수 있고, .NET 요소(120)에서 발생하는 소프트웨어 익셉션들을 추적하도록 설정될 수 있다.
작업 도중에, 기술 특정적 인터셉터들은 분산 애플리케이션(102)의 다양한 요소들 사이의 하나 이상의 메시지들을 가로챌 수 있고, 하나 이상의 가로챈 메시지들을 기초로 해서 작업 항목들을 생성할 수 있다. 기술 특정적 인터셉터들은 또한 생성된 작업 항목들을 기술 중립적 인터셉터 관리자(130)에게 발송할 수 있다. 예를 들면, WCF 인터셉터(112)는 WCF 요소(110)에 의해 .NET 요소(120)로 보내진 메시지를 가로챌 수 있고, 가로챈 메시지에 기반해서 작업 항목을 생성할 수 있고, 작업 항목을 기술 중립적 인터셉터 관리자(130)에게 보낼 수 있다. 특정 실시예에서, 가로챈 메시지는 WCF 요소(110)의 소스 작업과 .NET 요소(120)의 목표물 작업 사이의 의존도를 나타내고, 작업 항목은 의존도를 저장하는 명령들을 포함한다. 다른 특정 실시예에서, 가로챈 메시지는 WCF 인터셉터가 추적하도록 설정된 분산 애플리케이션(102)의 실행 경로와 관련된 활동 정보(activity information)을 포함하고, 작업 항목은 활동 정보에 대한 저장 명령을 포함한다. 다른 특정 실시예에서, 가로챈 메시지는 WCF 요소(110) 또는 .NET 요소(120)에서 소프트웨어 익셉션이 발생했다는 것을 나타내고, 작업 항목은 소프트웨어 익셉션의 발생을 보고하는 명령들을 포함한다.
기술 중립적 인터셉터 관리자(130)가 기술 특정적 인터셉터로부터 작업 항목을 수신하면, 작업 항목 관리자(예를 들면 WCF 작업 항목 관리자(140) 또는 .NET 작업 항목 관리자(150))는 수신된 작업 항목을 항목 대기열(예를 들면 WCF 작업 항목 대기열(142) 또는 .NET 작업 항목 대기열(152))에 추가할 수 있다.
WCF 작업 항목 대기열(142) 내의 각각의 잠재적 작업 항목에 대하여, WCF 작업 항목 일정 로직(144)은 분산 애플리케이션(102)의 퍼포먼스에 대한 잠재적 작업 항목의 임팩트 예상치에 기반하여 잠재적 작업 항목의 실행 일정을 잡을지의 여부를 판단할 수 있다. 잠재적 작업 항목의 임팩트 예상치가 수용 가능한 퍼포먼스 임팩트 임계값에 미치지 못하는 경우에, WCF 작업 항목 일정 로직(144)은 잠재적 작업 항목의 실행 일정을 잡을 수 있다. 예를 들면, 잠재적 작업 항목은 분산 애플리케이션(102)에서의 메시지 대기 시간에 대한 잠재적 작업 항목의 임팩트 예상치가 1초 미만인 경우에 실행 일정이 잡힐 수 있다. 특정 작업 항목의 임팩트 예상치가 수용 가능한 퍼포먼스 임팩트 임계값을 웃돌 경우에, WCF 작업 항목 일정 로직(144)은 WCF 작업 항목 대기열(142)로부터 잠재적 작업 항목을 뺄 수 있다. 예를 들면, 잠재적 작업 항목은 분산 애플리케이션에서의 메시지 대기 시간에 미치는 잠재적 작업 항목의 예상되는 임팩트가 1초를 초과하는 경우에 빠질 수 있다. 이와 유사하게, .NET 작업 항목 대기열(152) 내의 각각의 잠재적 작업 항목들에 대하여, .NET 작업 항목 일정 로직은 분산 애플리케이션(102)의 퍼포먼스에 미치는 잠재적 작업 항목의 예상되는 임팩트를 기초로 해서 선택적으로 작업 항목의 일정을 잡을 수 있다.
도 1의 시스템(100)은 다양한 요소들 사이에 분산되어 있고 다양한 기술들을 포함하는 분산 애플리케이션을 모니터하기 위해 사용될 수 있다. 더 나아가, 도 1의 시스템(100)은 분산 애플리케이션에 미치는 그와 같은 모니터링의 전반적 퍼포먼스 임팩트를 감소시키기 위해서 스로틀링 능력(throttling capabilities)(예를 들면 빈 작업 항목에 대한 요청들을 거부, 작업 항목 대기열의 크기의 제한, 퍼포먼스에 커다란 임팩트를 가지는 것으로 예상되는 작업 항목들 빼기, 그리고 만기 도과 후 자동으로 작업 항목이 종료되도록 하기)을 포함할 수 있다. 따라서 도 1의 시스템(100)은 퍼포먼스를 위해서 모니터렁의 정확도를 희생할 수 있고, 이에 의해서 실시간 작업, 준 실시간, 또는 업무 필수적인 분산 애플리케이션(mission critical distributed application)이 도 1의 시스템(100)에 의해 방해받지 않는다.
도 2는 분산 애플리케이션(201)을 모니터링 하는 시스템(200)의 다른 특정 실시예의 블록 다이어그램이다. 분산 애플리케이션(201)은 복수의 기술 특정적 인터셉터들을 포함하고, 이들에는 .NET 요소(205)에 부가된 .NET 인터셉터(202), WCF 요소(206)에 부가된 WCF 인터셉터(203), 자바 요소(207)에 부가된 자바 인터셉터(204)가 포함된다. 각각의 기술 특정적 인터셉터는 작업 항목들을 기술 중립적 인터셉터 관리자(230)에 보내도록 설정될 수 있다. 도시된 실시예에서, .NET 인터셉터(202)는 도 1의 .NET 인터셉터(122)를 포함하고, WCF 인터셉터(203)는 도 1의 WCF 인터셉터(112)를 포함하고, 기술 중립적 인터셉터 관리자(230)는 도 1의 기술 중립적 인터셉터 관리자(130)를 포함한다.
기술 특정적 인터셉터들에 의해 생성되고 기술 중립적 인터셉터 관리자(230)에게 보내지는 작업 항목들은 분산 애플리케이션(201)의 발견된 의존도를 저장하는 명령들과, 분산 애플리케이션(201)의 특정 실행 경로와 관련되는 활동 정보를 저장하는 명령들과, 분산 애플리케이션(201)에서 발생한 이벤트를 보고하는 명령들과, 그들 중 어떤 조합들도 포함할 수 있다. 기술 중립적 인터셉터 관리자(230)는 작업 항목 관리자(240)와 같은 복수의 작업 항목 관리자들을 포함할 수 있고, 각각의 작업 항목 관리자는 작업 항목 대기열(242)과 같은 작업 항목 대기열 내의 특정 기술 특정적 인터셉터로부터 수신된 작업 항목들을 저장하도록 설정된다. 예를 들면, 작업 항목 관리자(240)는 .NET 작업 항목 관리자일 수 있고 작업 항목 대기열(242) 내의 .NET 인터셉터(202)로부터 수신된 작업 항목들을 저장할 수 있다. 다른 예시로, 작업 항목 관리자(240)는 WCF 작업 항목 관리자일 수 있고 작업 항목 대기열(242) 내의 WCF 인터셉터(203)로부터 수신된 작업 항목들을 저장할 수 있다. 다른 예시에서, 작업 항목 관리자(240)는 자바 작업 항목 관리자일 수 있고 작업 항목 대기열(242) 내의 자바 인터셉터(204)로부터 수신된 작업 항목들을 저장한다.
작업 항목 관리자(240)는 또한 작업 항목 일정 로직(244)을 포함할 수 있고, 작업 항목 일정 로직(244)은 작업 항목 대기열(242) 내의 작업 항목들의 실행 일정을 잡도록 설정될 수 있고, 실행 일정이 잡힌 다음에는 작업 항목을 작업 항목 대기열(242)로부터 삭제하도록 설정될 수 있다. 특정 실시예에서, 작업 항목 일정 로직(244)은 분산 애플리케이션(201)의 퍼포먼스에 미치는 특정 작업 항목의 예상되는 임팩트에 기초하여 특정 작업 항목의 실행 일정을 잡을지의 여부를 판단한다. 예를 들면, 작업 항목 일정 로직(244)은 특정 작업 항목의 예상되는 임팩트가 수용 가능한 퍼포먼스 임팩트 임계값에 미달할 경우에 특정 작업 항목의 실행 일정을 잡을 수 있다.
작업 항목 일정 로직(244)은 스레드 풀(thread pool)(220)에 접속할 수 있고, 스레드 풀(220)은 하나 이상의 포그라운드 스레드들(foreground threads)(222)가 하나 이상의 백그라운드 스레드들(224)을 포함할 수 있다. 작업 항목 일정 로직(244)이 스레드 풀(220)에 접속할 수 있는 경우에, 작업 항목 일정 로직(244)은 스레드 풀(220) 내의 포그라운드 스레드들(222) 중 하나 또는 백그라운드 스레드들(224) 중 하나에서 실행될 작업 항목의 일정을 잡을 수 있다. 작업 항목 일정 로직(244)은 또한 동시 병행적으로 실행되는 작업 항목의 수를 제한하고 스레드 풀(220)의 동시 병행적으로 실행되는 스레드들의 수를 제한하도록 설정될 수 있다.
기술 중립적 인터셉터 관리자(230)의 의존도 관리자(dependency manager)(272)는 발견된 의존도를 저장하는 명령들을 포함하는 작업 항목들을 실행하도록 설정될 수 있다. 특정 실시예에서, 의존도 관리자(272)는 임시적으로 발견된 의존도들을 의존도 캐시(dependency cache)(282)에 수집하고 수집된 의존도들을 배치(batches)에 저장한다. 예를 들면, 의존도 관리자(272)는 발견된 의존도들을 의존도 캐시(282)에 수집할 수 있고 의존도 캐시(282)의 크기가 고정된 배치 크기(예를 들면 20)에 도달할 때마다 의존도 캐시(282)로부터 수집한 발견된 의존도들을 저장할 수 있다. 또한, 의존도 관리자(272)는 발견된 의존도들을 의존도 캐시(282) 내에 수집할 수 있고, 의존도 캐시(282)로부터 정해진 시간 간격으로(fixed interval) 수집한 발견된 의존도를 저장할 수 있다(예를 들면 120초). 의존도 캐시(282)에 의해 수집된 의존도들은 만기 안에 저장되지 않으면 만료될 수 있다. 의존도 관리자(272)는 발견된 의존도들의 배치(batch)를 하나 또는 그 이상의 저장부 장소들에 항목들을 저장하는 역할을 전담하는 저장 서비스(290)에 보내는 것을 통해서 발견된 의존도들의 배치(batch)를 저장할 수 있다. 예를 들면, 저장 서비스(290)는 발견된 의존도들을 데이터 베이스 또는 다른 데이터 저장소에 저장할 수 있다. 특정 실시예에서, 저장 서비스(290)는 특정 의존도가 이전에 저장된 적이 없었다는 판단에 대한 응답으로 특정 의존도를 저장할 수 있다. 의존도 관리자(272)는 또한 분산 애플리케이션(201)의 각각의 기술 특정적 인터셉터에서 의존도 발견을 키거나 끄도록 설정될 수 있다. 예를 들면, 의존도 관리자(272)는 각각의 .NET 인터셉터(202), WCF 인터셉터(203), 그리고 자바 인터셉터(204)에서의 의존도 발견을 키거나 끌 수 있다.
기술 중립적 인터셉터 관리자(230)에서의 활동 관리자(activity manager)(270)는 분산 애플리케이션(201)의 특정 실행 경로와 관련되는 활동 정보들을 저장하는 명령들을 포함하는 작업 항목들을 실행하도록 설정될 수 있다. 특정 실시예에서, 활동 관리자(270)는 활동 대기열(activity queue)(280) 내에 이런 작업 항목들을 대기시키고 활동 대기열(280)이 다 찬 경우에는 수신한 작업 항목들을 중단한다. 활동 관리자(270)는 활동 정보를 활동 대기열(280)에서 저장 서비스(290)로 이동시키는 방식으로 활동 정보를 저장할 수 있다. 특정 실시예에서, 활동 관리자(270)는 특정 기술 특정적 인터셉터에서 활동 정보 수집을 개시하도록 설정된다. 예를 들면, 자바 요소(207)가 JDBC(Java Database Connectivity)를 통해서 데이터베이스에 접속할 때, 활동 관리자(270)는 자바 인터셉터(204)에게 JDBC 호출들을 포함하는 자바 요소(207)에서의 모든 메시지들을 추적하도록 지시하여 데이터베이스 작업들을 추적할 수 있다.
도 2의 특정 실시예는 단지 하나의 저장 서비스만 도시하지만(즉 저장 서비스(290)), 복수의 저장 서비스들이 기술 중립적 인터셉터 관리자(230)에 의해 접속될 수 있다. 예를 들면, 의존도 관리자(272)는 제 1 저장 서비스를 사용하여 발견된 의존도를 저장할 수 있고 활동 관리자(270)는 제 2 저장 서비스를 사용하여 활동 정보를 저장할 수 있다. 제 1 저장 서비스와 제 2 저장 서비스는 데이터를 같은 저장 장소들 또는 다른 저장 장소들에 저장할 수 있다.
기술 중립적 인터셉터 관리자(230)의 아이덴티티 모니터들(identity monitors)(260)은 분산 애플리케이션(201)의 각각의 요소들에 대한 아이덴티티 모니터를 포함할 수 있다. 예를 들면, 아이덴티티 모니터들(260)은 분산 애플리케이션(201)의 웹 서비스에 대한 종점 모니터(endpoint monitor)를 포함할 수 있다. 특정 실시예에서, 특정 요소에 대한 아이덴티티 모니터는 특정 요소에 부가된 기술 특정적 인터셉터들에 의해서 감지된 이벤트들(예를 들면 소프트웨어 익셉션들 또는 에러들)에 관련된 데이터를 저장한다. 각각의 아이덴티티 모니터는 하나 이상의 클라이언트들을 가질 수 있고, 각각의 아이덴티티 모니터는 하나 이상의 클라이언트들에게 특정 이벤트의 발생을 보고하는 방식으로 특정 이벤트의 발생을 보고하도록 하는 명령들을 포함하는 작업 항목들을 실행할 수 있다. 예를 들면, NET 인터셉터(202)가 .NET 요소(205)에서 발생한 에러를 보고하는 명령들을 포함하는 작업 항목들을 생성할 때, .NET 요소(205)를 위한 아이덴티티 모니터는 .NET 요소(205)를 위한 아이덴티티 모니터의 클라이언트에게 에러를 보고하는 방식으로 작업 항목을 실행할 수 있다. 각각의 아이덴티티 모니터는 이벤트 데이터를 모니터링 트리(monitoring tree)에 저장할 수 있고, 모니터링 트리는 요소 모니터들, 종점 모니터들, 활동 모니터들, 사업 관점 모니터들(business perspective monitors), 작업 호출 모니터들(operation call monitors), 기구 모니터들(instrument monitors), 또는 이들의 어떠한 조합 등의 할당된 모니터들(allocated monitors)을 포함한다. 모니터링 트리들은 도 3과 관련해서 추가로 서술된다. 기술 중립적 인터셉터 관리자(230)는 또한 쓰레기 수거부(garbage collector)(284)를 포함할 수 있다. 쓰레기 수거부(284)는 정해진 시간 간격으로 실행되고, 정해진 시간 간격 동안에 사용되지 않은 모니터들을 할당 해제하도록 설정될 수 있다.
특정 실시예에서, 기술 중립적 인터셉터 관리자(230)는 하나 이상의 설정 세팅들(configuration settings)(212)을 포함할 수 있다. 설정 세팅들(212)은 설정 파일(210)을 통해서 설정될 수 있다. 설정 파일(210)은 어떤 포맷으로도 저장될 수 있고 (예를 들어, XML) 의존도 관리자(272), 활동 관리자(270), 작업 항목 관리자(240), 그리고 쓰레기 수거부(284)에 대한 설정들을 포함할 수 있다. 예를 들면, 설정 파일(210)은 XML 형식으로 저장될 수 있고 다음과 같은 예시적 XML 섹션을 포함할 수 있다.
<interceptorManagerConfiguration>
<dependencyManager
storageClient="DependencyStorageClient"
submitBatchSize="2"
submitFrequency="20"
cacheExpiration="60"/>
<workItemManager
maxWorkItemQueueSize="40000"
maxWorkItemThreads="2"
requestedWorkItemExpiration="20"/>
<activityManager storageClient="ActivityStorageClient"/>
<garbageCollector
frequency="60"/>
</interceptorManagerConfiguration>
특정 실시예에서, 기술 특정적 인터셉터들은 뒤따르는 예시적 C# 인터페이스들에 따라서 구현될 수도 있다.
public interface InterceptorService
{
bool ProcessDependencyDiscovery(bool turnOn);
bool ProcessActivityMonitoring(bool turnOn);
Guid SetupInstrument(
string address,
string action,
string bpXPath,
string bpNamespace,
string conunterName,
string counterConfig,
int instrumentInterval);
Guid SetupOperationCallInstrument(
string sourceAddress,
string sourceAction,
string targetAddress,
string targetAction,
string bpXPath,
string bpNamespace,
string counterName,
string counterConfig,
int instrumentInterval);
Guid SetupActivityInstrument(
string address,
string action,
string bpXPath,
string bpNamespace,
string counterName,
string counterConfig,
int instrumentInterval);
InstrumentData[] Getinstruments(Guid[] ids);
}
public enum InstrumentDataState
{
InstrumentNotFound,
InstrumentDataValid,
InstrumentProcessingError
}
public class InstrumentData
{
public InstrumentDataState State { get; }
public double Value { get; }
public InstrumentValueState ValueState { get; }
public DateTime WindowStart { get; }
public DateTime WindowEnd { get; }
}
public enum InstrumentValueState
{
NotSet,
WindowSet,
Set,
SetWithOverflow
}
기술 특정적 인터셉터가 상술한 바와 같이 구현될 때, 기술 특정적 인터셉터에서의 의존도 발견은 ProcessDependencyDiscovery() 방법을 호출하는 방식으로 on/off 될 수 있고, 활동 모니터링은 ProcessActivityMonitoring() 방법에 의해서 on/off 될 수 있다. 더 나아가, 이벤트 추적은 SetupInstrument() 방법에 의해 설정될 수 있고, 기능 실행 추적은 SetupOperationCallInssrument() 방법에 의해 설정될 수 있고, 그리고 활동 추적은 SetupActivityInstrument() 방법에 의해 설정될 수 있다.
특정 실시예에서, 기술 중립적 인터셉터 관리자(230)는 분산 애플리케이션(201) 외부에 있는 에이전트(agent)(208)에 위치할 수 있다. 이런 실시예에서, 분산 애플리케이션에 위치한 기술 특정적 인터셉터(202-204)와 같은 기술 특정적 인터셉터들은 함수 호출(function calls)을 추적하고, 활동 정보를 추적하고, 외부 에이전트(208)에 의한 이벤트들을 추적하도록 설정될 수 있다.
작업 중에, 기술 중립적 인터셉터 관리자(230)는 설정 파일(210)을 통해서 설정될 수 있다. 기술 중립적 인터셉터 관리자(230)는 .NET 요소(205), WCF 요소(206), 그리고 자바 요소(207) 등의 분산 애플리케이션(201)의 요소들을 식별할 수 있다. 기술 중립적 인터셉터 관리자(230)는 더 나아가 하나 이상의 요소들과 결부된 특정 기술을 식별할 수 있고 하나 이상의 요소들에 기술 특정적 인터셉터를 부가할 수 있다. 예를 들어, 기술 중립적 인터셉터 관리자(230)는 .NET 요소(205)에 .NET 인터셉터(202)를 부가할 수 있고, WCF 요소(206)에 WCF 인터셉터(203)를 부가할 수 있고, 자바 요소(204)에 자바 인터셉터(207)를 부가할 수 있다. 기술 중립적 인터셉터 관리자(230)는 기술 특정적 인터셉터들로 하여금 의존도들을 발견하고, 활동 정보를 추적하고, 분산 애플리케이션(201)의 이벤트들을 추적하도록 설정할 수 있다. 예를 들면, 의존도 관리자(272)는 .NET 인터셉터(202)에서 의존도 발견을 켤 수 있고 .NET 인터셉터(202)가 .NET 요소(205)에서 특정 .NET 기능의 실행을 추적하도록 설정할 수 있다. 다른 예시에서, 활동 관리자(270)는 자바 요소(204)로 하여금 자바 요소(207)와 데이터베이스 사이의 JDBC 호출들을 추적하도록 지시할 수 있다. 또 다른 예시에서, 기술 중립적 인터셉터 관리자(230)는 WCF 인터셉터(203)로 하여금 WCF 요소(206)에서 발생하는 각각의 소프트웨어 익셉션을 보고하도록 설정할 수 있다.
기술 특정적 인터셉터들은 분산 애플리케이션(201)의 다양한 요소들 사이의 하나 이상의 메시지들을 가로챌 수 있고 하나 이상의 가로챈 메시지들을 기반으로 하나 또는 그 이상의 작업 항목을 생성할 수 있다. 예를 들면 .NET 인터셉터(202)는 특정 .NET 기능의 발동과 관련된 메시지를 가로챌 수 있고 WCF 요소(206)의 소스 작업과 .NET 요소(205)의 목표물 작업 사이의 의존도를 발견할 수 있다. .NET 인터셉터(202)는 관련된 의존도 작업 항목을 기술 중립적 인터셉터 관리자(230)에게 보낼 수 있다. 다른 예시에서, 자바 인터셉터(204)는 자바 요소(207)가 JDBC 호출을 했다는 것을 감지하고 관련된 작업 항목을 기술 중립적 인터셉터 관리자(230)에게 송달할 수 있다. 또 다른 예시에서, WCF 인터셉터(203)는 WCF 요소(206)에서 발생한 소프트웨어 익셉션을 감지하고 관련 이벤트 작업 항목을 기술 중립적 인터셉터 관리자(230)에게 보낼 수 있다.
기술 중립적 인터셉터 관리자(230)가 .NET 인터셉터(202)로부터 의존도 작업 항목을 수신하는 경우에, .NET 작업 항목 관리자(예를 들면 작업 항목 관리자(240)가 .NET 작업 항목 관리자인 경우에는 작업 항목 관리자(240))는 의존도 작업 항목을 작업 항목 대기열(예를 들면 작업 항목 관리자(240)가 .NET 작업 항목 관리자인 경우에는 작업 항목 대기열(242))에 추가할 수 있다. 작업 항목 관리자(예를 들면 작업 항목 관리자(240)가 .NET 작업 항목 관리자인 경우에는 작업 항목 일정 로직(244))의 작업 항목 일정 로직은 분산 애플리케이션(201)의 퍼포먼스에 미치는 의존도 작업 항목의 예상되는 임팩트를 기초로 의존도 작업 항목의 실행 일정을 잡을지의 여부를 판단할 수 있다. 의존도 작업 항목의 예상되는 임팩트가 수용 가능한 퍼포먼스 임팩트 임계값보다 낮은 경우에는, 작업 항목 일정 로직(244)은 스레드 풀(220)의 포그라운드 스레드들(222) 또는 백그라운드 스레드들(224) 중 하나 안에서 의존도 작업 아이템의 실행 일정을 잡을 수 있다. 의존도 관리자(272)는 WCF 요소(206)의 소스 작업과 .NET 요소(205)의 목표물 작업 사이에서 발견된 의존도를 의존도 캐시(282)에 추가하는 방식으로 의존도 작업 항목을 실행할 수 있다. 발견된 의존도를 의존도 캐시(282)에 추가하고 난 후, 의존도 관리자(272)는 발견된 의존도를 저장 서비스(290)를 통해서 저장할 수 있다. 또는, 의존도 작업 항목의 예상되는 임팩트가 수용 가능한 퍼포먼스 임팩트 임계값보다 높은 경우에는, 작업 항목은 중단될 수 있다.
기술 중립적 인터셉터 관리자(230)가 자바 인터셉터(204)로부터 활동 작업 항목(activity work item)을 수신한 경우에, 자바 작업 항목 관리자(예를 들면 작업 항목 관리자(240)가 자바 작업 항목 관리자인 경우에 작업 항목 관리자(240))는 작업 항목 대기열(예를 들면 작업 항목 관리자(240)가 자바 작업 항목 관리자인 경우에 작업 항목 대기열(242))에 활동 작업 항목을 추가할 수 있다. 작업 항목 관리자에서의 작업 항목 일정 로직은 (예를 들면, 작업 항목 관리자(240)가 자바 작업 항목 관리자인 경우에 작업 항목 일정 로직(244)) 분산 애플리케이션(201)의 퍼포먼스에 미치는 활동 작업 항목의 예상되는 임팩트에 기초하여 활동 작업 아이템의 실행 일정을 잡을지 여부를 판단할 수 있다. 활동 작업 항목의 예상되는 임팩트가 수용 가능한 퍼포먼스 임팩트 임계값보다 낮은 경우에, 작업 항목 일정 로직(244)은 스레드 풀(220)의 포그라운드 스레드들(222) 또는 백그라운드 스레드들(244) 중의 하나 안에서 실행되도록 활동 작업 항목의 일정을 잡을 수 있다. 활동 관리자(270)는 자바 요소(207)로부터의 JDBC 호출을 활동 대기열(280)에 추가하는 방식으로 활동 작업 아이템을 실행할 수 있다. JDBC 호출을 활동 대기열(280)에 더한 후에, 활동 관리자(270)는 저장 서비스(290)를 통해서 JDBC 호출을 저장할 수 있다. 또는, 활동 작업 항목의 예상되는 임팩트가 수용 가능한 퍼포먼스 임팩트 임계값을 초과하는 경우에, 활동 작업 항목은 중단될 수 있다.
기술 중립적 인터셉터 관리자(230)가 WCF 인터셉터(203)로부터 이벤트 작업 항목을 수신하면, WCF 작업 항목 관리자(예를 들면 작업 항목 관리자(240)가 WCF 작업 항목 관리자인 경우에 작업 항목 관리자(240))는 작업 항목 대기열(예를 들면 작업 항목 관리자(240)가 WCF 작업 항목 관리자인 경우에 작업 항목 대기열(242))에 이벤트 작업 항목을 추가할 수 있다. 작업 항목 관리자에서 작업 항목 일정 로직(예를 들면 작업 항목 관리자(240)가 WCF 작업 항목 관리자인 경우에 작업 항목 일정 로직(244))은 분산 애플리케이션(201)의 퍼포먼스에 미치는 이벤트 작업 항목의 예상되는 임팩트를 기초로 이벤트 작업 항목의 실행 일정을 잡을지의 여부를 판단할 수 있다. 이벤트 작업 항목의 예상되는 임팩트가 수용 가능한 퍼포먼스 임팩트 임계값에 미달인 경우에, 작업 항목 일정 로직(244)은 스레드 풀(220)의 포그라운드 스레드들(222) 또는 백그라운드 스레드들(224) 중에 하나 안에서 실행되는 이벤트 작업 항목의 일정을 잡을 수 있다. WCF 요소(206)에 대한 아이덴티티 모니터(예를 들면 아이덴티티 모니터들(260) 중의 하나)는 WCF 요소(206)에 대한 아이덴티티 모니터의 하나 이상의 클라이언트들에게 소프트웨어 익셉션을 보고하는 방식으로 이벤트 작업 항목을 실행할 수 있다. 또는, 이벤트 작업 항목의 예상되는 임팩트가 수용 가능한 퍼포먼스 임팩트 임계값을 초과하는 경우에, 이벤트 작업 항목은 중단될 수 있다.
도 2의 시스템(200)은 분산 애플리케이션(201)의 모니터링의 전반적인 퍼포먼스 임팩트를 감소시키기 위한 스로틀링 능력들(throttling capabilities)을 포함한다. 예를 들면, 의존도 관리자(272)는 발견된 의존도들을 의존도 캐시(282)에 캐시하고 발견된 의존도들을 배치들에 저장함으로써 시간 소모적인 의존도 저장 작업들의 수를 감소시킬 수 있다. 활동 관리자(270)는 활동 대기열(280)에 활동 정보를 대기시키고 분산 애플리케이션(201)이 상대적으로 유휴상태(idle)(예를 들면 밤 또는 주말)일 때 대기된 활동 정보를 저장하는 방식으로 활동 저장 작업의 퍼포먼스 임팩트를 감소시킬 수 있다. 쓰레기 수거부(284)는 더 이상 사용하지 않는 모니터들의 할당 해제를 통해서 도 2의 시스템(200)이 차지하는 메모리 공간을 감소시킬 수 있다. 작업 항목 일정 로직(244)은 동시 병렬적으로 실행중인 작업 항목의 수를 제한할 수 있다. 작업 항목 일정 로직(244)은 분산 애플리케이션(201)의 다른 스레드들보다 낮은 우선도를 가지는 스레드 풀(220)의 백그라운드 스레드에서 실행될 작업 항목들의 일정을 잡을 수 있다. 이것은, 백그라운드 스레드는 다른 실행 중인 스레드들이 일정 잡힌 작업 항목을 실행하는 것을 방해하지 않기 때문이다.
도 3은 도 1의 시스템(100) 또는 도 2의 시스템(200) 등의 분산 애플리케이션을 모니터링하는 시스템과 함께 사용될 수 있는 아이덴티티 모니터(320)의 특정 실시예의 블록 다이어그램(300)이다. 아이덴티티 모니터(320)는 모니터링 트리(monitoring tree)의 루트(root)에 해당할 수 있고, 이때 모니터링 트리는 요소 모니터(component monitor)(330)와 같은 하나 이상의 요소 모니터들(322)을 포함한다. 모니터링 트리는 또한 하나 이상의 사업 관점 모니터(340), 작업 호출 목표물 종점 모니터(operation call target endpoint monitor)(370), 카운터 모니터(counter monitor)(350), 기구 모니터(360) 등을 포함할 수 있다. 도시된 실시예에서 아이덴티티 모니터(320)는 도 2의 아이덴티티 모니터들(260) 중 하나이다.
아이덴티티 모니터(320)는 분산 애플리케이션의 특정 요소와 결부될 수 있다. 예를 들면, 아이덴티티 모니터(320)는 도 1의 요소들(110 또는 120) 또는 도 2의 요소들(205, 206, 또는 207) 중의 하나와 결부될 수 있다. 아이덴티티 모니터(320)는 아이덴티티 모니터(320)와 결부되어있는 요소의 어드레스(address)(321)를 포함할 수 있다. 어드레스(321)는 IP 어드레스 또는 어떤 다른 어드레스일 수도 있다. 예를 들면 아이덴티티 모니터(320)는 도 1의 .NET 요소(120)의 IP 어드레스를 포함할 수 있다. 아이덴티티 모니터(320)는 또한 요소 모니터(330)와 같은 하나 이상의 요소 모니터들(322)을 포함할 수 있다.
요소 모니터(330)는 하나 이상의 활동 사업 관점 모니터들(activity business perspective monitors)(331)과 사업 관점 모니터(340)와 같은 하나 이상의 사업 관점 모니터들(332)을 포함할 수 있다. 요소 모니터(330)는 또한 작업 호출 목표물 종점 모니터(370)와 같은 하나 이상의 작업 호출 모니터들(333)을 포함할 수 있다.
사업 관점 모니터(340)와 같은 각각의 사업 관점 모니터는 특정 사업 관점, 즉 특정 메시지 소스에 대한 카운터 및 기구 데이터(counter and instrument data)를 저장할 수 있다. 예를 들면, 사업 관점 모니터(340)는 도 1의 WCF 요소(110)로부터 도 1의 .NET 요소(120)로 보내진 메시지들을 추적함으로 인해서 생성된 카운터 및 기구 데이터를 저장할 수 있다. 메시지들이 XML 형식인 경우에, 사업 관점 모니터(340)는 XPATH(XML Path Language) 작업(341)을 포함할 수 있고, XPATH는 특정 메시지 소스를 식별하기 위해서 메시지 상에 실행할 수 있다. 사업 관점 모니터(340)는 또한 특정 메시지 소스와 결부된 명칭 공간(namespace)(342)을 포함할 수 있다. 사업 관점 모니터(340)는 또한 카운터 모니터(350)와 같은 하나 이상의 카운터 모니터들(343)을 포함할 수 있다.
카운터 모니터(350)는 분산 시스템에서의 특정 이벤트 발생을 추적할 수 있다. 카운터 모니터(350)는 카운터와 결부된 설정(352)과 특정 이벤트를 추적하는 카운터의 이름(351)을 포함할 수 있다. 예를 들면, 카운터 모니터(350)는 도 2의 .NET 요소(205)에서 발생하고, 도 2의 WCF 요소(206)에 의해 발생되고, 그리고 이름(351) "WCF -> .NET Exception Counter"를 포함하는 익셉션들을 추적할 수 있다. 카운터 모니터(350)는 또한 기구 모니터(360)와 같은 하나 이상의 기구 모니터들(353)을 포함할 수 있다.
기구 모니터(360)와 같은 각각의 기구 모니터는 특정 시점에서의 특정 카운터 값(value)을 저장하도록 설정될 수 있다. 예를 들면, 기구 모니터(360)는 특정 시점에서의 "WCF->.NET Exception Counter"의 값을 저장하도록 설정될 수 있다. 특정 실시예에서, 기구 모니터(360)는 특정 카운터의 현재 값(361), 특정 카운터의 현재 값 상태(current value state)(362), 그리고 특정 카운터와 결부된 현재 윈도우(363)를 포함한다. 기구 모니터(360)는 또한 과거 값(364), 과거 값 상태(previous value state)(365), 그리고 과거 윈도우(366)를 포함한다. 현재 값 상태(362)와 과거 값 상태(365)는 특정 카운터가 개시되지 않았음을 나타내는 상태, 특정 카운터가 개시되었지만 아직 읽혀지지 않았음을 나타내는 상태, 특정 카운터가 유효 값(valid value)을 포함함을 나타내는 상태, 또는 특정 카운터가 오버플로우(overflow)에 인해 부정확한 값을 포함함을 나타내는 상태 등을 포함할 수 있다. 특정 실시예에서, 새로운 기구 모니터는 특정 카운터의 값이 매번 변할 때마다 할당된다.
작업 호출 목표물 종점 모니터(operation call target endpoint monitor)(370)는 특정 작업 호출(예를 들면 함수 호출)과 관련된 데이터를 저장하도록 설정될 수 있다. 특정 실시예에서, 작업 호출은 분산 시스템의 구성요소에 내부적이다. 예를 들면, 작업 호출은 도 1의 .NET 요소(120)에서 내부 함수 호출일 수 있다. 또는, 작업 호출은 분산 애플리케이션의 두 요소들 사이의 작업 호출일 수 있다. 예를 들면, 작업 호출은 도 1의 WCF 요소(110)에 소스 작업을, 그리고 도 1의 .NET 요소(120)에 목표물 작업을 가지는 함수 호출일 수 있다. 특정 실시예에서, 작업 호출 목표물 종점 모니터(370)는 종점 모니터(320)에 부합하는 소프트웨어 클래스(software class)로부터 이어받는 소프트웨어 클래스의 객체일 수 있고, 여기서 각각의 작업 호출 목표물 종점 모니터는 종점 어드레스(321)와 하나 또는 그 이상의 작업 모니터들(322)과 같은 종점 모니터(320)의 함수들을 포함한다.
도 3에 도시된 특정 모니터링 트리는 WCF 기술에 특정된 것이다. 모니터링 트리는 다른 기술들에 대하여는 다른 모니터들의 계층구조를 포함할 수 있다.
도 3의 모니터링 트리는 기술 특정적 인터셉터들에 의해 생성된 작업 항목들로부터의 데이터를 체계화하는데 사용될 수 있고, 이것은 이런 데이터들의 검색을 빠르게 한다. 예를 들면, 특정 가로챈 메시지들로부터의 데이터는 작업, 사업 관점, 또는 카운터를 기준으로 체계화될 수 있다. 가로챈 메시지가 작업 호출을 나타낼 때는, 데이터는 또한 작업 호출을 기준으로 체계화될 수 있다.
도 4는 분산 애플리케이션(예를 들면 도 1의 분산 애플리케이션(102) 또는 도 2의 분산 애플리케이션(201))을 모니터하기 위한 메시지 인터셉션(interception)을 도시한다. 도 4에 도시된 특정 실시예에서, 메시지들은 .NET 요소(410)와 자바 요소(440) 사이에서 인터셉트 된다. 메시지들은 .NET 요소(410)에 부가된 .NET 인터셉터(420)에서 인터셉트 되고, 자바 요소(440)에 부가된 자바 인터셉터(430)에서 인터셉트 된다. 도시된 실시예에서, .NET 요소(410)는 도 1의 .NET 요소(110) 또는 도 2의 .NET 요소(205)를 포함하고, 자바 요소(440)는 도 2의 자바 요소(207)를 포함한다.
.NET 인터셉터(420)은 .NET 요소(410)에 부가되어 .NET 요소(410)가 송수신하는 모든 메시지들이 .NET 인터셉터(420)를 톨과하도록 한다. 예를 들면, .NET 인터셉터(420)은 .NET 요소(410)의 .NET 네트워크 인터페이스(412)에 부가될 수 있다. .NET 요소(410)에서 송수신 되는 메시지들은 XML 메시지들이거나 또는 어떤 다른 메시지 포맷일 수 있다.
이와 유사하게, 자바 인터셉터(430)는 자바 요소(440)에 부가되어 자바 요소(440)에서 송수신 되는 모든 메시지들이 자바 인터셉터(430)를 지나가도록 할 수 있다. 예를 들면, 자바 인터셉터(430)은 자바 요소(440)의 자바 네트워크 인터페이스(442)에 부가될 수 있다. 자바 요소(440)에서 송수신 되는 메시지들은 XML 메시지들이거나 또는 어떤 다른 메시지 포맷일 수도 있다.
작업중에, .NET 요소(410)는 메시지(460)를 자바 요소(440)에 보낼 수 있다. 메시지(460)는 .NET 네트워크 인터페이스(412)에서 .NET 요소(410)를 떠날 수 있고, .NET 네트워크 인터페이스(412)에 부가된 .NET 인터셉터(420)에 의해 가로채질 수 있다. 메시지(460)를 가로채고 나서, .NET 인터셉터(420)는 .NET 요소(410)의 의존도를 발견하기 위해서, .NET 요소(410)를 포함하는 특정 실행 경로에서의 활동 정보를 추적하기 위해서, 또는 .NET 요소(410)에서의 특정 이벤트의 발생 여부를 추적하기 위해서 메시지(460)를 조사할 수 있다. 가로챈 메시지(460)를 조사하고 난 후, .NET 인터셉터(420)은 가로챈 메시지(460)를 자바 요소(440)에 보낼 수 있다.
자바 요소(440)에 도달하기 전에, 메시지(460)는 다시 한번 가로채여지고, 이번에는 자바 인터셉터(430)에 의해 가로채여진다. 자바 인터셉터(430)은 .NET 인터셉터(420)에 대하여 상술 된 바와 같이 가로챈 메시지(460)에 대하여 유사한 작업들을 수행할 수 있다. 예를 들면, 자바 인터셉터(430)는 또한 자바 요소(440)의 의존도를 발견하기 위해서, 자바 요소(440)를 포함하는 특정 실행 경로에서의 활동 정보를 추적하기 위해서, 자바 요소(440)에서의 특정 이벤트의 발생들을 추적하기 위해서 메시지(460)를 조사할 수 있다.
어느 쪽으로 보내진 메시지들도 가로채질 수 있고, 조사될 수 있다. 예를 들면, 자바 요소(440)로부터 .NET 요소(410)로 보내진 제 2 메시지(470) 역시 의존도들을 발견하기 위해서, 활동 정보를 추적하기 위해서, 그리고 이벤트 발생들을 추적하기 위해서 가로채어지고 조사될 수 있다. 도 4에 도시된 특정 실시예는 인터셉터가 양쪽 요소들에 부가된 경우를 보여주지만, 두 요소들 사이의 의존도는 두 요소들 사이의 메시지 경로에 단지 하나의 인터셉터만 존재하는 경우에도 발견될 수 있다. 예를 들면, 자바 인터셉터(430)가 없는 경우에도, NET 요소(410)와 자바 요소(440) 사이의 의존도는 .NET 인터셉터(420)에 의해 발견될 수 있다. 이와 유사하게, .NET 인터셉터(420)가 없는 경우에도, .NET 요소(410)가 자바 요소(440) 사이의 의존도는 자바 인터셉터(430)에 의해 발견될 수 있다.
도 4에 도시된 메시지 인터셉션은, 다른 기술들(예를 들면 .NET와 자바)과 결부된 분산 애플리케이션의 요소들을 모니터하는데 사용될 수 있다.
도 5는 분산 애플리케이션을 모니터링 하는 방법(500)의 특정 실시예의 플로우 다이어그램이다. 도시된 실시예에서, 방법(500)은 도 1의 시스템(100) 또는 도 2의 시스템(200)에 의해 수행될 수 있다. 방법(500)은 502에서 분산 애플리케이션의 복수의 요소들을 식별하는 단계를 포함한다. 예를 들면 도 1에서, 기술 중립적 인터셉터 관리자(130)는 WCF 요소(110)와 .NET 요소(120)를 식별할 수 있다. 방법(500)은 또한 504에서, 복수의 요소들 중의 특정 요소와 관련된 특정 기술을 식별하는 것을 포함한다. 예를 들면 도 1에서, 기술 중립적 인터셉터 관리자(130)는 WCF 요소(110)가 WCF 기술과 결부되어 있다는 것을 식별할 수 있다.
방법(500)은 더 나아가 506에서, 식별된 특정 기술에 기반하여 기술 특정적 인터셉터를 특정 요소에 부가하는 단계와 부가된 기술 특정적 인터셉터를 사용하여 특정 요소에 의해 송수신 된 메시지들을 가로채는 단계를 포함한다. 예를 들면 도 1에서, 기술 인터셉터 관리자(130)는 WCF 인터셉터(112)를 WCF 요소(110)에 부가할 수 있고, WCF 인터셉터(112)는 WCF 요소(110)에 의해 송수신 되는 메시지들을 가로챌 수 있다. 방법(500)은 또한 508에서 가로챈 메시지들에 기초하여 적어도 하나의 잠재적 작업 항목을 생성하는 단계를 포함한다. 예를 들면 도 1에서, WCF 인터셉터(112)는 가로챈 메시지들을 기초로 적어도 하나의 잠재적 작업 항목을 생성할 수 있다.
방법(500)은 또한 510에서 적어도 하나의 잠재적 작업 항목의 일정을 잡을지의 여부를 판단하는 단계를 포함한다. 판단은 분산 애플리케이션의 퍼포먼스에 미치는 적어도 하나의 잠재적 작업 항목의 예상되는 임팩트에 기초하여 이루어진다. 예를 들면 도 1에서, WCF 작업 항목 일정 로직(144)은 분산 애플리케이션(102)의 퍼포먼스에 미치는 적어도 하나의 잠재적 작업 항목의 예상되는 임팩트에 기초하여 적어도 하나의 잠재적 작업 항목의 일정을 잡을지의 여부를 판단할 수 있다.
도 5의 방법(500)은 다양한 요소들 사이에 분산되어 있고 다양한 기술들을 포함하는 분산 애플리케이션을 모니터하는데 이용될 수 있다. 추가로 도 5의 방법(500)은 분산 애플리케이션의 퍼포먼스에 높은 임팩트 예상치를 미치는 작업 항목의 일정을 잡지 않음으로써 이런 모니터링의 전반적 퍼포먼스 임팩트를 감소시킬 수 있다. 예를 들면, 도 5의 방법(500)은 대기 되는 작업 항목의 수를 제한하는 방식으로 이런 모니터링의 전반적 퍼포먼스 임팩트를 감소시킬 수 있다. 도 5의 방법(500)은 필요에 따라 퍼포먼스를 위해서 모니터링의 정확도를 희생할 수 있고, 이에 따라 실시간, 준 실시간, 업무 필수적인 분산 애플리케이션의 작업이 방해되지 않는다.
도 6은 분산 애플리케이션을 모니터링하는 방법(600)의 다른 특정 실시예의 플로우 다이어그램이다. 도시된 실시예에서, 방법(600)은 도 1의 시스템(100) 또는 도 2의 시스템(200)에 의해 수행될 수 있다. 방법(600)은 602에서 분산 애플리케이션의 복수의 요소들을 식별하는 단계를 포함한다. 예를 들면 도 1에서, 기술 중립적 인터셉터 관리자(130)는 WCF 요소(110)와 .NET 요소(120)를 식별할 수 있다. 방법(600)은 또한 604에서 복수의 요소들 중의 특정 요소와 결부된 특정 기술을 식별하는 단계를 포함한다. 예를 들면 도 1에서, 기술 중립적 인터셉터 관리자(130)는 WCF 요소(110)가 WCF 기술과 결부되어 있다는 것을 식별할 수 있다.
방법(600)은 더 나아가 606에서 식별된 특정 기술에 기초하여 특정 요소에 기술 특정적 인터셉터를 부가하는 단계와 부가된 기술 특정적 인터셉터를 사용하여 특정 요소에 의해 송수신 된 메시지들을 가로채는 단계를 포함한다. 예를 들면 도 1에서, 기술 인터셉터 관리자(130)는 WCF 인터셉터(112)를 WCF 요소(110)에 부가할 수 있고, WCF 인터셉터(112)는 WCF 요소(110)에 의해 송수진 된 메시지들을 가로챌 수 있다. 방법(600)은 또한 608에서, 가로챈 메시지들을 기초로 적어도 하나의 잠재적 작업 항목을 생성하는 단계를 포함한다. 예를 들면 도 1에서, WCF 인터셉터(112)는 가로챈 메시지들을 기초로 해서 적어도 하나의 잠재적 작업 항목을 생성할 수 있고 적어도 하나의 잠재적 작업 항목을 기술 특정적 인터셉터 관리자에게 보낼 수 있고, 여기서 적어도 하나의 잠재적 작업 항목은 WCF 작업 항목 대기열(142)에 삽입된다.
방법(600)은 또한 610에서 분산 애플리케이션의 퍼포먼스에 미치는 적어도 하나의 잠재적 작업 항목의 예상되는 임팩트를 계산하는 단계를 포함한다. 예상되는 임팩트는 프로세서 활용(processor utilization)에 미치는 영향이거나, 메시지 대기 시간(message latency)에 미치는 영향이거나, 또는 실행 대기열 길이에 미치는 영향일 수 있다. 예를 들면 도 1에서, 작업 항목 일정 로직(144)은 적어도 하나의 잠재적 작업 항목의 예상되는 임팩트를 계산할 수 있고, 여기서 예상되는 임팩트는 분산 애플리케이션(102)에서 프로세서 활용에 미치는 영향, 분산 애플리케이션(102)에서 메시지 대기 시간에 미치는 영향, 또는 분산 애플리케이션(102)에서 실행 대기열 길이에 미치는 영향 등일 수 있다. 방법(600)은 또한 612에서, 예상되는 임팩트가 수용 가능한 퍼포먼스 임팩트 임계값 미만인지의 여부를 판단하는 단계를 포함한다. 예를 들면 도 1에서, 작업 항목 일정 로직(144)은 적어도 하나의 잠재적 작업 항목의 예상되는 퍼포먼스 임팩트가 수용 가능한 퍼포먼스 임팩트 임계값 미만인지의 여부를 판단할 수 있다.
예상되는 임팩트가 수요 가능한 퍼포먼스 임팩트 임계값 미만임이 판단된 경우에는, 방법은 614에서 적어도 하나의 잠재적 작업 항목의 실행 일정을 잡는 단계와 적어도 하나의 잠재적 작업 항목을 실행하는 단계를 포함한다. 예를 들면, 예상되는 임팩트가 수용 가능한 퍼포먼스 임팩트 임계값 미만임이 판단된 경우에, WCF 작업 항목 일정 로직(144)은 적어도 하나의 잠재적 작업 항목의 실행 일정을 잡을 수 있고 적어도 하나의 잠재적 작업 항목은 실행될 수 있다. 예상되는 임팩트가 수용 가능한 퍼포먼스 임팩트 임계값 미만이 아니라고 판단되는 경우에는, 방법은 616에서 적어도 하나의 잠재적 작업 항목을 중단하는 단계를 포함한다. 예를 들면, 예상되는 임팩트가 수용 가능한 퍼포먼스 임팩트 임계값 미만이 아닌 것이 판단된 경우에, WCF 작업 항목 일정 로직(144)은 적어도 하나의 잠재적 작업 항목의 실행 일정을 잡지 않고 작업 항목 대기열(142)로부터 삭제하는 방식으로 적어도 하나의 잠재적 작업 항목을 중단할 수 있다. 또는, 도 1에서, WCF 작업 항목 일정 로직(144)은 적어도 하나의 잠재적 작업 항목으로 하여금 WCF 작업 항목 대기열(142)에 남아있게 할 수 있고, 이 경우에 적어도 하나의 잠재적 작업 항목은 자동으로 만료된다.
도 6의 방법(600)은 분산 애플리케이션의 퍼포먼스에 미치는 적어도 하나의 잠재적 작업 항목의 예상되는 임팩트에 기초해서 선택적으로 적어도 하나의 작업 잠재적 작업 항목의 실행 일정을 잡는데 사용될 수 있다. 더 나아가 퍼포먼스 임팩트 예상치가 높은 작업 항목들은 작업 항목 대기열로부터 삭제될 수 있고, 이로 인해서 그 뒤에 수신되는 작업 항목들을 위해 작업 항목 대기열 내에 공간을 만들어 줄 수 있다.
도 7은 분산 애플리케이션을 모니터링 하는 방법(700)의 다른 특정 실시예의 플로우 다이어그램이다. 도시된 실시예에서, 방법(700)은 도 1의 시스템(100) 또는 도 2의 시스템(200)에 의해 수행될 수 있다. 방법(700)은 702에서 분산된 애플리케이션의 복수의 요소들을 식별하는 단계를 포함한다. 예를 들어 도 2에서, 기술 중립적 인터셉터 관리자(230)는 .NET 요소(205), WCF 요소 (206), 자바 요소(207), 또는 그들의 어떤 조합도 식별할 수 있다. 방법(700)은 704에서 복수의 요소 중의 특정 요소와 결부된 특정 기술을 식별하는 단계를 포함한다. 예를 들면 도 2에서, 기술 중립적 인터셉터 관리자(230)는 WCF 요소(206)가 WCF 기술과 결부되어 있음을 식별할 수 있다.
방법(700)은 더 나아가 706에서 식별된 특정 기술을 기초로 기술 특정적 인터셉터를 특정 요소에 부가시키는 단계와 부가된 기술 특정적 인터셉터를 사용하여 특정 요소에 의해 송수신 된 메시지들을 가로채는 단계를 포함한다. 예를 들어 도 2에서, 기술 중립적 인터셉터 관리자(230)는 WCF 인터셉터(203)를 WCF 요소(206)에 부가할 수 있고, WCF 인터셉터(203)는 WCF 요소(206)에 의해 송수신 된 메시지들을 가로챌 수 있다. 방법(700)은 또한 708에서 가로챈 메시지들을 기반으로 적어도 하나의 잠재적 작업 항목을 생성하는 단계를 포함한다. 예를 들어, WCF 인터셉터(203)는 가로챈 메시지들을 기반으로 적어도 하나의 잠재적 작업 항목을 생성할 수 있다. 방법(700)은 또한 710에서 적어도 하나의 잠재적 작업 항목의 실행 일정을 잡을지의 여부를 판단하는 단계를 포함한다. 판단은 분산 애플리케이션의 퍼포먼스에 미치는 적어도 하나의 잠재적 작업 항목의 예상되는 임팩트를 기초로 이루어진다. 예를 들면 도 2에서, WCF 작업 항목 일정 로직(244)은 분산 애플리케이션(201)의 퍼포먼스에 미치는 적어도 하나의 작업 항목의 예상되는 임팩트에 기초하여 적어도 하나의 잠재적 작업 항목의 일정을 잡을지의 여부를 판단할 수 있다.
방법(700)은 또한 712에서 생성된 익셉션들의 수 또는 보고된 에러들의 수와 같은 분산 애플리케이션과 관련된 적어도 하나의 계량 값(metric)을 계산하는 단계를 포함한다. 예를 들어 도 2에서, 기술 중립적 인터셉터 관리자(230)는 WCF 인터셉터(203)로부터 작업 항목들을 수신할 수 있고, 이들은 WCF 요소(206)에서의 익셉션들을 나타내고 수신된 이런 작업 항목들을 카운트한다. 특정 실시예에서, 익셉션들은 도 3의 아이덴티티 모니터(320)와 같은 아이덴티티 모니터에 의해 세어질 수 있다. 방법(700)은 더 나아가 714에서 분산 애플리케이션의 실패 조건(failure condition)을 감지하는 단계를 포함한다. 예를 들면, 도 2의 분산 애플리케이션(201)의 실패 조건이 감지될 수 있다. 방법(700)은 또한 716에서 적어도 하나의 계량에 기반해 특정 요소를 실패 조건의 잠재적 원인으로 식별하는 단계를 포함한다. 예를 들면 도 2에서, WCF 요소(206)는 WCF 요소(206)에서의 익셉션들의 수에 기초하여 분산 애플리케이션(201)의 실패 조건의 잠재적 원인으로 식별될 수 있다.
도 7의 방법(700)은 분산 애플리케이션의 요소들을 모니터하고 특정 요소를 모니터링하는 동안에 생성된 계량 값에 기반하여 특정 요소를 분산 애플리케이션에서의 실패의 잠재적 원인으로 식별하는데 사용될 수 있다. 따라서, 도 7의 방법(700)은 분산 애플리케이션에서의 실패 조건을 진단하고 대응하는데 소비되는 시간을 감소시킬 수 있다. 더 나아가 분산 애플리케이션의 요소들을 모니터링하는 동안에 계산된 계량값들(예를 들면 익셉션들 또는 에러들의 수)은 미래의 실패 이벤트들을 예측하고 방지하는데 사용될 수 있다. 예를 들면, 특정 요소에 의해 생성된 익셉션들의 수가 증가하는 경우, IT 관리자들은 특정 요소가 실패하기 전에 특정 요소에 있는 문제점들을 해결할 수 있도록, 익셉션 수의 증가 현상에 대해 통지받을 수 있다.
도 8은 분산 애플리케이션을 모니터링하는 방법(800)의 다른 특정 실시예의 플로우 다이어그램이다. 도시된 실시예에서, 방법(800)은 도 1의 시스템(100) 또는 도 2의 시스템(200)에 의해 수행될 수 있다. 방법(800)은 802에서 분산 애플리케이션의 복수의 요소를 식별하는 단계를 포함한다. 예를 들면 도 2에서, 기술 중립적 인터셉터 관리자(230)는 .NET 요소(205), WCF 요소(206), 자바 요소(207) 또는 어떠한 그들의 조합도 식별할 수 있다. 방법(800)은 또한 804에서 복수의 요소 중의 특정 요소와 결부된 특정 기술을 식별하는 단계를 포함한다. 예를 들면 도 2에서, 기술 중립적 인터셉터 관리자(230)는 WCF 요소(206)가 WCF 기술과 결부되어 있다는 것을 식별할 수 있다.
방법(800)은 더 나아가 806에서 식별된 특정 기술에 기반하여 기술 특정적 인터셉터를 특정 요소에 부가시키는 단계를 포함한다. 예를 들어 도 2에서, 기술 중립적 인터셉터 관리자(230)는 WCF 인터셉터(203)를 WCF 요소(206)에 부가할 수 있다. 방법(800)은 두 가지 경로를 포함한다; 808,810, 812, 그리고 814를 포함하는 이벤트 모니터링 경로; 그리고 816, 818, 820, 822, 그리고 824를 포함하는 활동 모니터링 경로.
이벤트 모니터링 경로 내에서, 방법(800)은 808에서 특정 이벤트의 발생을 추적하기 위해 카운터 모니터를 할당하는 단계를 포함한다. 예를 들면 도 2에서, 카운터 모니터는 WCF 요소(206)에서 익셉션들을 추적하도록 할당될 수 있고, 여기서 카운터 모니터는 WCF 요소(206)에 대한 아이덴티티 모니터(예를 들면 아이덴티티 모니터들(260) 중 하나)의 모니터링 트리 내에 위치한다. 특정 실시예에서, 할당된 카운터 모니터는 도 3의 카운터 모니터(350)를 포함한다. 방법(800)은 또한 810에서 기술 특정적 인터셉터에서의 특정 이벤트와 관련된 메시지를 가로채는 단계를 포함한다. 예를 들면 도 2에서, WCF 인터셉터(203)는 WCF 요소(206)에서 발생하는 익셉션을 나타내는 메시지를 가로챌 수 있다. 방법(800)은 더 나아가 812에서, 특정 이벤트의 발생을 나타내는 작업 항목을 생성하는 단계를 포함한다. 예를 들면 도 2에서, WCF 인터셉터(203)은 WCF 요소(206)에서 익셉션의 발생 나타내는 작업 항목을 생성할 수 있다. 방법(800)은 또한 814에서 카운터 모니터의 하나 또는 그 이상의 클라이언트들에게 특정 이벤트의 발생을 보고하는 단계를 포함한다. 특정 실시예에서, 특정 이벤트의 발생은 하나 이상의 클라이언트들이 카운터 모니터를 조사할 때 보고될 수 있다. 예를 들면 도 2에서, WCF 요소(206)에서 발생하는 익셉션은 WCF 요소(206)에 대한 아이덴티티 모니터(예를 들면 아이덴티티 모니터들(260) 중 하나)게 보고될 수 있다.
활동 모니터링에 대한 경로 내에서, 방법(800)은 816에서 특정 실행 경로를 따라서 활동을 추적하는 활동 모니터를 할당하는 단계를 포함한다. 예를 들면 도 2에서, 활동 사업 관점 모니터(activity business perspective monitor)는 WCF 요소(206)를 포함하는 분산 애플리케이션(201)의 특정 실행 경로를 따라서 활동을 추적하도록 할당될 수 있고, 여기서 활동 사업 관점 모니터는 WCF 요소(206)의 종점 모니터(예를 들면 종점 모니터들(260) 중 하나)의 모니터링 트리 내에 위치한다. 특정 실시예에서, 활동 사업 관점 모니터는 도 3의 사업 관점 모니터(340)를 포함한다. 방법(200)은 또한 818에서 기술 특정적 인터셉터에서의 특정 실행 경로와 관련된 메시지를 가로채는 단계를 포함한다. 예를 들면 도 2에서, WCF 인터셉터(203)는 분산 애플리케이션(201)의 특정 실행 경로를 따르는 활동을 나타내는 메시지를 가로챌 수 있다. 방법(800)은 더 나아가 820에서 특정 실행 경로와 관련된 활동 정보를 포함하는 작업 항목을 생성하는 단계를 포함한다. 예를 들면, 도 2의 WCF 인터셉터(203)는 특정 실행 경로와 관련된 활동 정보를 포함하는 작업 항목을 생성할 수 있다. 방법(800)은 또한 822에서 활동 대기열 내에 활동 정보를 저장하는 단계와 824에서 저장 서비스를 거쳐서 활동 정보를 활동대기열에서 저장부 위치로 이동시키는 단계를 포함한다. 예를 들면 도 2에서, 활동 관리자(270)는 활동 정보를 활동 대기열(280)에 저장할 수 있고 그 후에 저장 서비스(290)를 거쳐서 활동 정보를 활동 대기열(280)에서 저장부 위치로 이동시킬 수 있다.
도 8의 방법(800)은 분산 애플리케이션에서 발생할 수 있는 익셉션들과 에러들 등의 이벤트들을 모니터하는데 사용될 수 있다. 더 나아가 도 8의 방법(800)은 또한 분산 애플리케이션의 특정 실행 경로를 따르는 활동을 추적하는데도 사용될 수 있다. 예를 들면, 도 8의 방법(800)은 IT 관리자들에 의해서 분산 애플리케이션의 실행 경로를 따르는 활동 중 잘못되게 또는 비효율적으로 수행되는 것들을 추적하는데 사용될 수 있다.
도 9는 분산 애플리케이션을 모니터링하는 방법(900)의 다른 특정 실시예의 플로우 다이어그램이다. 도시된 실시예에서, 방법(900)은 도 1의 시스템(100) 또는 도 2의 시스템(200)에 의해 수행될 수 있다. 방법(900)은 902에서 분산 애플리케이션의 복수의 요소들을 식별하는 단계를 포함한다. 예를 들면 도 2에서, 기술 중립적 인터셉터 관리자(230)는 .NET 요소(205), WCF 요소(206), 자바 요소(207), 또는 이들의 어떤 조합도 식별할 수 있다. 방법(900)은 또한 904에서 복수의 요소들 중 특정 요소와 결부되는 특정 기술을 식별하는 단계를 포함한다. 예를 들면 도 2에서, 기술 중립적 인터셉터 관리자(230)는 WCF 요소(206)가 WCF 기술과 결부되어 있음을 식별할 수 있다.
방법(900)은 더 나아가 906에서 기술 특정적 인터셉터를 식별된 특정 기술에 기반하여 특정 요소에 부가시키는 단계를 포함한다. 예를 들면 도 2에서, 기술 중립적 인터셉터 관리자(230)는 WCF 인터셉터(203)를 WCF 요소(206)에 부가시킬 수 있다. 방법(900)은 또한 908에서 특정 요소에서 특정 함수의 실행을 추적하는 작업 호출 모니터를 할당하는 단계를 포함할 수 있다. 예를 들면, 작업 호출 모니터는 WCF 요소(206)에서 특정 함수의 실행을 추적하도록 할당될 수 있고, 여기서 작업 호출 모니터는 WCF 요소(206)를 위한 종점 모니터(예를 들면 종점 모니터들(260) 중 하나)의 모니터링 트리에 위치한다. 특정 실시예에서, 할당된 작업 호출 모니터는 도 3의 작업 호출 목표물 종점 모니터(operation call target endpoint monitor)(370)를 포함할 수 있다.
방법(900)은 910에서 특정 함수와 관련된 특정 요소에 의해 송수신 된 메시지들을 가로채는 단계를 포함한다. 예를 들면 도 2에서, WCF 인터셉터(203)는 WCF 요소(206)에 의해 송수신 된 메시지들을 가로챌 수 있고, 여기서 가로챈 메시지들은 특정 함수와 관련된다. 방법(900)은 또한 912에서 특정 함수의 소스 작업과 특정 함수의 목표물 작업 사이의 의존도를 식별하는 단계를 포함한다. 예를 들면 도 2에서, WCF 인터셉터(203)는 특정 함수의 소스 작업(source operation)과 특정 함수의 목표물 작업(target operation) 사이의 의존도를 식별할 수 있다. 특정 실시예에서, 소스 작업과 목표물 작업은 분산 애플리케이션(201)의 다른 요소들에 위치한다(예를 들면 소스 작업은 WCF 요소(206)에 위치하고 목표물 작업은 .NET 요소(205)에 위치한다).
방법(900)은 더 나아가 916에서 의존도를 의존도 캐시(dependency cache)에 캐시 하는 단계를 포함한다. 예를 들면 도 2에서, 의존도 관리자(272)는 의존도를 의존도 캐시(282)에 캐시 할 수 있다. 방법(900)은 또한 918에서 의존도가 과거에 저장된 적이 있는지 여부를 판단하는 단계를 포함한다. 예를 들면, 도 2의 의존도 관리자(272)는 의존도가 과거에 저장되었던 적이 있는지의 여부를 판단할 수 있다.
의존도의 과거에 저장된 적이 없다면, 방법(900)은 920에서 저장 서비스를 통해서 의존도를 저장부 위치로 이동시키는 단계를 포함한다. 예를 들면 도 2에서, 의존도 관리자(272)는 저장 서비스(290)를 거쳐서 의존도를 의존도 캐시(282)로부터 저장부 위치로 이동시킬 수 있다. 의존도가 과거에 저장된 적이 있었다면, 방법(900)은 922에서 의존도를 저장하지 않는 단계를 포함한다. 예를 들면 도 2에서, 의존도 관리자(272)는 의존도를 저장하지 않고 의존도 캐시(282)로부터 의존도를 삭제할 수 있다.
도 9의 방법(900)은 상호 요소 의존도들을 포함하는 분산 애플리케이션 내의 다양한 소스 작업들과 목표물 작업들 사이의 의존도들을 발견하는데 사용될 수 있다. 더 나아가 도 9의 방법(900)은 발견된 의존도들 중 과거에 저장된 적이 없는 것들만 저장하는 방식으로 이들 의존도 발견의 퍼포먼스 임팩트를 감소시킬 수 있다.
도 10은 기술 중립적 인터셉터 관리자에서 선택적으로 작업 항목의 일정을 잡는 방법(1000)의 특정 실시예의 플로우 다이어그램이다. 도시된 실시예에서, 방법(1000)은 도 1의 기술 중립적 인터셉터 관리자(130) 또는 도 2의 기술 중립적 인터셉터 관리자(230)에 의해 수행될 수 있다. 방법(100)은 1002에서 기술 중립적 인터셉터 관리자에서 분산 애플리케이션의 제 1 요소에 부가된 제 1 기술 특정적 인터셉터로부터 제 1 작업 항목을 수신하는 단계를 포함한다. 제 1 기술 특정적 인터셉터는 제 1 기술에 특정되어 있고, 제 1 요소는 제 1 기술과 결부되어 있다. 예를 들면 도 1에서, 기술 중립적 인터셉터 관리자(130)는 분산 애플리케이션(102) 내의 WCF 요소(110)에 부가되어있는 WCF 인터셉터(112)로부터 제 1 작업 항목을 수신할 수 있다.
방법(1000)은 1004에서 기술 중립적 인터셉터 관리자에서 분산 애플리케이션의 제 2 요소에 부가된 제 2 기술 특정적 인터셉터로부터 제 2 작업 항목을 수신하는 단계를 포함한다. 제 2 기술 인터셉터는 제 2 기술에 특정되어 있고, 제 2 요소는 제 2 기술과 결부되어 있으며, 제 2 기술은 제 1 기술과는 다르다. 예를 들면 도 1에서, 기술 중립적 인터셉터 관리자(130)는 분산 애플리케이션(102) 내의 .NET 요소(120)에 부가되어있는 .NET 인터셉터(122)로부터 제 2 작업 항목을 수신할 수 있다.
방법(1000)은 더 나아가 1006에서, 제 1 작업 항목과 제 2 작업 항목의 실행 일정을 잡을지의 여부를 판단하는 단계를 포함한다. 판단은 분산 애플리케이션에 미치는 제 1 작업 항목의 제 1 임팩트와 분산 애플리케이션의 제 2 작업 항목의 예상되는 임팩트를 기초로 이루어진다. 예를 들면 도 1에서, WCF 작업 항목 일정 로직(144)은 분산 애플리케이션(102)에 미치는 제 1 작업 항목의 제 1 임팩트에 기반해서 제 1 작업 항목의 일정을 잡을지의 여부를 판단할 수 있고, .NET 작업 항목 일정 로직(154)은 분산 애플리케이션(102)에 미치는 제 2 작업 항목의 제 2 임팩트에 기반해서 제 2 작업 항목의 일정을 잡을지의 여부를 판단할 수 있다.
도 10의 방법(1000)은 기술 중립적 인터셉터 관리자(도 1의 기술 중립적 인터셉터 관리자(130) 또는 도 2의 기술 중립적 인터셉터 관리자(230))가 작업 항목의 예상되는 임팩트를 기초로 작업 항목들의 실행 일정을 선택적으로 잡는데 사용될 수 있다. 따라서 도 10의 방법(1000)은 기술 중립적 인터셉터 관리자가 실시간, 준 실시간, 업무-필수적(mission critical) 분산 애플리케이션의 통상적 퍼포먼스를 방해하는 것을 피하는데 사용될 수 있다. 기술 중립적 인터셉터 관리자는 실시간, 준 실시간, 업무-필수적 분산 애플리케이션에 미치는 예상되는 임팩트가 큰 경우에는 작업 항목들의 일정을 잡을 수 없다.
도 11은 분산 컴퓨터 환경(1100)의 특정 실시예를 도시하는 일반적인 다이어그램이다. 분산 컴퓨터 환경(1100)은 분산 애플리케이션(1110)을 포함할 수 있고, 분산 애플리케이션(1110)은 모니터 된 웹 클라이언트(monitored web client)(1111), 모니터 된 웹 서버(1112), 모니터 된 애플리케이션 서버(1113), 그리고 모니터 된 데이터베이스 서버(1114)와 같은 하나 이상의 모니터 된 애플리케이션 요소들을 포함한다. 분산 컴퓨터 환경(1100)은 또한 분산 애플리케이션(1110)의 요소들에 통신적으로 연결된 관리 서버(1120), 루트 관리 서버(root management server)(1130), 작업 데이터베이스 서버(1140), 그리고 데이터웨어하우스 서버(datawarehouse server)(1150)를 포함할 수 있다. 특정 실시예에서, 분산 컴퓨터 환경(1110)은 또한 분산 애플리케이션(1110)을 위해 모니터링 보고들을 생성하도록 설정된 보고 서버(report server)(1160)를 포함한다. 도시된 실시예에서, 분산 애플리케이션(1110)은 도 1의 분산 애플리케이션(102) 또는 도 2의 분산 애플리케이션(201)을 포함할 수 있다.
관리 서버(1120)는 도 1의 기술 중립적 인터셉터 관리자(130) 또는 도 2의 기술 중립적 인터셉터 관리자(230)와 같은 기술 중립적 인터셉터 관리자를 포함한다. 관리 서버(1120)는 또한 루트 관리 서버(1130)와 통신할 수 있다. 관리 서버(1120)는 작업 데이터베이스 서버(1140)와 데이터웨어하우스 서버(1150)로부터 의존도 데이터와 활동 데이터와 같은 정보를 저장하거나 검색할 수 있다. 특정 실시예에서, 관리 서버(1120)는 보고 서버(1160)를 통해서 발견 데이터와 의존도 데이터를 포함하는 모니터링 보고들을 생성하도록 설정된다.
작업 중에, 모니터된 웹 클라이언트(1111), 모니터된 웹 서버(1112), 모니터된 애플리케이션 서버(1113), 그리고 모니터 된 데이터베이스 서버(1114)는 하나 이상의 부가된 기술 특정적 인터셉터들에 의해 모니터 될 수 있다. 기술 특정적 인터셉터들은 작업 항목들을 생성하고, 작업 항목들을 관리 서버(1120)의 기술 중립적 인터셉터 관리자에게 보낼 수 있다. 그리고 나서 관리 서버(1120)의 기술 중립적 인터셉터 관리자는 분산 애플리케이션(1110)에 미치는 예상되는 임팩트 또는 특정 분산 애플리케이션 요소(예를 들면 요소들(1111-1114)중 하나)에 미치는 예상되는 임팩트를 기초로 하여 수신된 작업 항목들의 실행 일정을 선택적으로 잡을 수 있다.
관리 서버(1120)는 다양한 종류의 분산 애플리케이션 요소들(예를 들면 웹 클라이언트들, 웹 서버들, 애플리케이션 서버들, 그리고 데이터베이스 서버들)에서의 함수 호출 실행, 활동, 그리고 이벤트들을 모니터할 수 있다.
도 12는 본 개시물에 따른 컴퓨터 구현 방법, 컴퓨터 프로그램 제품, 및 시스템 요소들의 실시예들을 지원하도록 운용되는 컴퓨터 장치(1210)를 포함하는 컴퓨터 환경(1200)의 블록 다이어그램이다.
컴퓨터 장치(1210)는 일반적으로 적어도 하나의 프로세서(1220)와 시스템 메모리(1230)를 포함한다. 정확한 구성과 컴퓨터 장치의 종류에 따라서, 시스템 메모리(1230)는 휘발성(예를 들면 RAM), 비휘발성(예를 들면 ROM, 플래시 메모리, 그리고 전원 미공급시에도 저장된 데이터를 유지하는 유사한 메모리 장치들) 또는 그들의 조합일 수 있다. 시스템 메모리(1230)는 일반적으로 운용 체제(1232), 하나 이상의 애플리케이션 플랫폼(1234), 하나 이상의 애플리케이션들(1236)을 포함하고, 프로그램 데이터(1238)를 포함할 수 있다. 예를 들면, 시스템 메모리(1230)는 도 1의 WCF 요소(110), 도 2의 WCF 요소(206), 도 1의 .NET 요소(120), 도 2의 .NET 요소(205), 또는 도 2의 자바 요소(207)와 같은 하나 이상의 분산 애플리케이션의 요소들을 포함할 수 있다. 컴퓨터 장치(1210)가 요소를 포함하는 경우에, 컴퓨터 장치(1210)는 또한 요소에 부가된 하나 이상의 기술 특정적 인터셉터도 포함할 수 있다. 예를 들면, 컴퓨터 장치(1210)는 도 1의 WCF 인터셉터(112), 도 2의 WCF 인터셉터(203), 도 1의 .NET 인터셉터(122), 도 2의 .NET 인터셉터(202), 또는 도 2의 자바 인터셉터(204)를 포함할 수 있다. 다른 실시예에서, 시스템 메모리(1230)는 도 1의 기술 중립적 인터셉터 관리자(130) 또는 도 2의 기술 중립적 인터셉터 관리자(230)를 포함할 수 있다.
특정 실시예에서, 분산 애플리케이션(예를 들면 도 1의 분산 애플리케이션(102) 또는 도 2의 분산 애플리케이션(201))은 복수의 컴퓨터 장치들(예를 들면 컴퓨터 장치(1210))를 포함할 수 있고, 각각의 이런 컴퓨터 장치는 하나 이상의 분산 애플리케이션의 요소들을 포함할 수 있다.
컴퓨터 장치(1210)는 또한 추가적인 특징이나 함수를 가질 수 있다. 예를 들면, 컴퓨터 장치(1210)는 자기 디스크, 광학 디스크, 테이프, 그리고 표준화된 또는 축소된 플래시 메모리카드와 같은 이동식 및/또는 고정식 추가적 데이터 저장 장치들을 포함할 수 있다. 이런 추가적인 저장부는 도 12에서 이동식 저장부(1240)와 고정식 저장부(1250)로 도시된다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 명령들, 데이터 구조들, 프로그램 요소들 또는 다른 데이터 등과 같은 정보를 저장하는 어떤 기술 또는 방법으로 구현되는 휘발성 및/또는 비휘발성 그리고 이동식 및/또는 고정식 매체를 포함할 수 있다. 시스템 메모리(1230), 이동식 저장부(1240), 고정식 저장부(1250)는 모두 컴퓨터 저장 매체의 예시들에 해당한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM(electrically erasable programmable read-only memory), 플래시 메모리 또는 다른 메모리 기술, CD, DVD 또는 다른 광학 저장부, 자기 카세트, 자기 테이프, 자기 디스크 저장부 또는 다른 자기 저장 장치들, 또는 요구되는 정보를 저장하는데 사용되고 컴퓨터 장치(1210)에 의해 접속될 수 있는 어떤 다른 매체들을 포함하나 이에 한정되지는 않는다. 이러한 모든 컴퓨터 저장 매체는 컴퓨터 장치(1210)의 일부일 수 있다. 컴퓨터 장치(1210)는 키보드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치 등의 입력 장치(들)(1260)를 가질 수 있다. 디스플레이, 스피커들, 프린터 등의 출력 장치(들)(1270)도 포함될 수 있다.
컴퓨터 장치(1210)는 또한 컴퓨터 장치(1210)가 하나 이상의 클라이언트 컴퓨터 시스템 또는 다른 서버들과 같은 다른 컴퓨터 장치들과 무선 또는 유선 네트워크상에서 통신할 수 있게 해주는 하나 이상의 통신 연결부들(communication connections)(1280)을 포함한다. 예를 들면, 하나 이상의 통신 연결부들(1280)은 도 5의 네트워크 인터페이스들(512 또는 542)을 포함할 수 있다. 하나 또는 그 이상의 통신 연결부들(1280)은 통신 매체의 예에 해당한다. 한정적 의미가 아닌 예시를 통해서, 통신 매체는 유선 네트워크 또는 직접-유선 연결(direct-wired connection)과 같은 유선 매체와, 음향(acoustic), RF, 적외선 그리고 다른 무선 매체 등의 무선 매체 등을 포함한다. 그러나 도 12에 도시됐거나 그 외에 위에서 상술된 모든 요소들 또는 장치들이 여기서 제시된 실시예들을 지지하는데 반드시 필요한 것은 아니다.
여기서 서술된 실시예들의 도해들은 다양한 실시예들의 구조의 대략적인 이해를 돕기 위한 것이다. 도해들은 여기 기술된 구조 또는 방법을 사용하는 기구 및 시스템의 모든 요소 및 특성의 완전한 서술을 위한 것이 아니다. 본 명세서를 읽은 당업자들에게는 많은 다른 실시예들이 가능함이 명백할 것이다. 다른 실시예들이 제시된 내용으로부터 활용될 수 있고 파생될 수 있는데, 제시된 내용으로부터 벗어나지 않으면서도 구조적 및 논리적 대체와 변화들이 이루어질 수 있다.
당업자들은 더 나아가 여기 서술된 실시예와 관련되어 서술된 다양한 도해적 논리 블록들, 설정들, 모듈들, 회로들, 그리고 알고리즘 스텝들(algorithm steps)은 전자 제품, 컴퓨터 소프트웨어, 또는 그들의 조합의 형태로 구현될 수 있음을 인지할 것이다. 하드웨어와 소프트웨어, 다양한 도해 요소들, 블록들, 설정들, 모듈들, 회로들, 또는 단계들의 교환 가능성을 명확하게 보여주기 위해서, 그들은 일반적으로 그들의 기능의 관점에서 서술되고 있다. 이들 기능들이 소프트웨어 또는 하드웨어 어느 측면에서 구현될지의 여부는 특정 애플리케이션과 시스템 전체에 가해지는 디자인 상의 제한들에 달려있다. 당업자들은 각각의 특정 애플리케이션을 위해서 다양한 방식으로 서술된 기능들을 구현할 수 있지만, 이런 구현 결정들이 현재 개시된 내용의 범위 밖으로 나가는 것으로 해석돼서는 안 될 것이다.
여기서 개시된 실시예들에 관련되어 서술된 방법의 단계들은 직접적으로 하드웨어에, 프로세서에 의해 실행되는 소프트웨어 모듈에, 또는 그들의 조합에 의해 구현될 수 있다. 소프트웨어 모듈은 RAM, 플래시 메모리, ROM, 레지스터들, HD, 이동식 디스크, CD-ROM 또는 어떤 다른 저장 매체와 같은 컴퓨터 판독 가능 매체 안에 위치할 수 있다. 예시적 저장 매체는 프로세서가 저장 매체의 정보를 읽고 거기에 쓸 수 있도록 프로세서와 연결되어 있다. 대안으로, 저장 매체는 프로세서와 병합되어 있을 수도 있고, 프로세서와 저장 매체는 컴퓨터 시스템 내에서 독립된 요소로 위치할 수도 있다.
구체적 실시예들이 도시되어 서술되었지만, 동일 또는 유사한 목적을 달성하기 위해 구성되는 어떤 차후 방식들도 상술된 특정 실시예들을 대체할 수 있다. 개시된 내용은 어떠한 그리고 모든 차후 변경들 또는 다양한 실시예들의 변화들을 포함한다.
본 명세서의 요약은 청구항의 의미 또는 범위를 제한 또는 해석하는 의도로 서술된 것이 아니다. 추가로, 상술한 상세한 설명에서, 개시된 내용들을 간명하게 하려는 목적으로 다양한 특성들이 하나로 집단화되거나 단일 실시예에서 서술될 수 있다. 개시된 내용은 주장된 실시예들이 각각의 청구항에서 서술된 내용보다 더 많은 특성을 요구하지는 않는 것으로 이해되어야 한다. 오히려, 후술 되는 청구항들에서 나타나듯이, 본 발명의 주제는 개시된 실시예들의 모든 요소 미만일 수 있다.
본 명세서는 당업자가 개시되어 있는 실시예를 실시 또는 사용할 수 있도록 제공된다. 본 발명이 속한 분야의 당업자라면 상술된 설명 및 첨부된 도면 내에 제시된 개시 내용의 이점을 가지면서 본 명세서에 제시된 본 발명의 여러 수정 및 다른 실시예를 생각해 낼 수 있을 것이다. 그러므로 본 발명은 개시되어 있는 특정한 실시예로 한정되지 않고, 첨부된 청구항에 의해 정의된 원리 및 신규한 특징에 부합하는 가장 넓은 범주를 따를 것이다.

Claims (15)

  1. 모니터링 방법에 있어서,
    분산 애플리케이션(102)의 복수의 요소들(110,120)을 식별하는 단계(502)와,
    상기 복수의 요소들(110,120)의 특정 요소(110)와 결부된 특정 기술을 식별하는 단계(504)와,
    상기 식별된 특정 기술에 기반해서 기술 특정적 인터셉터(112)를 상기 특정 요소(110)에 부가하고 상기 부가된 기술 특정적 인터셉터(112)를 사용해서 상기 특정 요소(110)에 의해서 송수신 되는 메시지들을 가로채는 단계(506)와,
    상기 가로챈 메시지들에 기반해서 적어도 하나의 잠재적 작업 항목을 생성하는 단계(508)와,
    상기 분산 애플리케이션(102)의 퍼포먼스에 미치는 상기 적어도 하나의 잠재적 작업 항목의 예상되는 임팩트에 기반해서 상기 적어도 하나의 작업 항목의 실행 일정을 잡을지의 여부를 판단하는 단계(510)를 포함하는
    모니터링 방법.
  2. 제 1 항에 있어서,
    상기 적어도 하나의 잠재적 작업 항목의 상기 예상되는 임팩트가 수용 가능한 퍼포먼스 임팩트 임계값(threshold) 미만인 경우에 상기 적어도 하나의 잠재적 작업 항목의 실행 일정이 잡히고, 상기 적어도 하나의 잠재적 작업 항목의 상기 예상되는 임팩트가 상기 수용 가능한 퍼포먼스 임팩트 임계값을 초과하는 경우에는 상기 적어도 하나의 잠재적 작업 항목의 실행 일정이 잡히지 않는
    모니터링 방법
  3. 제 1 항에 있어서,
    상기 적어도 하나의 잠재적 작업 항목의 상기 예상되는 임팩트가 상기 분산 애플리케이션에서 프로세서 활용, 상기 분산 애플리케이션에서 메시지 대기 시간(latency), 상기 분산 애플리케이션에서 실행 대기열의 길이, 또는 이들의 모든 조합들에 미치는 영향을 나타내는
    모니터링 방법.
  4. 제 1 항에 있어서,
    작업 항목 만료 기간 안에 일정이 잡히지 않으면 상기 적어도 하나의 잠재적 작업 항목이 만료되는
    모니터링 방법.
  5. 제 1 항에 있어서,
    상기 분산 애플리케이션에서 상기 적어도 하나의 잠재적 작업 항목을 실행하는 단계를 더 포함하고,
    상기 적어도 하나의 잠재적 작업 항목이, 상기 분산 애플리케이션과 관련된 발견된 의존도 정보를 저장하는 명령들과, 상기 분산 애플리케이션과 관련된 모니터 된 활동 정보를 저장하는 명령들과, 상기 분산 애플리케이션과 관련된 퍼포먼스 카운터 정보를 보고하는 명령들, 또는 이들의 모든 조합을 포함하는
    모니터링 방법.
  6. 제 5 항에 있어서,
    상기 가로챈 메시지들에 기반해서 상기 특정 요소에서의 특정 기능의 실행을 추적하는 작업 호출 모니터를 할당하는 단계를 더 포함하는
    모니터링 방법.
  7. 제 6 항에 있어서,
    상기 특정 기능이 소스 작업과 목표물 작업을 가지고, 상기 적어도 하나의 잠재적 작업 항목이 상기 소스 작업과 상기 목표물 작업 사이의 의존도를 나타내고, 상기 적어도 하나의 잠재적 작업 항목을 실행하는 단계는 의존도 캐시 안에 의존도를 저장하는 단계를 포함하는
    모니터링 방법.
    .
  8. 제 7 항에 있어서,
    상기 의존도가 과거에 저장된 적이 없다는 판단에 대한 응답으로, 상기 의존도를 저장 서비스를 거쳐서 상기 의존도 캐시에서 저장부 장소로 이동시키는 단계를 더 포함하는
    모니터링 방법.
  9. 제 5 항에 있어서,
    상기 특정 요소에서의 특정 실행 경로의 활동을 추적하는 활동 모니터를 할당하는 단계를 더 포함하고,
    상기 적어도 하나의 잠재적 작업 항목은 상기 특정 실행 경로와 관련되는 활동 정보를 포함하고, 상기 적어도 하나의 잠재적 작업 항목을 실행하는 단계가 활동 대기열 안에 활동 정보를 저장하는 단계를 포함하는
    모니터링 방법.
  10. 제 9 항에 있어서,
    상기 활동 정보를 저장 서비스를 거쳐서 상기 활동 대기열에서 저장부 장소로 이동시키는 단계를 더 포함하는
    모니터링 방법.
  11. 제 5 항에 있어서,
    상기 가로챈 메시지들에 기반해서 특정 이벤트의 발생을 추적하는 카운터 모니터를 할당하는 단계를 더 포함하고,
    상기 적어도 하나의 잠재적 작업 항목이 적어도 하나의 상기 특정 이벤트의 발생을 나타내고, 상기 적어도 하나의 잠재적 작업 항목을 실행하는 단계가 상기 카운터 모니터의 하나 또는 그 이상의 클라이언트들에게 상기 적어도 하나의 상기 특정 이벤트의 발생을 보고하는 단계를 포함하는
    모니터링 방법.
  12. 제 1 항에 있어서,
    상기 분산 애플리케이션과 관련된 적어도 하나의 계량 값(metric)을 계산하는 단계와,
    상기 분산 애플리케이션의 실패 조건을 감지하는 단계와,
    상기 적어도 하나의 계량 값에 기반해서 상기 특정 요소를 상기 실패 조건의 잠재적 원인으로 식별하는 단계를 더 포함하고,
    상기 적어도 하나의 계량 값이 생성된 익셉션들의 수, 보고된 에러들의 수, 또는 그들의 모든 조합을 포함하는
    모니터링 방법.
  13. 모니터링 시스템에 있어서,
    제 1 기술과 결부된 제 1 기술 특정적 인터셉터(202)와 상기 제 1 기술과는 다른 제 2 기술과 결부된 제 2 기술 특정적 인터셉터(203)를 포함하는 복수의 기술 특정적 인터셉터들; 및 기술 중립적 인터셉터 관리자(230)를 포함하고,
    상기 제 1 기술 특정적 인터셉터(202)는,
    제 1 분산 애플리케이션 요소(205)에 의해서 송수신 된 메시지들을 가로채는 단계를 포함하는, 상기 제 1 기술과 결부된 상기 제 1 분산 애플리케이션 요소(205)의 작업을 추적하고,
    상기 제 1 분산 애플리케이션 요소(205)의 상기 추적된 작업에 기반해서 작업 항목들을 생성하고,
    상기 제 1 분산 애플리케이션 요소(205)의 상기 추적된 작업에 기반한 상기 작업 항목들을 상기 기술 중립적 인터셉터 관리자(230)로 전송하도록 구성되고,
    상기 제 2 기술 특정적 인터셉터(203)는,
    제 2 분산 애플리케이션 요소(206)에 의해서 송수신 된 메시지들을 가로채는 단계를 포함하는, 상기 제 2 기술과 결부된 상기 제 2 분산 애플리케이션 요소(206)의 작업을 추적하고,
    상기 제 2 분산 애플리케이션 요소(206)의 상기 추적된 작업에 기반해서 작업 항목들을 생성하고,
    상기 제 2 분산 애플리케이션 요소(206)의 상기 추적된 작업에 기반한 상기 작업 항목들을 상기 기술 중립적 인터셉터 관리자(230)로 전송하도록 구성되고,
    상기 기술 중립적 인터셉터 관리자(230)는 상기 제 1 기술 특정적 인터셉터(202)와 결부된 제 1 기술 항목 관리자와 상기 제 2 기술 특정적 인터셉터(203)와 결부된 제 2 기술 항목 관리자를 포함하는 복수의 작업 항목 관리자(240)를 포함하고,
    각각의 작업 항목 관리자들(240)이 특정 기술 특정적 인터셉터와 결부되어 있고,
    상기 각각의 작업 항목 관리자들(240)은,
    상기 특정 기술 특정적 인터셉터로부터 작업 항목들을 수신하고,
    상기 수신된 작업 항목들을 작업 항목 대기열(242)에 대기시키고,
    상기 특정 기술 특정적 인터셉터에 의해 추적된 분산 애플리케이션 요소의 퍼포먼스에 미치는 특정 작업 항목의 임팩트를 수용 가능한 퍼포먼스 임팩트 임계값과 비교하고,
    상기 임팩트가 상기 수용 가능한 퍼포먼스 임팩트 임계값에 미치지 못하면 상기 특정 작업 항목의 실행 일정을 잡고;
    상기 임팩트가 상기 수용 가능한 퍼포먼스 임팩트 임계값을 넘는 경우에는 상기 특정 작업 항목의 실행 일정을 잡지 않고 상기 특정 작업 항목을 중단하도록 구성되는
    모니터링 시스템.
  14. 제 13 항에 있어서,
    각각의 기술 특정적 인터셉터는 결부된 작업 항목 관리자로부터 빈 작업 항목을 요청하고, 상기 빈 저장 항목 내에 정보를 저장하는 방식으로 작업 항목을 생성하고, 그리고 상기 생성된 작업 항목을 상기 기술 중립적 인터셉터 관리자에게 보내도록 더 구성되는
    모니터링 시스템.
  15. 상기 13 항에 있어서,
    각각의 상기 작업 항목 관리자들은,
    동시 병행적으로 실행되는 작업 항목들의 수를 제한하고,
    상기 작업 항목 대기열의 크기를 제한하고,
    상기 작업 항목 대기열이 꽉 찼을 때에는 수신된 작업 항목들을 거부하고,
    스레드 풀의 포그라운드 스레드 또는 상기 스레드 풀의 백그라운드 스레드 안에서 특정 작업 항목의 실행 일정을 잡고,
    상기 스레드 풀의 동시 병행적으로 실행 중인 스레드들의 수를 제한하도록 더 구성된
    모니터링 시스템.
KR1020117022325A 2009-03-24 2010-03-19 분산 애플리케이션들을 모니터링 하는 방법 KR101683321B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/409,547 2009-03-24
US12/409,547 US8893156B2 (en) 2009-03-24 2009-03-24 Monitoring of distributed applications
PCT/US2010/028024 WO2010111145A2 (en) 2009-03-24 2010-03-19 Monitoring of distributed applications

Publications (2)

Publication Number Publication Date
KR20110129926A true KR20110129926A (ko) 2011-12-02
KR101683321B1 KR101683321B1 (ko) 2016-12-06

Family

ID=42781786

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117022325A KR101683321B1 (ko) 2009-03-24 2010-03-19 분산 애플리케이션들을 모니터링 하는 방법

Country Status (7)

Country Link
US (1) US8893156B2 (ko)
EP (1) EP2411927B1 (ko)
JP (1) JP5474177B2 (ko)
KR (1) KR101683321B1 (ko)
CN (1) CN102369523B (ko)
CA (1) CA2753019C (ko)
WO (1) WO2010111145A2 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8601443B2 (en) * 2008-02-12 2013-12-03 International Business Machines Corporation Method and system for correlating trace data
US20110252422A1 (en) * 2010-04-07 2011-10-13 Apple Inc. Opportunistic Multitasking
US9697009B2 (en) * 2010-06-25 2017-07-04 AVG Netherlands B.V. Method for improving the performance of computers
WO2012038949A1 (en) * 2010-08-09 2012-03-29 Neebula Systems Ltd. System and method for storing a skeleton representation of an application in a computerized organization
US9122803B1 (en) * 2010-10-26 2015-09-01 Interactive TKO, Inc. Collaborative software defect detection
US9292329B2 (en) 2011-02-10 2016-03-22 Microsoft Technology Licensing, Llc Virtual switch interceptor
US9544353B2 (en) * 2011-06-16 2017-01-10 Microsoft Technology Licensing, Llc Dynamic activation of web applications
US9027141B2 (en) * 2012-04-12 2015-05-05 Netflix, Inc. Method and system for improving security and reliability in a networked application environment
US9405602B1 (en) * 2012-06-25 2016-08-02 Google Inc. Method for application notification and tasking
CN103823659A (zh) * 2012-11-19 2014-05-28 苏州博远容天信息科技有限公司 一种通讯多线程技术
US8954546B2 (en) * 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
KR102083316B1 (ko) 2013-04-24 2020-04-14 삼성전자주식회사 사용자 디바이스의 메모리 관리 방법 및 장치
US9336068B2 (en) 2013-06-07 2016-05-10 Apple Inc. Throttling of application access to resources
US9250953B2 (en) 2013-11-12 2016-02-02 Oxide Interactive Llc Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system
US9405603B2 (en) * 2014-04-18 2016-08-02 AppDynamics, Inc. Naming of nodes in net framework
US9998348B2 (en) * 2014-07-31 2018-06-12 Cisco Technology, Inc. Monitoring a business transaction utilizing PHP engines
CN106326099B (zh) * 2015-07-01 2019-10-29 阿里巴巴集团控股有限公司 一种用于程序跟踪的方法、装置及电子设备
US20170289242A1 (en) * 2016-03-31 2017-10-05 David Keppel Technologies for dynamic work queue management
US10365909B2 (en) * 2016-04-21 2019-07-30 Data Accelerator Ltd. Method and system for deploying virtualized applications
WO2017189006A1 (en) * 2016-04-29 2017-11-02 Appdynamics Llc Predictive rollup and caching for application performance data
US10210020B2 (en) * 2016-06-29 2019-02-19 International Business Machines Corporation Scheduling requests in an execution environment
CN107291601B (zh) * 2017-06-12 2021-01-22 北京奇艺世纪科技有限公司 一种安全运维方法及系统
US10416974B2 (en) 2017-10-06 2019-09-17 Chicago Mercantile Exchange Inc. Dynamic tracer message logging based on bottleneck detection
US10841236B1 (en) * 2018-03-30 2020-11-17 Electronic Arts Inc. Distributed computer task management of interrelated network computing tasks
US11321135B2 (en) * 2019-10-31 2022-05-03 Oracle International Corporation Rate limiting compliance assessments with multi-layer fair share scheduling
US11500700B2 (en) 2020-05-28 2022-11-15 International Business Machines Corporation Leasing prioritized items in namespace indices
US11188419B1 (en) 2020-05-28 2021-11-30 International Business Machines Corporation Namespace indices in dispersed storage networks
US11243695B2 (en) 2020-05-28 2022-02-08 International Business Machines Corporation Leasing unordered items in namespace indices
US11194660B1 (en) 2020-05-28 2021-12-07 International Business Machines Corporation Listing and protocol for namespace index
DE102020209512A1 (de) 2020-07-28 2022-02-03 Volkswagen Aktiengesellschaft Verfahren und Vorrichtung zum Bestimmen eines Betriebszustands mindestens einer Anwendung
CN111897600A (zh) * 2020-07-31 2020-11-06 惠州Tcl移动通信有限公司 减少应用内存占用的方法、装置、移动终端及系统
US11886920B2 (en) * 2021-03-19 2024-01-30 Shopify Inc. Methods and apparatus for load sharing between primary and secondary computing environments based on expected completion latency differences
CN114745153B (zh) * 2022-03-10 2024-02-27 北京汇元网科技股份有限公司 WCF和log4net结合的链路跟踪方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001519942A (ja) * 1997-03-20 2001-10-23 ファーストセンス ソフトウェア インク 分散アプリケーションを監視するシステムおよび方法
KR20050007307A (ko) * 2002-04-19 2005-01-17 컴퓨터 어소시에이츠 싱크, 인코포레이티드 컴퓨터 애플리케이션을 모니터링하는 시스템 및 방법
JP2005531070A (ja) * 2002-06-25 2005-10-13 インターナショナル・ビジネス・マシーンズ・コーポレーション 分散環境中でアプリケーションの性能を監視するための方法およびシステム
US20070083813A1 (en) * 2005-10-11 2007-04-12 Knoa Software, Inc Generic, multi-instance method and GUI detection system for tracking and monitoring computer applications

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4694396A (en) * 1985-05-06 1987-09-15 Computer X, Inc. Method of inter-process communication in a distributed data processing system
US5938749A (en) * 1996-06-03 1999-08-17 Whittaker Communications Inc. Queue measurement apparatus and methodology
US5832515A (en) * 1996-09-12 1998-11-03 Veritas Software Log device layered transparently within a filesystem paradigm
US6535878B1 (en) * 1997-05-02 2003-03-18 Roxio, Inc. Method and system for providing on-line interactivity over a server-client network
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6279001B1 (en) * 1998-05-29 2001-08-21 Webspective Software, Inc. Web service
US6182136B1 (en) * 1998-09-08 2001-01-30 Hewlett-Packard Company Automated service elements discovery using core service specific discovery templates
US6611955B1 (en) * 1999-06-03 2003-08-26 Swisscom Ag Monitoring and testing middleware based application software
US6748555B1 (en) * 1999-09-09 2004-06-08 Microsoft Corporation Object-based software management
US6604125B1 (en) * 1999-09-24 2003-08-05 Sun Microsystems, Inc. Mechanism for enabling a thread unaware or non thread safe application to be executed safely in a multi-threaded environment
US6457142B1 (en) * 1999-10-29 2002-09-24 Lucent Technologies Inc. Method and apparatus for target application program supervision
US6460055B1 (en) * 1999-12-16 2002-10-01 Livevault Corporation Systems and methods for backing up data files
US6792456B1 (en) * 2000-05-08 2004-09-14 International Business Machines Corporation Systems and methods for authoring and executing operational policies that use event rates
US6792466B1 (en) * 2000-05-09 2004-09-14 Sun Microsystems, Inc. Trusted construction of message endpoints in a distributed computing environment
US20020184363A1 (en) * 2001-04-20 2002-12-05 Steven Viavant Techniques for server-controlled measurement of client-side performance
JP2002351852A (ja) * 2001-05-28 2002-12-06 Mitsubishi Electric Corp システム運用管理方式
US7584418B2 (en) * 2001-05-31 2009-09-01 Oracle International Corporation Methods, systems, and articles of manufacture for prefabricating an information page
US7155728B1 (en) * 2001-06-28 2006-12-26 Microsoft Corporation Remoting features
AU2002313583A1 (en) * 2001-08-01 2003-02-17 Actona Technologies Ltd. Virtual file-sharing network
US6847854B2 (en) * 2001-08-10 2005-01-25 Rockwell Automation Technologies, Inc. System and method for dynamic multi-objective optimization of machine selection, integration and utilization
US8473922B2 (en) * 2001-09-19 2013-06-25 Hewlett-Packard Development Company, L.P. Runtime monitoring in component-based systems
US6910092B2 (en) * 2001-12-10 2005-06-21 International Business Machines Corporation Chip to chip interface for interconnecting chips
GB2383437B (en) * 2001-12-20 2004-02-04 Sun Microsystems Inc System trace unit
US7228354B2 (en) * 2002-06-28 2007-06-05 International Business Machines Corporation Method for improving performance in a computer storage system by regulating resource requests from clients
US7418494B2 (en) * 2002-07-25 2008-08-26 Intellectual Ventures Holding 40 Llc Method and system for background replication of data objects
US20040025162A1 (en) * 2002-07-31 2004-02-05 Fisk David C. Data storage management system and method
US7240325B2 (en) * 2002-09-11 2007-07-03 International Business Machines Corporation Methods and apparatus for topology discovery and representation of distributed applications and services
US7448066B2 (en) * 2002-09-19 2008-11-04 International Business Machines Corporation Application server object-level security for distributed computing domains
US7194664B1 (en) * 2003-09-08 2007-03-20 Poon Fung Method for tracing application execution path in a distributed data processing system
US7409676B2 (en) * 2003-10-20 2008-08-05 International Business Machines Corporation Systems, methods and computer programs for determining dependencies between logical components in a data processing system or network
JP4330429B2 (ja) * 2003-11-05 2009-09-16 株式会社日立製作所 プロファイル情報の取得装置及び方法
US20050267954A1 (en) * 2004-04-27 2005-12-01 Microsoft Corporation System and methods for providing network quarantine
US7805509B2 (en) * 2004-06-04 2010-09-28 Optier Ltd. System and method for performance management in a multi-tier computing environment
US20060004767A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for collecting, representing, transmitting, and interpreting usage and state data for software
US20060085420A1 (en) * 2004-09-27 2006-04-20 Symphoniq Corp. Method and apparatus for monitoring real users experience with a website
US7624176B2 (en) * 2004-10-14 2009-11-24 International Business Machines Corporation Method and system for programmatically generating synthetic transactions to monitor performance and availability of a web application
US7552212B2 (en) * 2004-10-22 2009-06-23 International Business Machines Corporation Intelligent performance monitoring based on user transactions
JP3945521B2 (ja) * 2005-06-13 2007-07-18 株式会社日立製作所 分散処理システム及びその性能モニタリング方法
US7734768B2 (en) * 2005-07-26 2010-06-08 International Business Machines Corporation System and method for adaptively collecting performance and event information
US7891000B1 (en) * 2005-08-05 2011-02-15 Cisco Technology, Inc. Methods and apparatus for monitoring and reporting network activity of applications on a group of host computers
US7499951B2 (en) * 2005-11-18 2009-03-03 Oracle International Corporation Capturing data from user selected portions of a business process and transferring captured data to user identified destinations
US7672983B2 (en) * 2005-12-19 2010-03-02 Sun Microsystems, Inc. Method and apparatus for tracking activity of a garbage collector with a plurality of threads that operate concurrently with an application program
US8856862B2 (en) * 2006-03-02 2014-10-07 British Telecommunications Public Limited Company Message processing methods and systems
US20080005520A1 (en) * 2006-06-09 2008-01-03 Siegwart David K Locality with parallel hierarchical copying garbage collection
US7814486B2 (en) * 2006-06-20 2010-10-12 Google Inc. Multi-thread runtime system
US20080016115A1 (en) * 2006-07-17 2008-01-17 Microsoft Corporation Managing Networks Using Dependency Analysis
US8234631B2 (en) * 2007-08-14 2012-07-31 Dynatrace Software Gmbh Method and system for tracing individual transactions at the granularity level of method calls throughout distributed heterogeneous applications without source code modifications
US20080148242A1 (en) * 2006-12-18 2008-06-19 Computer Associates Think, Inc. Optimizing an interaction model for an application
US8644305B2 (en) * 2007-01-22 2014-02-04 Synopsys Inc. Method and system for modeling a bus for a system design incorporating one or more programmable processors
CN101242392B (zh) * 2007-02-06 2012-02-08 国际商业机器公司 用于系列服务消息处理的方法、设备和系统
EP1975830A1 (en) 2007-03-30 2008-10-01 British Telecommunications Public Limited Company Distributed computer system
US9645845B2 (en) * 2007-09-27 2017-05-09 Sap Se Triggering job execution in application servers based on asynchronous messages sent by scheduling tasks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001519942A (ja) * 1997-03-20 2001-10-23 ファーストセンス ソフトウェア インク 分散アプリケーションを監視するシステムおよび方法
KR20050007307A (ko) * 2002-04-19 2005-01-17 컴퓨터 어소시에이츠 싱크, 인코포레이티드 컴퓨터 애플리케이션을 모니터링하는 시스템 및 방법
JP2005531070A (ja) * 2002-06-25 2005-10-13 インターナショナル・ビジネス・マシーンズ・コーポレーション 分散環境中でアプリケーションの性能を監視するための方法およびシステム
US20070083813A1 (en) * 2005-10-11 2007-04-12 Knoa Software, Inc Generic, multi-instance method and GUI detection system for tracking and monitoring computer applications

Also Published As

Publication number Publication date
US8893156B2 (en) 2014-11-18
CN102369523B (zh) 2015-09-09
CA2753019C (en) 2016-12-20
EP2411927A2 (en) 2012-02-01
EP2411927B1 (en) 2018-08-01
KR101683321B1 (ko) 2016-12-06
WO2010111145A2 (en) 2010-09-30
CA2753019A1 (en) 2010-09-30
JP2012521607A (ja) 2012-09-13
US20100251263A1 (en) 2010-09-30
CN102369523A (zh) 2012-03-07
WO2010111145A3 (en) 2011-01-13
JP5474177B2 (ja) 2014-04-16
EP2411927A4 (en) 2012-10-17

Similar Documents

Publication Publication Date Title
KR101683321B1 (ko) 분산 애플리케이션들을 모니터링 하는 방법
US9323578B2 (en) Analyzing wait states in a data processing system
US8234631B2 (en) Method and system for tracing individual transactions at the granularity level of method calls throughout distributed heterogeneous applications without source code modifications
JP4267462B2 (ja) 分散エンタープライズ・アプリケーションにおける問題判別の方法およびシステム
US8286139B2 (en) Call stack sampling for threads having latencies exceeding a threshold
US7870244B2 (en) Monitoring performance of applications in a distributed environment
US7925473B2 (en) Method and apparatus for analyzing idle states in a data processing system
US8832665B2 (en) Method and system for tracing individual transactions at the granularity level of method calls throughout distributed heterogeneous applications without source code modifications including the detection of outgoing requests
US20090070457A1 (en) Intelligent Performance Monitoring of a Clustered Environment
US8516106B2 (en) Use tag clouds to visualize components related to an event
US9639446B2 (en) Trace monitoring
US10116534B2 (en) Systems and methods for WebSphere MQ performance metrics analysis
US20060167891A1 (en) Method and apparatus for redirecting transactions based on transaction response time policy in a distributed environment
US20090204947A1 (en) Method and system for correlating trace data
US20120185441A1 (en) Efficient data collection mechanism in middleware runtime environment
US8554908B2 (en) Device, method, and storage medium for detecting multiplexed relation of applications
CN117240695B (zh) 基于eBPF的持续性能剖析方法、装置、电子设备和存储介质
CN112015637A (zh) 一种应用性能管理系统及方法
Jayathilaka et al. Architecture of the Proposed Cloud Application Platform Monitor
CN117971394A (zh) 微服务提供方线程堆栈诊断方法及装置
SIG et al. REQUIREMENTS FOR PERFORMANCE INSTRUMENTATION OF DCE RPC AND CDS SERVICES
Hofer Real-Time Automatic Detection of Stuck Transactions

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right