503 서비스를 사용할 수 없음

Apigee Edge 문서를 보고 있습니다.
Apigee X 문서로 이동하세요.
info

동영상

503 오류에 대한 자세한 내용은 다음 동영상을 참고하세요.

동영상 설명
DNS 문제로 인한 503 서비스 이용 불가 오류 문제 해결 및 해결 다음 사항에 대해 알아보기
  • Apigee Edge에서 DNS 확인 및 네트워크 관련 문제로 인해 발생하는 503 서비스를 사용할 수 없음 오류
  • DNS 변환 문제로 인해 발생하는 실시간 503 서비스를 사용할 수 없음 오류 문제 해결
네트워크 문제로 인한 503 서비스를 사용할 수 없음 오류 문제 해결하기 Apigee Edge의 네트워크 문제로 인해 발생하는 실시간 503 서비스를 사용할 수 없음 오류 문제 해결

증상

클라이언트 애플리케이션이 API 프록시 호출 후 Service Unavailable 메시지와 함께 HTTP 응답 상태 503을 수신합니다.

오류 메시지

다음 오류 메시지가 표시됩니다.

HTTP/1.1 503 Service Unavailable
      

HTTP 응답에 다음 오류 메시지가 표시될 수도 있습니다.

서비스를 사용할 수 없음

{
   "fault": {
      "faultstring": "The Service is temporarily unavailable",
      "detail": {
           "errorcode": "messaging.adaptors.http.flow.ServiceUnavailable"
       }
    }
}
      

가능한 원인

Apigee Edge의 메시지 프로세서가 백엔드 서버와 통신하는 동안 연결 시간 초과, 잘못된 호스트 이름 또는 SSL 핸드셰이크 실패로 인해 오류가 발생하면 오류 코드 messaging.adaptors.http.flow.ServiceUnavailable와 함께 HTTP 응답 503 Service Unavailable이 발생합니다.

503 서비스를 사용할 수 없음 응답의 가능한 원인은 다음과 같습니다.

원인 설명 문제 해결 단계를 수행할 수 있는 사용자
잘못된 DNS 변환으로 인한 연결 오류 타겟 서버의 DNS 변환으로 인해 연결 오류가 발생하는 잘못된 IP 주소가 발생했습니다. Edge Private Cloud 사용자
연결 오류 네트워크 또는 연결 문제로 인해 클라이언트가 서버에 연결할 수 없습니다. Edge Private Cloud 사용자
잘못된 대상 서버 호스트 이름 지정된 대상 서버 호스트가 잘못되었거나 원하지 않는 문자 (예: 공백)가 있습니다. Edge Public 및 Private Cloud 사용자
SSL 핸드셰이크 실패 클라이언트와 서버 간에 TLS/SSL 핸드셰이크가 실패했습니다. (이러한 문제 해결은 별도의 주제에서 다룹니다.) Edge Public 및 Private Cloud 사용자

일반적인 진단 단계

실패한 요청의 메시지 ID 확인

추적 도구

Trace 도구를 사용하여 실패한 요청의 메시지 ID를 확인하려면 다음 단계를 따르세요.

  1. 문제가 여전히 활성 상태인 경우 영향을 받는 API에 대해 추적 세션을 사용 설정합니다.
  2. API를 호출하고 문제를 재현합니다(오류 코드 messaging.adaptors.http.flow.ServiceUnavailable.이 있는 503 서비스 사용 불가).
  3. 실패한 요청 중 하나를 선택합니다.
  4. AX 단계로 이동하여 다음 그림과 같이 단계 세부정보 섹션에서 아래로 스크롤하여 요청의 메시지 ID (X-Apigee.Message-ID)를 확인합니다.

    단계 세부정보 섹션의 메시지 ID

NGINX 액세스 로그

NGINX 액세스 로그를 사용하여 실패한 요청의 메시지 ID를 확인하려면 다음 단계를 따르세요.

