현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동 정보
증상
Qpidd 서버가 분석 메시지를 PostgreSQL로 전송하지 않아 Edge UI에서 애널리틱스 데이터가 누락되었습니다. Edge에서 edge-qpid-server
구성요소는 Qpidd 서버에 해당합니다.
Qpidd는 각 분석 그룹에 대해 두 개의 대기열을 유지합니다.
ax-q-axgroup001-consumer-group-001
이 큐에는 메시지 프로세서 및 라우터에서 푸시된 분석 메시지가 보관됩니다.
edge-qpid-server
가 메시지를 파싱하여 PostgreSQL에 삽입하는 메시지를 여기에서 가져옵니다. 메시지가 성공적으로 처리되면 대기열에서 삭제됩니다.ax-q-axgroup001-consumer-group-001-dl
이 큐는 데드 레터 큐입니다.
edge-qpid-server
에서 처리하지 못하여 더 이상 수신하지 않으려는 메시지의 대상 역할을 합니다. 일반적으로 최대 전송 횟수를 초과하거나 런타임 오류로 인해 PostgreSQL이 새 데이터 삽입을 거부한 경우 채워집니다.
오류 메시지
근본 원인은 edge-qpid-server
구성요소의 다양한 런타임 오류 때문일 수 있습니다. 일반적으로 edge-qpid-server
는 PostgreSQL에서 런타임 오류를 수신하면 데드 레터 큐가 없는 경우 데드 레터 큐를 만든 후 다음 메시지를 전송합니다.
yyyy-MM-dd HH:mm:ss,SSS ax-q-axgroup001-consumer-group-001-persistpool-thread-6 WARN c.a.a.m.MessageConsumer - MessageConsumer.process() : Sending message batch to the DLQ.
가능한 원인
원인 | 설명 | 해당 문제 해결 지침 |
---|---|---|
메시지가 qpidd의 데드 레터 큐에서 멈춤 | edge-qpid-server 에서 Qpidd 브로커에서 읽은 메시지를 파악하거나 PostgreSQL에 메시지를 유지할 수 없었습니다.
|
Edge Private Cloud 사용자 |
일반적인 진단 단계
다음 명령어를 실행하여 Qpidd 큐 통계를 확인합니다.
qpid-stat -q
출력은 브로커에 등록된 큐 집합을 반환합니다. 이름이 '-dl'로 끝나는 큐에 메시지가 채워져 있으면 데드 레터 큐에 메시지가 멈춰 있는 것입니다.
Queues queue dur autoDel excl msg msgIn msgOut bytes bytesIn bytesOut cons bind ======================================================================================================================== ax-q-axgroup-001-consumer-group-001 Y 0 185 185 0 13.8m 13.8m 6 2 ax-q-axgroup-001-consumer-group-001-dl Y 0 70 70 0 3.9m 3.9m 0 2
원인: 메시지가 qpidd의 데드 레터 대기열에 멈춤
진단
이 조건은 다음과 같은 경우에 발생할 수 있습니다.
- 과거에 업그레이드가 진행되었으며 이 기간 동안 PostgreSQL이 중단되었습니다.
- 네트워크 문제로 인해 PostgreSQL이 일시적으로 중단되었습니다.
edge-qpid-server
에서 PostgreSQL로 메시지를 전송하려고 했지만 PostgreSQL이 런타임 오류를 반환했습니다.
해상도
일반 진단 단계에서 대기열 이름을 기록해 둡니다. 예를 들면 다음과 같습니다.
ax-q-axgroup-001-consumer-group-001
ax-q-axgroup-001-consumer-group-001-dl
qpid-tool
명령어를 실행하여 대화형qpid
프롬프트를 입력합니다.qpid-tool
이 명령어는 다음을 반환합니다.
Management Tool for QPID qpid:
list broker
를 실행하여 활성 브로커 목록을 가져옵니다.list broker
이 명령어는 다음을 반환합니다.
Object Summary: ID Created Destroyed Index ======================================= 125 21:00:00 - amqp-broker
여기서
ID
열은 브로커의 ID를 지정합니다.브로커의 ID를 기록해 둡니다. 이 예에서는 125입니다.
다음 명령어를 실행하여 메시지를 데드 레터 큐에서 실제 큐로 다시 이동합니다.
call 125 queueMoveMessages ax-q-axgroup-001-consumer-group-001-dl ax-q-axgroup-001-consumer-group-001 100000 {}
이 명령어는 다음을 반환합니다.
OK (0) - {}
출력이 없으면 수행할 작업이 없고 이동할 메시지가 없는 것입니다.
OK(0)
가 표시되지 않으면 Apigee Edge 지원팀에 문의하세요.qpid-tool 터미널을 종료합니다.
quit
5분 정도 기다린 후 일반 진단 단계의 진단 단계를 다시 실행합니다. 실제 큐의 메시지가 처리되는지 확인하고 데드 레터 메시지 수가 0으로 유지되는지 확인합니다.
그래도 문제가 해결되지 않으면 다음 섹션으로 이동하세요.
진단 정보 수집 필수
위 지침을 따른 후에도 문제가 지속되면 다음 진단 정보를 수집하세요. Apigee Edge 지원팀에 문의 및 공유하세요.
- Qpidd 로그:
/opt/apigee/var/log/apigee-qpidd/apigee-qpidd.log
- Postgresql 로그:
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log
- Edge-qpid-server 로그:
/opt/apigee/var/log/edge-qpid-server/logs/system.log
- Edge-postgres-server 로그:
/opt/apigee/var/log/edge-postgres-server/logs/system.log
Qpidd 대기열 통계:
qpid-stat -q
다음 curl 명령어에서 반환된 애널리틱스 그룹:
curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax