현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동 정보
증상
Edge UI에 애널리틱스 대시보드 (프록시 성능, 타겟 성능 등)의 데이터가 표시되지 않습니다. 모든 대시보드에는 다음 메시지가 표시됩니다.
No traffic in the selected date range
오류 메시지
이 문제로 인해 관찰 가능한 오류가 발생하지는 않습니다.
가능한 원인
다음 표에는 이 문제의 가능한 원인이 나와 있습니다.
원인 | 대상: |
---|---|
조직-환경에 API 트래픽 없음 | 프라이빗 클라우드 사용자를 위한 에지 |
Postgres 데이터베이스에서 사용할 수 있지만 UI에는 데이터가 표시되지 않음 | 프라이빗 클라우드 사용자를 위한 에지 |
Analytics 데이터가 Postgres 데이터베이스로 푸시되지 않음 | 프라이빗 클라우드 사용자를 위한 에지 |
잘못된 애널리틱스 배포 | 프라이빗 클라우드 사용자를 위한 에지 |
오래된 애널리틱스 서버 UUID | 프라이빗 클라우드 사용자를 위한 에지 |
조직 환경에 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 쿼리를 사용하여 org-env에 대한 테이블이 있는지 확인합니다.
\d analytics."orgname.envname.fact"
- 다음 SQL 쿼리를 사용하여 Postgres 데이터베이스에서 최신 데이터를 사용할 수 있는지 확인합니다.
select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
- 최신 타임스탬프가 매우 오래되었거나 null이면 Postgres 데이터베이스에서 데이터를 사용할 수 없음을 나타냅니다. 이 문제는 Qpid 서버에서 Postgres 데이터베이스로 데이터가 푸시되지 않기 때문일 수 있습니다. Postgres Database로 푸시되지 않는 애널리틱스 데이터로 진행합니다.
- 마스터 노드의 Postgres 데이터베이스에서 최신 데이터를 사용할 수 있으면 아래 단계에 따라 데이터가 Edge UI에 표시되지 않는 이유를 진단하세요.
진단
- Chrome 브라우저에서 개발자 도구를 사용 설정하고 아래 단계에 따라 분석 대시보드 중 하나에서 사용되는 API를 가져옵니다.
- 개발자 도구에서 네트워크 탭을 선택합니다.
- 녹화 시작
- 애널리틱스 대시보드를 새로고침합니다.
- 개발자 도구의 왼쪽 패널에서 "apiproxy?_optimized...".가 있는 행을 선택합니다.
- 개발자 도구의 오른쪽 패널에서 'Headers' 탭을 선택하고 'Request 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 지원팀에 문의하세요.
Analytics 데이터가 Postgres 데이터베이스로 푸시되지 않음
진단
Postgres 데이터베이스에서 사용할 수 있지만 UI에는 표시되지 않는 데이터에 정의된 대로 데이터가 Qpid 서버에서 Postgres 데이터베이스로 푸시되지 않으면 다음 단계를 수행합니다.
- 아래 명령어
/opt/apigee/bin/apigee-service edge-qpid-server status
를 실행하여 각 Qpid 서버가 작동되어 실행 중인지 확인합니다. - Qpid 서버가 다운되면 다시 시작합니다. 그렇지 않으면 5단계로 이동합니다.
/opt/apigee/bin/apigee-service 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
를 살펴보고 오류가 있는지 확인합니다. - 아래 그림과 같이 'Probtable PG is 여전히 다운됨' 또는 '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 Server에 응답할 수 없는 경우에 발생할 수 있습니다.
해상도
- 아래와 같이 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'으로 보여줍니다.
애널리틱스 온보딩 중에 오류가 발생하면 발생할 수 있습니다. 이 오류가 발생하면 Management Server의 메시지가 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' 요소에 나열된 org-env 이름
- 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 Database로 푸시되지 않는 애널리틱스 데이터로 진행합니다.
- Postgres 또는 Qpid 서버의 UUID가 잘못된 경우 관리 서버가 오래된 UUID를 참조하고 있을 가능성이 있습니다.
해상도
비활성 UUID를 삭제하고 서버의 올바른 UUID를 추가하려면 Apigee Edge 지원팀에 문의하세요.