Apigee Edge 문서입니다.
Go to the
Apigee X 문서로 이동합니다. info
증상
분석 대시보드 (프록시 성능, 대상 성능 등)에 Edge UI에 데이터가 표시되지 않습니다. 모든 대시보드에 다음 메시지가 표시됩니다.
No traffic in the selected date range
오류 메시지
이 문제는 관찰 가능한 오류를 발생시키지 않습니다.
가능한 원인
다음 표에는 이 문제의 가능한 원인이 나와 있습니다.
| 원인 | 대상: |
|---|---|
| 조직-환경에 API 트래픽 없음 | Private Cloud용 Edge 사용자 |
| Postgres 데이터베이스에서 데이터를 사용할 수 있지만 UI에 표시되지 않음 | Private Cloud용 Edge 사용자 |
| 분석 데이터가 Postgres 데이터베이스로 푸시되지 않음 | Private Cloud용 Edge 사용자 |
| 잘못된 분석 배포 | Private Cloud용 Edge 사용자 |
| 오래된 분석 서버 UUID | Private Cloud용 Edge 사용자 |
조직-환경에 API 트래픽 없음
진단
- 다음 방법 중 하나를 사용하여 분석 데이터를 보려는 특정 기간에 특정 조직-환경의 API 프록시에 트래픽이 있는지 확인합니다.
- 현재 사용자가 사용 중인 API의 트레이스를 사용 설정하고 트레이스에서 요청을 가져올 수 있는지 확인합니다.
- NGINX 액세스 로그
(
/opt/apigee/var/log/edge-router/nginx/logs/access.log)를 보고 특정 기간의 API 프록시에 새 항목이 있는지 확인합니다. - API 프록시의 정보를 Syslog, Splunk, Loggly, 등의 로그 서버에 로깅하는 경우 특정 기간의 API 프록시에 대한 항목이 이러한 로그 서버에 있는지 확인할 수 있습니다.
- 특정 기간에 트래픽 (API 요청)이 없으면 분석 데이터를 사용할 수 없습니다. 분석 대시보드에 "선택한 기간에 트래픽이 없습니다"가 표시됩니다.
해결 방법
- 특정 조직-환경에서 하나 이상의 API 프록시를 호출합니다.
- 몇 초 정도 기다린 후 시간 탭에서 분석 대시보드를 보고 데이터가 표시되는지 확인합니다.
- 문제가 지속되면 Postgres 데이터베이스에서 데이터를 사용할 수 있지만 UI에 표시되지 않음으로 진행합니다.
Postgres 데이터베이스에서 데이터를 사용할 수 있지만 UI에 표시되지 않음
증상
먼저 Postgres 데이터베이스에서 최신 분석 데이터를 사용할 수 있는지 확인합니다.
Postgres 마스터 노드에서 최신 분석 데이터를 사용할 수 있는지 확인하려면 다음 단계를 따르세요.
- 각 Postgres 서버에 로그인하고 다음 명령어를 실행하여 마스터 Postgres 노드에 있는지 확인합니다:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
- 마스터 Postgres 노드에서 PostgreSQL에 로그인합니다.
psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
- Postgres
데이터베이스에서 다음 SQL 쿼리를 사용하여 조직-환경의 테이블이 있는지 확인합니다.
\d analytics."orgname.envname.fact"
- 다음 SQL
쿼리를 사용하여 Postgres 데이터베이스에서 최신 데이터를 사용할 수 있는지 확인합니다.
select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
- 최신 타임스탬프가 매우 오래되었거나 null이면 Postgres 데이터베이스에서 데이터를 사용할 수 없음을 나타냅니다. 이 문제의 원인은 데이터가 Qpid 서버에서 Postgres 데이터베이스로 푸시되지 않는 것일 수 있습니다. 분석 데이터가 Postgres 데이터베이스로 푸시되지 않음으로 진행합니다.
- 마스터 노드의 Postgres 데이터베이스에서 최신 데이터를 사용할 수 있는 경우 아래 단계에 따라 Edge UI에 데이터가 표시되지 않는 이유를 진단합니다.
진단
- Chrome 브라우저에서 개발자 도구
를 사용 설정하고 아래 단계에 따라 분석 대시보드 중 하나에서 사용되는 API를 가져옵니다.
- 개발자 도구에서 네트워크 탭을 선택합니다.
- 녹화 시작
- 분석 대시보드를 다시 로드합니다.
- 개발자 도구의 왼쪽 패널에서 "apiproxy?_optimized..."가 있는 행을 선택합니다.
- 개발자 도구의 오른쪽 패널에서 '헤더' 탭을 선택하고 '요청 URL'을 기록해 둡니다.
- 다음은 개발자 도구의 샘플 출력입니다.
프록시 성능 대시보드의 개발자 도구의 네트워크 탭에서 프록시 성능 대시보드에 사용된 API를 보여주는 샘플 출력