NGINX 액세스 로그를 참조하여 503 오류의 메시지 ID를 확인할 수도 있습니다. 이 방법은 문제가 이전에 발생한 적이 있거나 간헐적으로 발생하여 UI에서 트레이스를 캡처할 수 없는 경우에 특히 유용합니다. NGINX 액세스 로그에서 이 정보를 확인하려면 다음 단계를 따르세요.

  1. NGINX 액세스 로그를 확인합니다. (/opt/apigee/var/log/edge-router/nginx/ <org>~ <env>.<port#>_access_log)
  2. 특정 기간 동안 특정 API 프록시에 503 오류가 있는지(문제가 과거에 발생한 경우) 또는 503 오류로 인해 여전히 실패하는 요청이 있는지 검색합니다.
  3. X-Apigee-fault-code messaging.adaptors.http.flow.ServiceUnavailable과 관련된 503 오류가 있는 경우 다음 예와 같이 하나 이상의 요청에 대한 메시지 ID를 기록합니다.

    503 오류를 보여주는 샘플 항목

    상태 코드, 메시지 ID, 오류 소스, 오류 코드를 보여주는 샘플 항목

잘못된 DNS 변환으로 인한 연결 오류

진단

  1. 실패한 요청의 메시지 ID를 확인합니다.
  2. 메시지 프로세서 로그 (/opt/apigee/var/log/edge-message-processor/logs/system.log)에서 특정 요청 메시지 ID를 검색합니다. 다음 오류가 표시될 수 있습니다.

    onConnectTimeout 오류는 메시지 프로세서가 사전 설정된 연결 제한 시간 (기본값: 3초) 내에 백엔드 서버에 연결할 수 없음을 나타냅니다.
    2019-08-14 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[Connected:]@164162 useCount=1 bytesRead=0 bytesWritten=0 age=3001ms lastIO=3001ms .onConnectTimeout connectAddress=www.abc.com/11.11.11.11  resolvedAddress=www.abc.com/22.22.22.22
    
    2019-08-14 09:11:49,333 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onTimeout() : RequestWriteListener.onTimeout(HTTPRequest@6b393600)
          
  3. onConnectTimeout 오류에서 확인된 IP 주소를 기록하고 IP 주소가 백엔드 서버에 유효한지 확인합니다. IP 주소가 유효한 경우 연결 오류로 이동합니다.
  4. IP 주소가 유효하지 않으면 DNS 변환 문제로 인해 발생했을 가능성이 높습니다.
  5. 실패한 API 요청 몇 개에 대해 3단계와 4단계를 반복하고 동일한 또는 다른 잘못된 IP 주소가 표시되는지 확인합니다.
  6. 메시지 프로세서 로그 (/opt/apigee/var/log/edge-message-processor/logs/system.log)에서 DNS 새로고침이라는 키워드가 포함된 메시지를 검색합니다. 가끔 잘못되거나 유효하지 않은 IP 주소가 메시지 프로세서의 DNS 캐시에 추가되는지 확인합니다.
    2019-08-14 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 INFO c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.reportDifferences() : DNS Refresh for host: apitarget-uat.schemeweb.co.uk:4436. Added 2 IPs [www.abc.com/22.22.22.22, www.abc.com/33.33.33.33] Removed 1 IPs [www.abc.com/11.11.11.11]
          
  7. 이 문제는 권한 있는 DNS 서버 또는 /etc/resolv.conf에 구성된 네임서버에 문제가 있는 경우 발생할 수 있습니다.

    일반적으로 DNS 확인을 실행하도록 구성된 권한 있는 DNS 서버가 하나 이상 있을 수 있습니다. 권한 있는 DNS 서버가 없으면 /etc/resolv.conf에 설정된 구성으로 대체되고 적절하게 DNS 변환이 실행됩니다. 예를 들어 /etc/resolv.conf가 특정 네임서버를 사용하도록 구성된 경우 해당 네임서버가 DNS 변환을 실행하는 데 사용됩니다.
  8. /etc/resolv.conf에 지정된 권한 있는 DNS 서버 또는 네임서버에 문제가 있으면 백엔드 서버 호스트 이름이 잘못된 IP 주소로 확인됩니다. 그러면 잘못된/유효하지 않은 IP 주소가 메시지 프로세서의 DNS 캐시에 저장됩니다.
    1. /etc/resolv.conf에 지정된 권한 DNS 서버 또는 네임서버에 문제가 지속되면 잘못된/유효하지 않은 IP 주소가 메시지 프로세서의 DNS 캐시에 계속 남아 있습니다. 잘못된 IP 주소가 메시지 프로세서의 DNS 캐시에 저장되어 있는 한 특정 백엔드 서버를 사용하는 모든 API 요청이 503 오류로 실패합니다.
    2. /etc/resolv.conf에 지정된 권한 있는 DNS 서버 또는 네임서버에 문제가 간헐적으로 발생하는 경우 양호한 IP 주소와 불량한 IP 주소가 DNS 캐시에 간헐적으로 저장됩니다. 이 경우 특정 백엔드 서버를 사용하는 모든 API에 503 오류가 간헐적으로 표시됩니다.
  9. DNS 서버 문제가 지속되면 오류가 계속 표시됩니다. DNS 서버 문제가 간헐적으로 발생하면 간헐적으로 실패가 표시됩니다. 즉, 백엔드 서버 호스트 이름이 잘못된 IP 주소로 확인될 때마다 503 오류가 표시됩니다. 백엔드 서버 호스트 이름이 올바른 IP 주소로 확인되면 응답이 성공적으로 표시됩니다.

해상도

운영체제 관리자와 협력하여 DNS 서버 문제를 해결하세요.

  1. /etc/resolv.conf에 지정된 권한 있는 DNS 서버 또는 네임서버에 문제가 있는 경우 적절한 서버로 문제를 해결하여 이 문제를 해결하세요.
  2. 메시지 프로세서가 있는 시스템의 /etc/resolv.conf 구성에 문제가 있으면 구성 문제를 수정합니다.

연결 오류

연결 오류는 Apigee Edge 메시지 프로세서가 백엔드 서버에 연결하려고 할 때 다음 문제 중 하나가 발생하는 경우에 발생합니다.

  • 메시지 프로세서가 사전 설정된 연결 제한 시간 내에 연결할 수 없습니다. (기본값: 3초)
  • 백엔드 서버에서 연결을 거부합니다.

진단

  1. 실패한 요청의 메시지 ID를 확인합니다.
  2. 메시지 프로세서 로그 (/opt/apigee/var/log/edge-message-processor/logs/system.log)에서 특정 요청 메시지 ID를 검색합니다. 다음 오류가 표시될 수 있습니다.
    1. onConnectTimeout 오류는 메시지 프로세서가 사전 설정된 연결 제한 시간 내에 백엔드 서버에 연결할 수 없음을 나타냅니다.
      2016-06-23 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@2 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[C:]@10 useCount=1 bytesRead=0 bytesWritten=0 age=3001ms lastIO=3001ms .onConnectTimeout connectAddress=www.abc.com/11.11.11.11:80 resolvedAddress=www.abc.com/11.11.11.11
      2016-06-23 09:11:49,333 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@2 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onTimeout() : RequestWriteListener.onTimeout(HTTPRequest@6b393600)
    2. java.net.ConnectException: Connection refused 오류는 백엔드 서버에서 연결을 거부했음을 나타냅니다.
      14:40:16.531 +0530
      2016-06-17 09:10:16,531 org:myorg env:prod api:www.abc.com rev:1 rrt07eadn-22739-40983870-15 NIOThread@2 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to www.abc.com:11.11.11.11:443 failed with exception {}
      java.net.ConnectException: Connection refused
      at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.7.0_75]
      at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739) ~[na:1.7.0_75]
      at com.apigee.nio.ClientChannel.finishConnect(ClientChannel.java:121) ~[nio-1.0.0.jar:na]
      at com.apigee.nio.handlers.NIOThread.run(NIOThread.java:108) ~[nio-1.0.0.jar:na]
  3. telnet 명령어를 사용하여 각 메시지 프로세서에서 특정 백엔드 서버에 직접 연결할 수 있는지 확인합니다.
    1. 백엔드 서버가 단일 IP 주소로 확인되면 다음 명령어를 사용합니다.
      telnet BackendServer-IPaddress 443
                
    2. 백엔드 서버가 여러 IP 주소로 확인되는 경우 아래와 같이 telnet 명령어에서 백엔드 서버의 호스트 이름을 사용합니다.
      telnet BackendServer-HostName 443
                
  4. 백엔드 서버에 연결할 수 있는 경우 Connected to backend-server와 같은 메시지가 표시될 수 있습니다. 백엔드 서버에 연결할 수 없는 경우 메시지 프로세서의 IP 주소가 특정 백엔드 서버에서 허용 목록에 추가되지 않았기 때문일 수 있습니다.

