Apigee Edge 문서입니다.
Apigee X 문서로 이동 info
증상
Qpidd 서버가 분석 메시지를 PostgreSQL로 전송하지 않아 Edge UI에 분석 데이터가 누락됩니다. Edge에서 edge-qpid-server 구성요소는 Qpidd 서버에 해당합니다.
Qpidd는 각 분석 그룹에 대해 두 개의 대기열을 유지합니다.
ax-q-axgroup001-consumer-group-001
이 대기열은 메시지 프로세서와 라우터에서 푸시된 분석 메시지를 보유합니다. 메시지를 파싱하고 PostgreSQL에 삽입하는
edge-qpid-server에 의해 메시지가 여기에서 가져옵니다. 메시지가 성공적으로 처리되면 큐에서 삭제됩니다.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-001ax-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