트리거
정책과 임계값은 이상 상태를 감지하고 VM 데이터 뷰에 표시하지만 스스로 어떤 액션도 수행할 수 없습니다. 트리거를 사용하면 정책 및 임계값 위반에 반응하여 구성 가능한 액션 목록을 실행할 수 있습니다.
메커니즘
섹션 제목: “메커니즘”트리거는 정책 및 임계값과는 다른 수준에서 작동합니다. 후자는 단일 VM 또는 VM 그룹에 적용되는 구성 옵션입니다. 반면 트리거는 단일 정책 또는 임계값 위반에 직접 연결되지 않습니다. 대신 VM 그룹의 모니터링되는 모든 VM에서 시작된 이러한 이벤트의 시퀀스에 반응합니다.
이 메커니즘은 특정 액션이 필요한 상태를 구성하는 것에 대한 더 큰 유연성을 제공하기 위한 것입니다. 예를 들어, 캐시가 재구축될 때 느린 URL 호출이 최대 한 번 발생하는 것은 예상할 수 있습니다. 그러나 시간당 느린 URL 호출이 5번 이상 발생하면 무언가 잘못된 것입니다. 무엇이 허용 가능하고 무엇이 그렇지 않은지의 정의는 애플리케이션의 타입과 구현에 크게 의존합니다.
기록 설정에서 각 VM 그룹의 트리거를 편집할 수 있습니다. 트리거는 재귀적으로 포함된 모든 VM에서 작동합니다. VM 그룹과 조상 VM 그룹에 대해 서로 다른 트리거를 정의할 수 있으며 두 트리거 세트는 별도로 처리됩니다.
경우에 따라 트리거가 너무 자주 실행됩니다. 이 경우 jvmguard에서는 기본 구성을 변경하는 방법을 파악할 시간이 있을 때까지 트리거를 비활성화할 수 있습니다.
트랜잭션 정의 및 jvmguard의 다른 엔터티와 마찬가지로 트리거는 트리거 세트에 저장하고 로드할 수 있습니다. 이를 통해 트리거 정의를 여러 VM 그룹의 시작점으로 복사하여 붙여넣을 수 있습니다.
트리거 타입
섹션 제목: “트리거 타입”세 가지 타입의 트리거가 있습니다:
-
정책 트리거: 정책 트리거는 지정된 기간 동안 트랜잭션 집합의 정책 위반이 정의된 횟수를 초과할 때 실행됩니다. 필터 텍스트 필드는 와일드카드 표현식 또는 정규 표현식인 트랜잭션 이름 패턴을 받습니다.
또한 정책 트리거는 특정 정책 위반 타입에 대해 구성됩니다. 각각 다른 트랜잭션 이름과 일치하는 여러 정책 트리거를 가질 수 있습니다. 처음 일치하는 항목만 사용되는 이름 일치가 있는 트랜잭션 정의와 달리 정책 트리거에는 이름 일치가 없습니다. 동일한 트랜잭션 이름에 대해 둘 이상의 트리거를 추가하는 경우 서로 다른 이벤트 속도를 설정해야 할 것입니다. 그렇지 않으면 두 트리거가 동시에 실행됩니다.
트리거 조건은 정책 위반의 실제 조건과 분리되어 있습니다. 다양한 트랜잭션이 트랜잭션이 “매우 느림”으로 특성화되는 서로 다른 시간을 정의할 수 있으며, 정책 트리거는 이러한 이벤트를 카운트합니다.
-
임계값 트리거: 임계값 트리거는 선택한 텔레메트리에 대한 임계값 위반 속도가 구성된 값을 초과할 때 실행됩니다. 이를 위해서는 동일한 VM 그룹에 대해 최소 하나의 임계값을 구성해야 합니다. 정책 트리거와 마찬가지로 트리거 조건은 실제 임계값을 정의하지 않습니다. 임계값은 서로 다른 하위 VM 그룹에서 다르게 정의될 수 있으며 임계값 트리거는 임계값 위반을 카운트합니다.
예를 들어, 성능이 좋은 머신과 레거시 머신의 두 그룹이 있다고 가정해 보세요. 성능이 좋은 머신에서는 스레드 수가 1000을 초과하지 않아야 하고 레거시 머신에서는 해당 임계값이 500에 불과합니다. “Powerful”과 “Legacy”라는 VM 그룹을 만들고 각 그룹의 기록 설정에 해당 임계값과 “모든 VM” 그룹에 기본 임계값을 정의합니다. 그런 다음 “모든 VM” 그룹에서 스레드 수 텔레메트리에 대한 임계값 트리거를 정의합니다. 이 트리거는 두 VM 그룹을 동시에 처리합니다.
-
연결 트리거: 연결된 VM 수는 모니터링되는 VM이 아닌 jvmguard 수집기에서 발생하는 스칼라 값입니다. 연결 트리거는 실행 중인 VM이 너무 적은 경우에 조치를 취하기 위한 것입니다. jvmguard 서버가 시작될 때 구성된 최소 수에 즉시 도달하지 않으므로 최소 수에 처음 도달한 후 또는 일정 시간이 지난 후에만 트리거를 활성화하는 옵션이 있습니다.
트리거 액션
섹션 제목: “트리거 액션”각 트리거는 임의의 액션 목록을 가질 수 있습니다.

