>운영 및 유지보수 >안전 >CaptureFramework 프레임워크 분석을 수행하는 방법

CaptureFramework 프레임워크 분석을 수행하는 방법

王林
王林앞으로
2023-06-02 22:01:181067검색

1. 배경

애플리케이션 서비스 모니터링은 지능형 운영 및 유지 관리 시스템의 중요한 부분입니다. UAV 시스템에서 MOF(미들웨어 강화 프레임워크) 프로브는 애플리케이션 초상화 및 성능 데이터 수집 기능을 제공합니다. 데이터 수집 기능은 주로 실시간 데이터, 초상화 데이터, 호출 링크 데이터 생성 및 스레드 데이터 분석 데이터의 네 가지 유형을 수집합니다. . 실시간 데이터 수집을 달성하기 위해 UAVStack은 통합 데이터 캡처 동작과 캡처 결과 생성 기능을 제공하는 CaptureFramework 프레임워크를 설계했습니다.

2. CaptureFramework 작동 원리

CaptureFramework 프레임워크 분석을 수행하는 방법

2.1 주요 기술 설명

  • JavaAssist

  • 모니터 캡처 시스템

  • precap/docap

2. 2 아키텍처 설명

  • 점령 지점 : 지원 Tomcat, MSCP, Springboot, Jetty가 묻혀있습니다.

  • UAVServer 싱글톤: 통합 캡처 진입점으로서 동기 및 비동기 방식을 제공합니다.

  • StandardMonitor: Monitor 인터페이스를 구현하며 실시간 데이터 캡처 구현 클래스입니다. 캡처 동작과 캡처 결과 생성을 담당하는 doCapture 메서드를 제공합니다.

  • MonitorElemCapHandler: 다양한 크롤링 로직과 크롤링 지점의 공통 인터페이스는 다양한 매장 로직을 구현하여 크롤링 동작을 위한 preCap 및 doCap 메소드와 크롤링 결과 생성을 위한 preStore 메소드를 제공합니다.

  • StandardMonitorRepository: 실시간 데이터 캡처 데이터 구조를 저장합니다.

  • DataObserver: JMX/HTTP 인터페이스 데이터를 노출합니다.

2.3 주요 클래스 설명

  • Monitor 실시간 모니터링은 주로 DefaultMonitorSupporter 클래스에서 StandardMonitor 개체를 시작 및 초기화하고, CaptureFramework를 통해 DataStore 개체에 모니터 개체를 설치합니다.

  • DataObserver는 후속 MA 크롤링을 위한 JMX/HTTP 서비스를 제공합니다. Http 서비스에는 HttpJEEJVMObserver, HttpJEEMonitorObserver 및 HttpJEEProfileObserver라는 세 가지 핸들러가 등록되어 있습니다. 다양한 핸들러는 다양한 인터페이스를 노출합니다.

  • MonitorHandler 패키지의 Handler 클래스는 특히 모니터 표시기 데이터의 계산 및 통계를 처리합니다.

2.4 캡처 지점 분석

CaptureFrameWork 프레임워크는 UAVServer에서 각각 동기 메서드와 비동기 메서드를 제공하는 통합 캡처 진입점을 제공합니다.

  • 동기 캡처 진입점: runMonitorCaptureOnServerCapPoint

  • 비동기 캡처 진입점: runMonitorAsyncCaptureOn ServerCapPoint

2.4.1 동기 호출과 비동기 호출의 차이점 분석

Asynchronous는 동기화보다 하나 더 많은 매개 변수인 CaptureContextMapFromAnotherThread를 추가합니다. 이 매개 변수가 비어 있지 않으면 컨텍스트 정보를 병합해야 합니다. 정상적인 상황에서 비동기 메소드를 사용하여 포인트를 묻어두면 메소드 실행 전에 비동기 캡처 메소드를 호출하여 전달된 CaptureContextMapFromAnotherThread가 비어 있고 메소드 실행이 완료된 후 캡슐화된 컨텍스트 정보가 리턴됩니다. 메소드를 호출하여 컨텍스트 정보를 전달한 후 특정 캡처 작업을 수행합니다. 자세한 내용은 다음 코드 조각을 참조하세요.

  • 메서드 실행 전 비동기 호출

CaptureFramework 프레임워크 분석을 수행하는 방법

  • 메서드 실행 후 비동기 호출은 다음과 같습니다. 여기서 ccMap은 비동기 호출입니다. 반환된 캡슐화된 컨텍스트 정보

CaptureFramework 프레임워크 분석을 수행하는 방법

2.5 잡기 동작 분석

  • 모니터 인터페이스: 가장 중요한 여러 인터페이스 제공 doCapture 및 doPreStore 메소드 중 doCapture는 특정 캡처를 구현하는 데 사용됩니다. 클릭하여 데이터 수집 동작을 실행합니다. doPreStore 메소드는 데이터 구조에 저장하기 전에 일부 캡처 작업을 구현하고 일부 특수 데이터 처리를 수행하는 데 사용됩니다.

  • StandardMonitor 클래스: 모니터 인터페이스의 특정 구현 클래스입니다.

  • StandardMonitorRepository 클래스: 실시간 데이터 캡처 데이터 구조를 저장합니다.

  • MonitorElementInstance 인터페이스: 실시간 데이터 캡처 데이터 구조를 저장하는 인스턴스 인터페이스입니다.

  • StandardMonitorElementInstance 클래스: MonitorElementInstance 인터페이스의 특정 구현 클래스입니다.

동기 캡처 진입점이든 비동기 캡처 진입점이든 doCapture 메서드가 실행됩니다. 코드 조각은 다음과 같습니다.

