기본 개념
트랜잭션
섹션 제목: “트랜잭션”jvmguard에서 트랜잭션은 타이밍을 측정하려는 메서드 호출입니다. jvmguard는 호출의 타이밍을 기록하고 이를 식별하는 트랜잭션 이름을 구성합니다.
트랜잭션 명명은 jvmguard UI에 표시되는 내용에 큰 영향을 미칩니다.
- 트랜잭션을 유발한 것이 무엇인지 이해할 수 있게 해 줍니다.
- 같은 트랜잭션 이름을 가진 모든 호출을 그룹화하므로 측정되는 세분성이 결정됩니다.
- 원하지 않는 작업을 필터링하는 기준으로 사용할 수 있습니다.
jvmguard는 어떤 메서드 호출이 사용자에게 중요한지 알 수 없으므로, 트랜잭션을 구성하는 것은 모니터링할 애플리케이션을 설정하는 데 중요한 부분입니다. jvmguard UI에서 직접 선택하거나 코드의 어노테이션을 사용하여 관심 있는 메서드를 선택함으로써 트랜잭션을 정의합니다.
예를 들어, 서비스 메서드의 호출을 측정하고 싶을 수 있습니다. 기본적으로 트랜잭션 이름은 클래스와 메서드 이름이지만, 메서드 매개변수의 값이나 인스턴스에 대한 getter 호출 결과와 같은 명명 요소로 이름을 구성할 수 있습니다. 이렇게 하면 분석에 중요한 데이터를 기준으로 호출을 그룹화할 수 있습니다.
가로챈 호출 중 일부가 흥미롭지 않다면, 해당 호출에 연결될 이름을 기준으로 트랜잭션을 버릴 수 있습니다. 너무 많은 서로 다른 트랜잭션 이름을 생성하면 jvmguard는 고유 이름의 수를 제한하고 이 상태를 해결하는 방법에 대한 지침이 담긴 수신함 메시지를 별냅니다.
기록된 트랜잭션으로부터 jvmguard는 시간이 실제로 어디에 소비되는지 보여 주는 호출 트리와 핫스팟을 구축합니다.
트랜잭션에는 연결된 정책이 있습니다. 정책은 다음을 결정합니다.
- 트랜잭션에 허용되는 타이밍
- 오류가 감지되고 처리되는 방식
정책에서 위반된 각 조건에 대해 jvmguard UI에서 트랜잭션 세부 정보를 별도로 볼 수 있습니다. 예를 들어, 느린 트랜잭션이나 오류가 발생한 트랜잭션을 같은 이름의 다른 일반 트랜잭션과 누적되지 않고 별도로 검사할 수 있습니다.
jvmguard는 메서드를 계측하여 모니터링되는 애플리케이션으로부터 정보를 얻습니다. 오버헤드를 낮게 유지하기 위해 트랜잭션 정의에 포함된 메서드만 계측됩니다. 정책 위반에 더 심층적인 분석이 필요한 경우 트리거를 구성하여 문제가 된 VM에 대한 프로파일링 캡처를 수행할 수 있습니다.
텔레메트리
섹션 제목: “텔레메트리”jvmguard의 또 다른 기본 데이터 소스 유형은 힙 크기나 스레드 수와 같은 스칼라 값의 주기적인 샘플링입니다. 각 텔레메트리는 시간에 따른 그래프로 표시할 수 있습니다. jvmguard에서 텔레메트리는 축 정의 없이 끝에 현재 값이 붙은 스파크라인으로 자주 표시됩니다.
jvmguard에는 JVM의 잘 알려진 하위 시스템에서 데이터를 수집하는 많은 표준 텔레메트리가 있습니다. 또한
MBean이 노출하는 정수 값을 jvmguard로 모니터링할 수
있습니다. 프로그래밍 수준에서는
@Telemetry 어노테이션을 사용하여 숫자 반환 값을 가진
정적 메서드에 사용자 정의 텔레메트리를 정의할 수 있습니다.
임계값
섹션 제목: “임계값”텔레메트리마다 기대치가 다를 수 있습니다. 예를 들어, 힙 사용량은 종종 기준선 주위에서 진동하며, 꾸준한 증가는 애플리케이션의 버그 징후입니다.
또는 활성 스레드 수가 머신의 용량에서 도출한 한계 미만으로 유지되어야 할 수 있습니다.
이상 상태를 감지하려면 선택적 하한과 선택적 상한을 가진 임계값을 정의합니다. 임계값 위반은 VM별로 또는 각 VM 그룹별로 집계됩니다. 임계값 위반에는 연결된 액션이 없습니다. 때로는 단일 임계값 위반에 대해서는 아무 조치도 취하지 않고 그런 상태가 연속적으로 발생할 때만 조치를 취하고 싶을 수 있습니다.
트리거
섹션 제목: “트리거”트랜잭션과 텔레메트리 모두 이상 상태로 이어질 수 있습니다. 트랜잭션 정책은 느린 트랜잭션을 식별할 수 있고, 텔레메트리 임계값은 위반될 수 있습니다.
이러한 상태에 대해 조치를 취하려면 트리거를 사용합니다. 트리거는 VM 단위로 작동하지 않고 VM 그룹에 재귀적으로 포함된 모든 VM을 처리합니다. 그룹 계층 구조의 각 VM 그룹에는 별도의 트리거가 있습니다.
예를 들어, 연결된 VM 수가 20 미만으로 떨어질 때 실행되는 트리거를 모든 VM에 대해 정의할 수 있습니다. 같은 VM 계층 구조에서 데이터베이스 VM만 포함하는 그룹이 있을 수 있습니다. 그 그룹에서는 연결된 데이터베이스 VM 수가 3 미만으로 떨어질 때 실행되는 별도의 트리거가 필요할 수 있습니다.
트리거가 실행되면 액션 목록을 수행합니다. 액션은 JFR 기록, 힙 덤프 또는 스레드 덤프와 같은 프로파일링 캡처를 수행하거나, 이메일, 웹훅, 수신함 메시지 또는 이벤트 로그 항목으로 알림을 별낼 수 있습니다.