해상도

Edge 메시지 프로세서의 트래픽이 백엔드 서버에 액세스할 수 있도록 특정 백엔드 서버에서 메시지 프로세서의 IP 주소에 대한 액세스 권한을 부여합니다. 예를 들어 Linux에서는 iptables를 사용하여 백엔드 서버에서 메시지 프로세서의 IP 주소로부터의 트래픽을 허용할 수 있습니다.

문제가 계속되면 네트워크 관리자와 협력하여 문제를 파악하고 해결하세요. Apigee의 추가 지원이 필요한 경우 Apigee 지원팀에 문의하세요.

잘못된 대상 서버 호스트 이름

진단

대상 서버에 지정된 호스트 이름이 잘못된 경우 오류 코드 messaging.adaptors.http.flow.ServiceUnavailable.와 함께 503 서비스 사용 불가 응답이 표시될 수 있습니다.

추적 도구

Trace 도구를 사용하여 진단하려면 다음 단계를 따르세요.

  1. 문제가 여전히 활성 상태인 경우 영향을 받는 API에 대해 추적 세션을 사용 설정합니다.
  2. API를 호출하고 문제를 재현합니다(오류 코드 messaging.adaptors.http.flow.ServiceUnavailable.이 있는 503 서비스 사용 불가).
  3. 실패한 요청 중 하나를 선택합니다.
  4. 트레이스의 다양한 단계를 탐색하여 장애가 발생한 위치를 찾습니다.
  5. 오류가 있는 FlowInfo를 선택합니다. error.cause 필드에서 자세한 정보를 확인할 수 있습니다. 다음 예와 같이 실패 원인을 확인할 수 있습니다.

    트레이스에 error.cause가 표시된 샘플 요청

    트레이스에 error.cause가 표시된 샘플 요청
  6. error.cause호스트에 연결할 수 없음이 표시되면 오류의 원인은 다음 중 하나일 수 있습니다.
    • 대상 서버/대상 엔드포인트 구성에 지정된 호스트 이름이 잘못되었거나 원하지 않는 공백 또는 특수문자가 있습니다.

      예를 들어 아래와 같이 호스트 이름에 원치 않는 공백이 있습니다.
      "demo-target.apigee.net "
                        
    • AssignMessage 또는 JavaScript 정책을 사용하여 API 프록시에서 target.url 변수로 덮어쓴 호스트 이름이 잘못되었거나 공백 또는 원치 않는 특수문자가 있습니다.
  7. 대상 엔드포인트 구성 또는 대상 서버 정의를 확인하여 대상 서버 호스트 이름이 잘못되었거나 원하지 않는 공백이나 특수 문자가 있는지 확인합니다.
  8. 타겟 서버 호스트가 동적으로 생성된 경우 이를 만드는 데 사용된 적절한 정책 (예: AssignMessage/JavaScript 정책)을 확인합니다. 대상 서버 호스트 이름이 잘못되었거나 원치 않는 공백이나 특수문자가 있는지 확인합니다.
  9. 대상 서버 호스트 이름을 확인한 후 호스트 이름에서 nslookup/dig 명령어를 실행하여 확인할 수 있는지 확인합니다.

    예를 들어 원치 않는 공백이 있는 호스트 이름에 nslookup 명령어를 실행하면 다음 출력이 반환됩니다.

    nslookup "demo-target.apigee.net "
    Server:	49.205.75.2
    Address:	49.205.75.2#53
    
    ** server can't find demo-target.apigee.net\032: NXDOMAIN
  10. 운영체제 명령어 nslookup도 호스트 이름을 확인할 수 없는 경우 이 문제의 원인은 대상 서버에 사용된 호스트 이름이 잘못되었기 때문입니다.

    해결 방법으로 이동합니다.

