7장. 문제에 대한 모니터링 브로커
AMQ Broker에는 실행 중인 브로커를 교착 상태와 같은 문제를 적극적으로 모니터링하는 Critical Analyzer 라는 내부 툴이 포함되어 있습니다. 프로덕션 환경에서 교착 상태 조건과 같은 문제는 IO 오류, 디스크 결함, 메모리 부족 또는 기타 프로세스로 인한 초과 CPU 사용량으로 인해 발생할 수 있습니다.
Critical Analyzer는 대기열 전송(즉, 브로커의 큐에 메시지 추가) 및 저널 작업과 같은 중요한 작업에 대한 응답 시간을 주기적으로 측정합니다. 검사 작업의 응답 시간이 구성 가능한 시간 초과 값을 초과하면 브로커는 불안정한 것으로 간주됩니다. 이 경우 심각한 분석기를 구성하여 메시지를 간단히 기록하거나 브로커를 종료하거나 브로커를 실행하는 VM(가상 머신) 중지와 같은 브로커를 보호하기 위해 조치를 취할 수 있습니다.
7.1. Critical Analyzer 구성
다음 절차에서는 브로커를 모니터링하여 문제를 모니터링하도록 Critical Analyzer를 구성하는 방법을 설명합니다.
절차
<
;broker_instance_dir> /etc/broker.xml구성 파일을 엽니다.Critical Analyzer의 기본 구성은 다음과 같습니다.
<critical-analyzer>true</critical-analyzer> <critical-analyzer-timeout>120000</critical-analyzer-timeout> <critical-analyzer-check-period>60000</critical-analyzer-check-period> <critical-analyzer-policy>HALT</critical-analyzer-policy>
아래에 설명된 대로 매개변수 값을 지정합니다.
critical-analyzer-
Critical Analyzer 툴을 활성화 또는 비활성화할지 여부를 지정합니다. 기본값은
true입니다. 즉, 툴이 활성화되어 있습니다. critical-analyzer-timeout- Critical Analyzer가 실행하는 검사에 대한 시간 초과(밀리초)입니다. 검사된 작업 중 하나가 이 값을 초과하는 시간이 이 값을 초과하면 브로커는 불안정한 것으로 간주됩니다.
critical-analyzer-check-period- 각 작업에 대해 Critical Analyzer의 연속 검사 사이의 시간 기간(밀리초)입니다.
critical-analyzer-policy-
브로커가 검사에 실패하고 불안정으로 간주되는 경우 이 매개변수는 브로커가 메시지 (
LOG)를 로깅하는지, 브로커 (HALT) 호스팅되는 VM(가상 머신)을 중지하는지 또는 브로커를 종료합니다(SHUTDOWN).
구성한 정책 옵션에 따라 중요 작업에 대한 응답 시간이 구성된 시간 초과 값을 초과하는 경우 다음 중 하나와 유사한 출력이 표시됩니다.
critical-analyzer-policy=LOG
[Artemis Critical Analyzer] 18:11:52,145 WARN [org.apache.activemq.artemis.core.server] AMQ224081: The component org.apache.activemq.artemis.tests.integration.critical.CriticalSimpleTest$2@5af97850 is not responsive
critical-analyzer-policy=HALT
[Artemis Critical Analyzer] 18:10:00,831 ERROR [org.apache.activemq.artemis.core.server] AMQ224079: The process for the virtual machine will be killed, as component org.apache.activemq.artemis.tests.integration.critical.CriticalSimpleTest$2@5af97850 is not responsive
critical-analyzer-policy=SHUTDOWN
[Artemis Critical Analyzer] 18:07:53,475 ERROR [org.apache.activemq.artemis.core.server] AMQ224080: The server process will now be stopped, as component org.apache.activemq.artemis.tests.integration.critical.CriticalSimpleTest$2@5af97850 is not responsive
브로커에 다음과 같은 스레드 덤프도 표시됩니다.
[Artemis Critical Analyzer] 18:10:00,836 WARN [org.apache.activemq.artemis.core.server] AMQ222199: Thread dump: AMQ119001: Generating thread dump * =============================================================================== AMQ119002: Thread Thread[Thread-1 (ActiveMQ-scheduled-threads),5,main] name = Thread-1 (ActiveMQ-scheduled-threads) id = 19 group = java.lang.ThreadGroup[name=main,maxpri=10] sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809) java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) java.lang.Thread.run(Thread.java:745) =============================================================================== ..... .......... =============================================================================== AMQ119003: End Thread dump *
2023-05-03에 최종 업데이트된 문서