503 서비스를 사용할 수 없음

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

동영상

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"
       }
    }
}
      

가능한 원인

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

503 Service Unavailable 응답의 가능한 원인은 다음과 같습니다.

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

일반적인 진단 단계

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

추적 도구

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

  1. 문제가 여전히 활성 상태인 경우 영향을 받은 API에 트레이스 세션을 사용 설정합니다.
  2. API를 호출하여 문제를 재현합니다. 503 서비스를 사용할 수 없음(오류 코드: messaging.adaptors.http.flow.ServiceUnavailable.)
  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-codemessaging.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 Refresh라는 키워드가 포함된 메시지를 검색합니다. 불량하거나 잘못된 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 주소로 확인됩니다. 잘못된/잘못된 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 에지 메시지 프로세서가 백엔드 서버에 연결하려고 할 때 다음 문제 중 하나가 발생하면 연결 오류가 발생합니다.

  • 메시지 프로세서가 미리 설정된 연결 제한 시간 내에 연결할 수 없습니다. (기본값: 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 denied 오류는 백엔드 서버에서 연결을 거부했음을 나타냅니다.
      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 주소가 특정 백엔드 서버의 허용 목록에 없기 때문일 수 있습니다.

해상도

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

문제가 지속되면 네트워크 관리자에게 문의하여 문제를 확인하고 해결하세요. Apigee에서 추가 지원이 필요한 경우 Apigee 지원팀에 문의하세요.

대상 서버 호스트 이름이 잘못되었습니다.

진단

대상 서버에 지정된 호스트 이름이 잘못된 경우 오류 코드 messaging.adaptors.http.flow.ServiceUnavailable.와 함께 503 Service Unavailable 응답을 받을 수 있습니다.

추적 도구

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

  1. 문제가 여전히 활성 상태인 경우 영향을 받은 API에 트레이스 세션을 사용 설정합니다.
  2. API를 호출하여 문제를 재현합니다. 503 서비스를 사용할 수 없음(오류 코드: messaging.adaptors.http.flow.ServiceUnavailable.)
  3. 실패한 요청 중 하나를 선택합니다.
  4. trace의 다양한 단계를 살펴보고 실패가 발생한 위치를 찾습니다.
  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 또는 자바스크립트 정책을 사용하는 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/자바스크립트 정책을 사용하여 대상 서버 호스트 이름을 동적으로 생성하는 경우, 정책 정의 및 코드를 조사하고 대상 서버 호스트 이름이 올바르게 생성되었는지 확인하세요.

SSL 핸드셰이크 실패

전체 문제 해결 플레이북은 TLS/SSL 핸드셰이크 오류 전용입니다. SSL 핸드셰이크 실패를 참조하세요.

문제의 원인 파악

특정 유형의 오류는 수신 (북쪽 방면) 또는 나가는 (남쪽 경계) 연결에서 발생할 수 있습니다. 클라이언트 애플리케이션과 Edge 간에 수신 (북쪽 경계) 오류가 발생합니다. 에지와 백엔드 대상 서버 간에 발신 (남쪽 방면) 오류가 발생합니다. 이러한 문제를 진단하려면 먼저 오류가 북쪽 연결과 남쪽 연결 중 어디에서 발생하는지 파악해야 합니다.

북쪽 방면 및 남쪽 경계 연결 이해

Edge에서는 수신 또는 발신 연결에 503 Service Unavailable 오류가 발생할 수 있습니다.

  • 수신 (또는 북쪽 경계) 연결 - 클라이언트 애플리케이션과 에지 라우터 간의 연결입니다. 라우터는 시스템에 대한 수신 요청을 처리하는 Apigee Edge의 구성요소입니다.
  • 발신 (또는 남쪽 경계) 연결 - 에지 메시지 프로세서와 백엔드 서버 간의 연결입니다. 메시지 프로세서는 API 요청을 백엔드 대상 서버로 프록시하는 Apigee Edge의 구성요소입니다.

Edge Public Cloud 사용자라면 라우터나 메시지 프로세서와 같은 내부 구성요소를 모를 수 있습니다. 이러한 내부 구성요소는 퍼블릭 클라우드 사용자에게 표시되거나 액세스할 수 없습니다. 가능한 경우 Google에서는 이러한 구성요소에 직접 액세스할 필요가 없는 문제를 조사할 수 있는 다른 방법을 제공합니다.

다음 그림은 Apigee Edge의 북쪽 방면 및 남쪽 방면 연결을 보여줍니다.

Edge를 통해 백엔드 서버 (남쪽 경계 연결)로 이동하는 클라이언트 애플리케이션 (북쪽 경계 연결) 흐름

503 Service Unavailable 오류가 발생한 위치 확인

다음 절차 중 하나를 사용하여 503 Service Unavailable 오류가 북쪽 연결 또는 남쪽 연결에서 발생했는지 확인합니다.

UI 트레이스

UI 트레이스를 사용하여 오류가 발생한 위치를 확인하는 방법은 다음과 같습니다.

  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 트레이스를 사용하여 오류가 발생한 위치를 확인하는 방법은 다음과 같습니다.

이전에 문제가 발생했거나 문제가 간헐적으로 발생하여 트레이스를 캡처할 수 없는 경우 다음 단계를 수행합니다.

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