메시지 프로세서 로그

메시지 프로세서 로그를 사용하여 진단하려면 다음 단계를 따르세요.

  1. 실패한 요청의 메시지 ID를 확인합니다.
  2. 메시지 프로세서 로그에서 메시지 ID를 검색합니다. (/opt/apigee/var/log/edge-message-processor/logs/system.log)
  3. 다음 경고/오류 메시지가 표시되면 메시지 프로세서가 호스트 이름을 확인할 수 없는 것입니다. 메시지가 일시중지되므로 일부 메시지 ID/요청에 대해 이 경고 메시지가 표시되지 않을 수 있습니다.
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 WARN S.HTTPCLIENTSERVICE - DNSCache$2.failed() : Failed to resolve hostname www.somehost.com . Reason mocktarget.apigee.net : Name or service not known. This log message will snooze for 2 hours
        
  4. 이후 대상 서버 호스트에 연결할 수 없으므로 메시지 프로세서가 DNS 캐시에서 주소를 삭제하는 경고 메시지가 표시됩니다.
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 WARN  c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.addressNotReachable() : The last address has been removed from Address list null refreshing
        
  5. 그러면 메시지 프로세서가 '호스트에 연결할 수 없음' 예외와 함께 실패하는 메시지가 표시될 수 있습니다. 오류 메시지의 일부로 호스트 이름이 표시되는 경우도 있습니다.
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to demo-target.apigee.net  failed with exception {}
    java.lang.RuntimeException: Host not reachable
    	at com.apigee.protocol.http.HTTPClient$Context.initConnect(HTTPClient.java:704)
    	at com.apigee.protocol.http.HTTPClient$Context.send(HTTPClient.java:675)
    	at com.apigee.messaging.adaptors.http.flow.data.TargetRequestSender.sendRequest(TargetRequestSender.java:234)
    	<snipped>
        
  6. 아래와 같이 호스트 이름을 확인할 수 없거나 연결할 수 없는 경우 null로 표시될 수 있습니다.
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to null failed with exception {}
    java.lang.RuntimeException: Host not reachable
    	at com.apigee.protocol.http.HTTPClient$Context.initConnect(HTTPClient.java:704)
    	at com.apigee.protocol.http.HTTPClient$Context.send(HTTPClient.java:675)
    	at com.apigee.messaging.adaptors.http.flow.data.TargetRequestSender.sendRequest(TargetRequestSender.java:234)
    	<snipped>
        
  7. Host not reachable 오류는 일반적으로 다음 경우 중 하나에서 발생합니다.
    • 대상 서버/대상 엔드포인트 구성에 지정된 호스트 이름이 잘못되었거나 원하지 않는 공백 또는 특수문자가 있습니다.

      예를 들어 다음 오류 메시지의 호스트 이름 'demo-target.apigee.net '에 원치 않는 공백이 있습니다.
      NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to demo-target.apigee.net  failed with exception
              
    • AssignMessage 또는 JavaScript 정책을 사용하여 API 프록시에서 target.url 변수로 덮어쓴 호스트 이름이 잘못되었거나 공백 또는 원치 않는 특수문자가 있습니다.
  8. 다음 중 하나를 사용하여 메시지 프로세서가 통신하려고 하는 대상 서버 호스트 이름을 확인합니다.
    1. Host not reachable 가 포함된 오류 메시지를 자세히 검토합니다.
    2. 오류 메시지에 호스트 이름이 표시되면 공백이나 특수문자를 포함하여 호스트 이름을 복사합니다.
    3. 다음 오류 메시지에 표시된 것처럼 오류 메시지에 호스트 이름이 null로 표시되는 경우
      org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to null failed with exception {}
              
      1. 실패한 API 프록시에 사용된 대상 서버 정의를 확인하여 호스트 이름을 확인합니다.
      2. 타겟 서버 호스트가 동적으로 생성된 경우 이를 생성하는 데 사용된 적절한 정책 (예: AssignMessage/JavaScript 정책)을 확인합니다.
  9. 타겟 서버 호스트 이름을 확인한 후 호스트 이름에서 nslookup/dig 명령어를 실행하여 확인할 수 있는지 확인합니다.

    예를 들어 공백이 있는 호스트 이름에서 nslookup 명령어를 실행합니다.

    nslookup "demo-target.apigee.net "
    Server:	49.205.75.2
    Address:	49.205.75.2#53
    
    ** server can't find demo-target.apigee.net\032: NXDOMAIN
          
  10. 운영체제 명령어 nslookup에서도 호스트 이름을 확인할 수 없는 경우 이 문제의 원인은 대상 서버에 사용된 호스트 이름이 잘못되었기 때문입니다.