- 관리 API 호출을 직접 실행하고 결과를 가져오는지 확인합니다. 다음은 프록시 성능 대시보드의 일 탭에 대한 샘플 API
호출입니다.
curl -u username:password "http://management_server_IP_address:8080/v1/organizations/ org_name/environments/env_name/stats/apiproxy?limit=14400& select=sum(message_count),sum(is_error),avg(total_response_time), avg(target_response_time)&sort=DESC&sortby=sum(message_count),sum(is_error), avg(total_response_time),avg(target_response_time)&timeRange=08%2F9%2F2017+ 18:00:00~08%2F10%2F2017+18:00:00&timeUnit=hour&tsAscending=true"
- 성공 응답이 표시되지만 데이터가 없는 경우 네트워크 연결 문제로 인해 관리 서버가 Postgres 서버에서 데이터를 가져올 수 없음을 나타냅니다.
- 관리 서버에서 Postgres 서버에 연결할 수 있는지 확인합니다.
telnet Postgres_server_IP_address 5432
- Postgres 서버에 연결할 수 없는 경우 포트 5432에 방화벽 제한이 있는지 확인합니다.
- 방화벽 제한이 있는 경우 관리 서버 가 Postgres 서버에서 데이터를 가져올 수 없는 원인일 수 있습니다.
해결 방법
- 방화벽 제한이 있는 경우 관리 서버가 Postgres 서버와 통신할 수 있도록 방화벽 제한을 삭제합니다.
- 방화벽 제한이 없는 경우 네트워크 오류로 인해 이 문제가 발생할 수 있습니다.
- 관리 서버에 네트워크 오류가 있는 경우 다시 시작하면 문제가 해결될 수 있습니다.
- 아래 명령어를 사용하여 모든 관리 서버를 하나씩 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Edge UI에서 분석 데이터를 볼 수 있는지 확인합니다.
그래도 데이터가 표시되지 않으면 Apigee Edge 지원팀에 문의하세요.
분석 데이터가 Postgres 데이터베이스로 푸시되지 않음
진단
Postgres 데이터베이스에서 데이터를 사용할 수 있지만 UI에 표시되지 않음에서 확인한 대로 Qpid 서버에서 Postgres 데이터베이스로 데이터가 푸시되지 않는 경우 다음 단계를 수행 합니다.
- 아래 명령어를 실행하여 각 Qpid 서버가 실행 중인지 확인합니다.
/opt/apigee/apigee-service/bin edge-qpid-server status
- Qpid 서버가 다운된 경우 다시 시작합니다. 그렇지 않으면 5단계로 건너뜁니다.
/opt/apigee/apigee-service/bin edge-qpid-server restart
- 잠시 기다린 후 Postgres 데이터베이스에서 최신 데이터를 사용할 수 있는지 다시 확인합니다.
- PostgreSQL에 로그인합니다.
psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
- 아래 SQL 쿼리를 실행하여 최신 데이터를 사용할 수 있는지 확인합니다.
select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
- PostgreSQL에 로그인합니다.
- 최신 데이터를 사용할 수 있는 경우 다음 단계를 건너뛰고 해결 방법 섹션의 마지막 단계로 진행합니다. 최신 데이터를 사용할 수 없는 경우 다음 단계를 진행합니다.
- Qpid 서버 대기열의 메시지가 Postgres 데이터베이스로 푸시되고 있는지 확인합니다.
qpid-stat -q command를 실행하고 msgIn 및 msgOut 열 값을 확인합니다.- 다음은 msgIn과 msgOut이 같지 않음을 보여주는 샘플 출력입니다. 이는 메시지가 Qpid 서버에서 Postgres 데이터베이스로 푸시되지 않음을 나타냅니다.

