16.2. 로그를 사용하여 문제 해결
AMQ Interconnect 로그 항목을 사용하여 네트워크의 라우터에서 오류 및 성능 문제를 진단할 수 있습니다.
예 16.1. 연결 및 링크 문제 해결
이 예에서 ROUTER 로그에는 연결의 라이프사이클과 연결된 링크가 표시됩니다.
2019-04-05 14:54:38.037248 -0400 ROUTER (info) [C1] Connection Opened: dir=in host=127.0.0.1:55440 vhost= encrypted=no auth=no user=anonymous container_id=95e55424-6c0a-4a5c-8848-65a3ea5cc25a props=
2019-04-05 14:54:38.038137 -0400 ROUTER (info) [C1][L6] Link attached: dir=in source={<none> expire:sess} target={$management expire:sess}
2019-04-05 14:54:38.041103 -0400 ROUTER (info) [C1][L6] Link lost: del=1 presett=0 psdrop=0 acc=1 rej=0 rel=0 mod=0 delay1=0 delay10=0
2019-04-05 14:54:38.041154 -0400 ROUTER (info) [C1] Connection Closed
2019-04-05 14:54:38.037248 -0400 ROUTER (info) [C1] Connection Opened: dir=in host=127.0.0.1:55440 vhost= encrypted=no auth=no user=anonymous container_id=95e55424-6c0a-4a5c-8848-65a3ea5cc25a props=
2019-04-05 14:54:38.038137 -0400 ROUTER (info) [C1][L6] Link attached: dir=in source={<none> expire:sess} target={$management expire:sess}
2019-04-05 14:54:38.041103 -0400 ROUTER (info) [C1][L6] Link lost: del=1 presett=0 psdrop=0 acc=1 rej=0 rel=0 mod=0 delay1=0 delay10=0
2019-04-05 14:54:38.041154 -0400 ROUTER (info) [C1] Connection Closed
필요한 경우 qdmanage 를 사용하여 특정 연결에 대해 프로토콜 수준 추적 로깅을 활성화할 수 있습니다. 이 값을 사용하여 AMQP 프레임을 추적할 수 있습니다. 예를 들면 다음과 같습니다.
qdmanage update --type=connection --id=C1 enableProtocolTrace=true
$ qdmanage update --type=connection --id=C1 enableProtocolTrace=true
예 16.2. 네트워크 토폴로지 문제 해결
이 예에서 에서 Router.A ROUTER_HELLO 로그에 해당 로그가 에 연결되고 Router.A 및 Router.B Router.C:
Tue Jun 7 13:50:21 2016 ROUTER_HELLO (trace) RCVD: HELLO(id=Router.B area=0 inst=1465307413 seen=['Router.A', 'Router.C']) Tue Jun 7 13:50:21 2016 ROUTER_HELLO (trace) SENT: HELLO(id=Router.A area=0 inst=1465307416 seen=['Router.B']) Tue Jun 7 13:50:22 2016 ROUTER_HELLO (trace) RCVD: HELLO(id=Router.B area=0 inst=1465307413 seen=['Router.A', 'Router.C']) Tue Jun 7 13:50:22 2016 ROUTER_HELLO (trace) SENT: HELLO(id=Router.A area=0 inst=1465307416 seen=['Router.B'])
Tue Jun 7 13:50:21 2016 ROUTER_HELLO (trace) RCVD: HELLO(id=Router.B area=0 inst=1465307413 seen=['Router.A', 'Router.C'])
Tue Jun 7 13:50:21 2016 ROUTER_HELLO (trace) SENT: HELLO(id=Router.A area=0 inst=1465307416 seen=['Router.B'])
Tue Jun 7 13:50:22 2016 ROUTER_HELLO (trace) RCVD: HELLO(id=Router.B area=0 inst=1465307413 seen=['Router.A', 'Router.C'])
Tue Jun 7 13:50:22 2016 ROUTER_HELLO (trace) SENT: HELLO(id=Router.A area=0 inst=1465307416 seen=['Router.B'])
Router.B 에서 ROUTER_HELLO 로그에 다른 관점에서 동일한 라우터 토폴로지가 표시됩니다.
Tue Jun 7 13:50:18 2016 ROUTER_HELLO (trace) SENT: HELLO(id=Router.B area=0 inst=1465307413 seen=['Router.A', 'Router.C']) Tue Jun 7 13:50:18 2016 ROUTER_HELLO (trace) RCVD: HELLO(id=Router.A area=0 inst=1465307416 seen=['Router.B']) Tue Jun 7 13:50:19 2016 ROUTER_HELLO (trace) RCVD: HELLO(id=Router.C area=0 inst=1465307411 seen=['Router.B'])
Tue Jun 7 13:50:18 2016 ROUTER_HELLO (trace) SENT: HELLO(id=Router.B area=0 inst=1465307413 seen=['Router.A', 'Router.C'])
Tue Jun 7 13:50:18 2016 ROUTER_HELLO (trace) RCVD: HELLO(id=Router.A area=0 inst=1465307416 seen=['Router.B'])
Tue Jun 7 13:50:19 2016 ROUTER_HELLO (trace) RCVD: HELLO(id=Router.C area=0 inst=1465307411 seen=['Router.B'])
예 16.3. 라우터 간 링크 상태 추적
각 라우터는 주기적으로 LSR(링크 상태 요청)을 다른 라우터로 전송하고 요청된 정보와 함께 LSU(Link State Update)를 수신합니다. 위의 정보를 변경하면 각 라우터가 토폴로지의 다음 홉과 관련 비용을 계산할 수 있습니다.
이 예에서 ROUTER_LS 로그에는 세 라우터 간에 전송된 RA, LSR 및 LSU 메시지가 표시됩니다.
- 1
router.A는 LSR 요청을 전송하고 네트워크의 다른 라우터에 RA 알림을 전송했습니다.- 2
- router.A는
Router.B에서 LSU를 수신했습니다. 두 개의 피어가 있습니다.Router.A,Router.A및Router.C(비용1). - 3
router.A는및Router.BRouter.C에서 LSR을 수신했으며 LSU와 함께 불만족을 받았습니다.- 4
router.A는Router.C에서 LSU를 수신했습니다. 이 LSU에는 하나의 피어만 있습니다.Router.B(1의 비용).- 5
- LSR 및 LSU 메시지가 교환된 후
Router.A는 라우터 토폴로지를 관련 비용으로 계산했습니다.
예 16.4. 라우터에 연결된 모바일 주소의 상태 추적
이 예에서 ROUTER_MA 로그에는 세 라우터 간에 전송된 MAR(Mobile Address Request) 및 MAU(Mobile Address Update) 메시지가 표시됩니다.
- 1
router.A는 MAU 메시지를 네트워크의 다른 라우터로 전송하여my_queue및my_queue_wp에 추가된 주소에 대해 알립니다.- 2
router.A는로부터 응답으로 MAR 메시지를 수신했습니다.Router.C- 3
router.A는의 응답으로 다른 MAR 메시지를 수신했습니다.Router.B- 4
router.c는 MAU 메시지를 전송하여 다른 라우터에my_test가 추가되었음을 알립니다.- 5
router.c는 다른 라우터에my_test의 주소를 삭제했음을 알리기 위해 다른 MAU 메시지를 전송했습니다( receiver가 분리되기 때문에).
예 16.5. 라우터에서 수신 및 수신한 메시지에 대한 정보 검색
이 예에서 MESSAGE 로그에 Router.A 가 Hello 프로토콜과 관련된 일부 메시지를 전송 및 수신했으며 모바일 주소 링크의 다른 메시지를 전송 및 수신했습니다.
예 16.6. 라우터의 구성 변경 추적
이 예에서 AGENT 로그는 Router.A,address,linkRoute, autoLink 엔티티가 라우터의 구성 파일에 추가되었음을 보여줍니다. 라우터가 시작되면 AGENT 모듈은 이러한 변경 사항을 적용했으며 이제 로그에서 볼 수 있습니다.
예 16.7. 정책 및 vhost 액세스 규칙 문제 해결
이 예에서 POLICY 로그는 이 라우터에 최대 연결에 제한이 없으며 기본 애플리케이션 정책이 비활성화되어 있음을 보여줍니다.
Tue Jun 7 15:07:32 2016 POLICY (info) Policy configured maximumConnections: 0, policyFolder: '', access rules enabled: 'false' Tue Jun 7 15:07:32 2016 POLICY (info) Policy fallback defaultApplication is disabled
Tue Jun 7 15:07:32 2016 POLICY (info) Policy configured maximumConnections: 0, policyFolder: '', access rules enabled: 'false'
Tue Jun 7 15:07:32 2016 POLICY (info) Policy fallback defaultApplication is disabled
예 16.8. 오류 진단
이 예에서 ERROR 로그에 라우터 구성 파일에 잘못된 경로가 지정되었을 때 라우터가 시작되지 않는 것으로 표시됩니다.
추가 리소스
- 로깅 모듈에 대한 자세한 내용은 11.1절. “로깅 모듈” 을 참조하십시오.