해상도

  1. 대상 엔드포인트 구성 또는 대상 서버 정의에 지정된 대상 서버 호스트 이름이 올바르고 원하지 않는 공백이나 특수문자가 없는지 확인합니다.
  2. AssignMessage/JavaScript 정책을 사용하여 타겟 서버 호스트 이름을 동적으로 생성하는 경우 정책 정의와 코드를 조사하고 타겟 서버 호스트 이름이 올바르게 생성되는지 확인하세요.

SSL 핸드셰이크 실패

TLS/SSL 핸드셰이크 오류에 관한 전체 문제 해결 플레이북이 있습니다. SSL 핸드셰이크 실패를 참고하세요.

문제의 출처 확인

특정 유형의 오류는 수신 (북바운드) 또는 송신 (사우스바운드) 연결에서 발생할 수 있습니다. 클라이언트 애플리케이션과 Edge 사이에 수신 (북바운드) 오류가 발생합니다. Edge와 백엔드 타겟 서버 간에 아웃바운드 (남쪽) 오류가 발생합니다. 이러한 종류의 문제를 진단하려면 먼저 오류가 업스트림 연결에서 발생하는지 다운스트림 연결에서 발생하는지 파악해야 합니다.

northbound 및 southbound 연결 이해

Edge에서는 수신 또는 발신 연결에서 503 서비스를 사용할 수 없음 오류가 발생할 수 있습니다.

  • 수신 (또는 업스트림) 연결 - 클라이언트 애플리케이션과 Edge 라우터 간의 연결입니다. 라우터는 시스템에 전송된 수신 요청을 처리하는 Apigee Edge의 구성요소입니다.
  • 아웃바운드 (또는 다운스트림) 연결 - Edge 메시지 프로세서와 백엔드 서버 간의 연결입니다. 메시지 프로세서는 API 요청을 백엔드 대상 서버에 프록시하는 Apigee Edge의 구성요소입니다.