트리거에 추가할 수 있는 액션 타입은 두 가지 범주로 나눌 수 있습니다:
- 알림 액션: jvmguard 내부에서 소비하기 위한 알림을 만들 수 있습니다. 이벤트 로그 또는 수신함에 항목을 기록할 수 있습니다. 수신함은 각 사용자에 대해 유지되며 사용자별로 “읽지 않음 상태”가 있습니다. 외부로는 이메일을 보내거나 웹훅을 호출할 수 있습니다.
이메일을 보낼 때는 일반 설정의 SMTP 구성이 유효해야 합니다. 이메일에는 어떤 VM이 트리거를 실행시켰는지
나타내는 제목 줄이 포함되며, 웹훅 액션에서는 @TRIGGER@ 문자 시퀀스를 사용하여 이 메시지를 헤더, 쿼리
매개변수 또는 JSON 요청 본문에 삽입할 수 있습니다.
-
데이터 수집 액션: 이상 상태에 대한 반응으로 상세 분석을 위해 더 많은 데이터를 기록하기로 결정할 수 있습니다. 이러한 데이터 기록 옵션 중 일부는 일반 jvmguard 기록보다 더 침입적입니다.
예를 들어, HPROF 힙 스냅샷 저장은 정기적으로 수행해서는 안 되지만 메모리가 부족한 경우 메모리 누수를 찾는 데 도움이 됩니다. HPROF 스냅샷은 JVM이 직접 기록하며 네이티브 JVMTI 프로파일링 에이전트를 로드할 필요가 없습니다. 따라서 스냅샷이 저장될 때까지 VM이 중단되기는 하지만 위험이 낮은 작업입니다. JProfiler와 다른 Java 프로파일러가 HPROF 스냅샷을 열 수 있습니다.
스레드 덤프는 JVM에서 현재 일어나고 있는 일을 검사하는 기본적인 저오버헤드 방법입니다. 이벤트 타입이 “기한 초과”인 정책 트리거는 스레드 덤프를 저장할 수 있으므로 트랜잭션이 어느 메서드에서 멈춰 있는지 즉시 확인할 수 있습니다.
JProfiler 스냅샷 기록은 네이티브 JVMTI 에이전트를 로드해야 하는 데이터 수집의 에스컬레이션입니다. 이 주제에 대한 자세한 내용은 프로덕션 프로파일링 장에서 확인할 수 있습니다. 데이터 수집 액션은 연결된 VM 옆의 “작업” 링크를 클릭할 때 “VM” 뷰에서도 사용할 수 있습니다.
액션 목록은 순서대로 실행됩니다. 하나의 액션이 실패하면 jvmguard는 다음 액션으로 이동하며 트리거 액션의 실행을 종료하지 않습니다.