- msgIn 및 msgOut 열이 일치하지 않는 경우 Qpid
서버 로그
/opt/apigee/var/log/edge-qpid-server/system.log를 확인하고 오류가 있는지 확인합니다. - 아래 그림과 같이 "PG가 아직 다운된 것 같습니다" 또는
"FATAL: 죄송합니다. 클라이언트가 너무 많습니다"와 같은 오류 메시지가 표시될 수 있습니다.
2017-07-28 09:56:39,896 ax-q-axgroup001-persistpool-thread-3 WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Found the exception to be retriable - . Error observed while trying to connect to jdbc:postgresql://PG_IP_address:5432/apigee Initial referenced UUID when execution started in this thread was a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d Probably PG is still down. PG set used - [a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d] 2017-07-28 09:56:39,896 ax-q-axgroup001-persistpool-thread-3 WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Could not get JDBC Connection; nested exception is org.postgresql.util.PSQLException: FATAL: sorry, too many clients already 2017-07-28 09:56:53,617 pool-7-thread-1 WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Found the exception to be retriable - . Error observed while trying to connect to jdbc:postgresql://PG_IP_address:5432/apigee Initial referenced UUID when execution started in this thread was a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d Probably PG is still down. PG set used - [a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d] 2017-07-28 09:56:53,617 pool-7-thread-1 WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (FATAL: sorry, too many clients already)
이는 Postgres 서버가 너무 많은 SQL 쿼리를 실행하거나 CPU가 높게 실행되어 Qpid 서버에 응답할 수 없는 경우 발생할 수 있습니다.
해결 방법
- 아래와 같이 Postgres 서버와 PostgreSQL을 다시 시작합니다.
/opt/apigee/bin/apigee-service edge-postgres-server restart
/opt/apigee/bin/apigee-service apigee-postgresql restart
- 이 다시 시작은 이전의 모든 SQL 쿼리가 중지되고 Postgres 데이터베이스에 새 연결을 허용해야 합니다.
- 분석 대시보드를 다시 로드하고 분석 데이터가 표시되는지 확인합니다.
문제가 계속되면 Apigee Edge 지원팀에 문의하세요.
잘못된 분석 배포
진단
- 다음 API 호출을 사용하여 분석 배포 상태를 가져옵니다.
curl -u user_email:password http://management_server_host:port /v1/organizations/orgname/environments/envname/provisioning/axstatus
- API 호출 결과에서 Qpid 및 Postgres 서버의 상태를 확인합니다.
- Qpid 및 Postgres 서버의 상태가 "SUCCESS"로 표시되면 분석 서버가 올바르게 연결되어 있음을 나타냅니다. 오래된 분석 서버 UUID로 진행합니다.
- Qpid/Postgres 서버의 상태가 "UNKNOWN" 또는 "FAILURE"로 표시되면 해당 서버에 문제가 있음을 나타냅니다.
예를 들어 다음 시나리오에서는 Postgres 서버의 상태가 "UNKNOWN"으로 표시됩니다.

이는 분석 온보딩 중에 오류가 발생한 경우 발생할 수 있습니다. 이 오류로 인해 관리 서버의 메시지가 Postgres 서버에 도달하지 못합니다.
해결 방법
이 문제는 일반적으로 'FAILURE' 또는 'UNKNOWN'을 표시한 서버를 다시 시작하여 해결할 수 있습니다.
- 분석 연결 상태가 "FAILURE" 또는 "UNKNOWN"으로 표시된 각 서버를
다음 명령어를 사용하여 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service component restart
- 예를 들면 다음과 같습니다.
- Qpid 서버에서 문제가 발생하는 경우 Qpid 서버를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
- Postgres 서버에서 문제가 발생하는 경우 마스터 및 슬레이브
Postgres 서버 노드를 모두 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
- Qpid 서버에서 문제가 발생하는 경우 Qpid 서버를 다시 시작합니다.
- 위의 예에서 Postgres 서버에 'UNKNOWN' 메시지가 표시되므로 마스터 및 슬레이브 Postgres 서버를 모두 다시 시작해야 합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
오래된 분석 서버 UUID
진단
- 다음 API 호출을 사용하여 분석 구성을 가져옵니다.
curl -u user_email:password http://management-server-host:port/v1/analytics/groups/ax
다음은 위 API의 샘플 출력입니다.
[ { "name" : "axgroup001", "properties" : { "consumer-type" : "ax" }, "scopes" : [ "myorg~prod", "myorg~test" ], "uuids" : { "aries-datastore" : [ ], "postgres-server" : [ "6777...2db14" ], "dw-server" : [ ], "qpid-server" : [ "774e...fb23", "29f3...8c11" ] }, "consumer-groups" : [ { "name" : "consumer-group-001", "consumers" : [ "774e...8c11" ], "datastores" : [ "6777...db14" ], "properties" : { } } ], "data-processors" : { } } ]
- 출력에서 다음 정보가 올바른지 확인합니다.
- 'scopes' 요소에 나열된 조직-환경 이름
- Postgres 서버 및 Qpid 서버의 UUID
- 각 Postgres 서버 노드에서 다음 명령어를 실행하여 Postgres 서버 UUID를 가져옵니다.
curl 0:8084/v1/servers/self/uuid
- 각 Qpid
서버 노드에서 다음 명령어를 실행하여 Qpid 서버 UUID를 가져옵니다.
curl 0:8083/v1/servers/self/uuid
- 각 Postgres 서버 노드에서 다음 명령어를 실행하여 Postgres 서버 UUID를 가져옵니다.
- 모든 정보가 올바르면 분석 데이터 Postgres 데이터베이스로 푸시되지 않음으로 진행합니다.
- Postgres 또는 Qpid 서버의 UUID가 잘못된 경우 관리 서버가 오래된 UUID를 참조하고 있을 수 있습니다.
해결 방법
오래된 UUID를 삭제하고 서버의 올바른 UUID를 추가하려면 Apigee Edge 지원팀에 문의하세요.