Edge Public Cloud 사용자는 라우터나 메시지 프로세서와 같은 내부 구성요소를 알지 못할 수 있습니다. 이러한 내부 구성요소는 공개 클라우드 사용자에게 표시되거나 액세스할 수 없습니다. 가능한 경우 이러한 구성요소에 직접 액세스하지 않아도 문제를 조사할 수 있는 대체 방법을 제공합니다.

다음 그림은 Apigee Edge의 Northbound 및 Southbound 연결을 보여줍니다.

Edge를 통해 백엔드 서버 (하위 연결)로 연결되는 클라이언트 애플리케이션 (상위 연결)의 흐름

503 서비스를 사용할 수 없음 오류가 발생한 위치 확인

다음 절차 중 하나를 사용하여 503 서비스를 사용할 수 없음 오류가 북바운드 또는 사우스바운드 연결에서 발생했는지 확인합니다.

UI 트레이스

UI Trace를 사용하여 오류가 발생한 위치를 확인하려면 다음 단계를 따르세요.

  1. 문제가 여전히 활성 상태인 경우 영향을 받는 API의 UI 트레이스를 사용 설정합니다.
  2. 실패한 API 요청의 UI 추적에 타겟 요청 흐름 중에 503 Service Unavailable 오류가 발생하거나 백엔드 서버에서 전송된 것으로 표시되면 문제가 다운스트림 (즉, 메시지 프로세서와 백엔드 서버 간)에 있는 것입니다.
  3. 특정 API 호출의 트레이스가 표시되지 않으면 클라이언트 애플리케이션과 라우터 간의 업스트림에 문제가 있는 것입니다.

API 모니터링

API 모니터링을 사용하면 문제 영역을 빠르게 격리하여 오류, 성능, 지연 시간 문제 및 개발자 앱, API 프록시, 백엔드 대상, API 플랫폼과 같은 원인을 진단할 수 있습니다.

API 모니터링을 사용하여 API의 5xx 문제를 해결하는 방법을 보여주는 샘플 시나리오를 단계별로 살펴봅니다. 예를 들어 messaging.adaptors.http.flow.ServiceUnavailable 오류 수가 특정 기준점을 초과할 때 알림을 받도록 설정할 수 있습니다.

NGINX 액세스 로그

UI Trace를 사용하여 오류가 발생한 위치를 확인하려면 다음 단계를 따르세요.

문제가 이전에 발생한 적이 있거나 간헐적으로 발생하여 트레이스를 캡처할 수 없는 경우 다음 단계를 따르세요.

  1. NGINX 액세스 로그 (/opt/apigee/var/log/edge-router/nginx/ org-env.port_access_log)를 확인합니다.
  2. 특정 API 프록시에 503 오류가 있는지 검색합니다.
  3. 특정 시간에 특정 API에 대해 503 오류를 식별할 수 있는 경우 다운스트림 연결 (메시지 프로세서와 백엔드 서버 간)에서 문제가 발생한 것입니다.
  4. 그렇지 않으면 북바운드 연결 (클라이언트 애플리케이션과 라우터 간)에서 문제가 발생한 것입니다.