CaptureFramework 프레임워크 분석을 수행하는 방법

monitor.doCapture는 모니터 인터페이스에서 doCapture를 호출하고 해당 항목은 다음과 같습니다. 구현 클래스는 StandardMonitor입니다.

StandardMonitor의 doCapture 메소드는 주로 다음 작업을 수행합니다.

  • 매개변수에 따라 현재 MonitorElement 배열을 가져옵니다. MonitorElement 배열은 StandardMonitorRepository의 getElementByCapId를 통해 구현됩니다.

  • MonitorElement 배열을 루프로 처리하여 캡처 데이터 구현 클래스를 획득하고, 구현 클래스를 기반으로 현재 실행 중인 핸들러를 획득하고, 최종적으로 현재 획득한 핸들러를 기반으로 캡처 단계(precap/docap)를 결정한 후 수행합니다. 해당 처리. 다양한 핸들러는 다양한 특성을 기반으로 MonitorElementInstance를 생성하고 최종적으로 StandardMonitorRepository 데이터 구조에 결과를 저장합니다.

ServerEndRespTimeCapHandler(서버 측 크롤링 동작)를 예로 들어 보겠습니다.

  • preCap 메서드: 서비스의 시작 요청 시간만 기록합니다.

  • doCap 방법: 서로 다른 monitorElemId에 따라 서로 다른 논리적 처리를 수행하고 마지막으로 MonitorElementInstance 인스턴스를 캡슐화한 다음 최대값 피크 제거, 최대값, 최소값, 반환 상태 코드, 타임스탬프 업데이트 등을 포함한 캡처 동작 결과를 처리합니다. 계산 및 기타 해당 데이터 처리.

3. 실시간 데이터 수집

3.1 실시간 데이터란

즉, 프로그램 실행 시 생성되는 정보를 말하는 런타임 데이터, CPU, 힙 메모리, JVM이 차지하는 정보 프로그램 및 서비스 접속 및 고객 종료 통화 ​​관련 통계(평균 응답 시간, 접속 횟수 등)

3.2 서버 측 데이터 수집

DefaultMonitorSupporter 구현

CaptureFramework 프레임워크 분석을 수행하는 방법

서버 측 데이터 수집은 DefaultMonitorSupporter.start를 모니터 인스턴스 구축을 위한 진입점으로 사용합니다.

CaptureFramework 프레임워크 분석을 수행하는 방법

서비스 유형의 StandardMonitor 인스턴스 구축: StandardMonitorRepository 예제 가 포함된 기본값, StandardMonitorRepository 인스턴스는 모니터를 등록하고, 하나의 인스턴스에는 여러 MonitorElement 인스턴스가 포함되며, 모든 MonitorElement 인스턴스는 elemsMap 속성에 저장됩니다.

elemsMap 속성은 다양한 컬렉션 개체에 따라 다양한 컬렉션 클래스 핸들러를 저장합니다.

  • ServerEndRespTimeCapHandler: 서버, APP, URL 등의 응답 시간 및 로드 수를 수집합니다.

  • JVMStateCapHandler: 힙 사용량을 포함한 jvm 상태를 수집합니다. , GC 수, 스레드 수, CPU, 클래스 수 등

코드 조각은 다음과 같습니다.

CaptureFramework 프레임워크 분석을 수행하는 방법

CaptureFramework 프레임워크 분석을 수행하는 방법

3.3 클라이언트 데이터 수집

DefaultClientMonitorSupporter 구현 CaptureFramework 프레임워크 분석을 수행하는 방법

클라이언트 데이터 수집은 모니터 인스턴스를 구축하기 위한 진입점으로 DefaultClientMonitorSupporter.start를 사용합니다.

CaptureFramework 프레임워크 분석을 수행하는 방법

기본적으로 StandardMonitorRepository 인스턴스를 포함하는 클라이언트 유형의 StandardMonitor 인스턴스가 빌드됩니다. 이 인스턴스는 여러 MonitorElement 인스턴스를 포함하며 모든 MonitorElement 인스턴스는 elemsMap 속성에 저장됩니다.

  • elemsMap: 이 속성은 ClientRespTimeCapHandler 컬렉션 클래스만 저장합니다.

  • ClientRespTimeCapHandler: 클라이언트의 응답 시간, 로딩 횟수 등을 수집합니다.

CaptureFramework 프레임워크 분석을 수행하는 방법

클라이언트 측 데이터 수집이든 서버 측 데이터 수집이든, 모니터는 DataObserver에 설치되고 마지막으로 성공적으로 구축된 모니터는 지정된 캡처 방법(예: precap 및 docap)에 바인딩됩니다. ).

3.4 DataObServer 구현

DataObServer는 인터페이스 데이터를 노출하는 두 가지 모드, 즉 JMX와 HTTP를 제공합니다.

  • HTTP 모드: HttpDataObserverWorker.start가 진입점으로 사용되고 핸들러를 얻기 위해 각각 세 개의 핸들러가 등록됩니다. JVM 데이터, 모니터 데이터 및 프로필 데이터. 각 핸들러는 고유한 인터페이스를 노출하지만 모두 JSON 형식으로 데이터를 반환합니다.

  • JMX 메소드: JMX 에이전트는 데이터를 얻기 위해 getMBeanInfo 메소드를 통해 노출된 인터페이스를 얻습니다.

DataObServer는 모니터 설치 및 제거, 리스너 추가 및 제거, 프로필 및 모니터 획득 방법도 제공합니다.

CaptureFramework 프레임워크 분석을 수행하는 방법

위 내용은 CaptureFramework 프레임워크 분석을 수행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제