데이터가 분석 대시보드에 표시되지 않음

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

증상

Edge UI에 애널리틱스 대시보드 (프록시 성능, 타겟 성능 등)의 데이터가 표시되지 않습니다. 모든 대시보드에는 다음 메시지가 표시됩니다.

No traffic in the selected date range

오류 메시지

이 문제로 인해 관찰 가능한 오류가 발생하지는 않습니다.

가능한 원인

다음 표에는 이 문제의 가능한 원인이 나와 있습니다.

원인 대상:
조직-환경에 API 트래픽 없음 프라이빗 클라우드 사용자를 위한 에지
Postgres 데이터베이스에서 사용할 수 있지만 UI에는 데이터가 표시되지 않음 프라이빗 클라우드 사용자를 위한 에지
Analytics 데이터가 Postgres 데이터베이스로 푸시되지 않음 프라이빗 클라우드 사용자를 위한 에지
잘못된 애널리틱스 배포 프라이빗 클라우드 사용자를 위한 에지
오래된 애널리틱스 서버 UUID 프라이빗 클라우드 사용자를 위한 에지

조직 환경에 API 트래픽 없음

진단

  1. 다음 방법 중 하나를 사용하여 분석 데이터를 보려는 특정 기간 동안 특정 조직 환경에 API 프록시에 대한 트래픽이 있는지 확인합니다.
    1. 현재 사용자가 사용 중인 API에 대해 트레이스를 사용 설정하고 트레이스에 요청을 가져올 수 있는지 확인합니다.
    2. NGINX 액세스 로그(/opt/apigee/var/log/edge-router/nginx/logs/access.log))를 보고 특정 기간의 API 프록시에 대한 새 항목이 있는지 확인합니다.
    3. API 프록시의 정보를 Syslog, Splunk, Loggly 등의 로그 서버에 로깅하는 경우 이러한 로그 서버에 특정 기간의 API 프록시 항목이 있는지 확인할 수 있습니다.
  2. 특정 기간 동안 트래픽이 없으면 (API 요청 없음) 분석 데이터를 사용할 수 없습니다. 분석 대시보드에 '선택한 기간 내에 트래픽 없음'이 표시됩니다.

해상도

  1. 특정 조직 환경에서 하나 이상의 API 프록시를 호출합니다.
  2. 몇 초 동안 기다린 후 시간 탭에서 분석 대시보드를 보고 데이터가 표시되는지 확인합니다.
  3. 문제가 지속되면 Postgres 데이터베이스에서 사용할 수 있지만 UI에는 표시되지 않는 데이터를 진행합니다.

Postgres 데이터베이스에서 사용할 수 있지만 UI에는 표시되지 않는 데이터

증상

먼저 Postgres 데이터베이스에서 최신 애널리틱스 데이터의 사용 가능 여부를 확인합니다.

Postgres 마스터 노드에서 최신 애널리틱스 데이터를 사용할 수 있는지 확인하려면 다음 안내를 따르세요.

  1. 각 Postgres 서버에 로그인하고 다음 명령어를 실행하여 마스터 Postgres 노드에 있는지 확인합니다.
    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
    
  2. 마스터 Postgres 노드에서 PostgreSQL에 로그인합니다.
    psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
    
  3. Postgres 데이터베이스에서 다음 SQL 쿼리를 사용하여 org-env에 대한 테이블이 있는지 확인합니다.
    \d analytics."orgname.envname.fact"
    
  4. 다음 SQL 쿼리를 사용하여 Postgres 데이터베이스에서 최신 데이터를 사용할 수 있는지 확인합니다.
    select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
    
  5. 최신 타임스탬프가 매우 오래되었거나 null이면 Postgres 데이터베이스에서 데이터를 사용할 수 없음을 나타냅니다. 이 문제는 Qpid 서버에서 Postgres 데이터베이스로 데이터가 푸시되지 않기 때문일 수 있습니다. Postgres Database로 푸시되지 않는 애널리틱스 데이터로 진행합니다.
  6. 마스터 노드의 Postgres 데이터베이스에서 최신 데이터를 사용할 수 있으면 아래 단계에 따라 데이터가 Edge UI에 표시되지 않는 이유를 진단하세요.

진단

  1. Chrome 브라우저에서 개발자 도구를 사용 설정하고 아래 단계에 따라 분석 대시보드 중 하나에서 사용되는 API를 가져옵니다.
    1. 개발자 도구에서 네트워크 탭을 선택합니다.
    2. 녹화 시작
    3. 애널리틱스 대시보드를 새로고침합니다.
    4. 개발자 도구의 왼쪽 패널에서 "apiproxy?_optimized...".가 있는 행을 선택합니다.
    5. 개발자 도구의 오른쪽 패널에서 'Headers' 탭을 선택하고 'Request URL'을 확인합니다.
  2. 다음은 개발자 도구의 샘플 출력입니다.

    프록시 성능 대시보드를 위한 개발자 도구의 네트워크 탭에 있는 프록시 성능 대시보드에 사용된 API를 보여주는 샘플 출력

  3. 관리 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"
    
  4. 성공 응답이 표시되지만 데이터가 없으면 관리 서버가 네트워크 연결 문제로 인해 Postgres 서버에서 데이터를 가져올 수 없다는 의미입니다.
  5. 관리 서버에서 Postgres 서버에 연결할 수 있는지 확인합니다.
    telnet Postgres_server_IP_address 5432
    
  6. Postgres 서버에 연결할 수 없는 경우 포트 5432에 방화벽 제한이 있는지 확인하세요.
  7. 방화벽 제한이 있는 경우 관리 서버가 Postgres 서버에서 데이터를 가져오지 못하는 이유일 수 있습니다.

해상도

  1. 방화벽 제한이 있는 경우 관리 서버가 Postgres 서버와 통신할 수 있도록 이를 삭제합니다.
  2. 방화벽 제한이 없는 경우 네트워크 결함 때문일 수 있습니다.
  3. 관리 서버에 네트워크 결함이 있는 경우 이를 다시 시작하면 문제가 해결될 수도 있습니다.
  4. 아래 명령어를 사용하여 모든 관리 서버를 하나씩 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    
  5. Edge UI에서 분석 데이터를 볼 수 있는지 확인합니다.

그래도 데이터가 표시되지 않으면 Apigee Edge 지원팀에 문의하세요.

Analytics 데이터가 Postgres 데이터베이스로 푸시되지 않음

진단

Postgres 데이터베이스에서 사용할 수 있지만 UI에는 표시되지 않는 데이터에 정의된 대로 데이터가 Qpid 서버에서 Postgres 데이터베이스로 푸시되지 않으면 다음 단계를 수행합니다.

  1. 아래 명령어
    /opt/apigee/bin/apigee-service edge-qpid-server status
    
    를 실행하여 각 Qpid 서버가 작동되어 실행 중인지 확인합니다.
  2. Qpid 서버가 다운되면 다시 시작합니다. 그렇지 않으면 5단계로 이동합니다.
    /opt/apigee/bin/apigee-service edge-qpid-server restart
    
  3. 잠시 기다린 후 Postgres 데이터베이스에서 최신 데이터를 사용할 수 있는지 다시 확인합니다.
    1. PostgreSQL에 로그인합니다.
      psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
      
    2. 아래 SQL 쿼리를 실행하여 최신 데이터를 사용할 수 있는지 확인합니다.
      select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
      
  4. 최신 데이터를 사용할 수 있는 경우 다음 단계를 건너뛰고 해결 섹션의 마지막 단계로 진행합니다. 최신 데이터를 사용할 수 없으면 다음 단계를 진행합니다.
  5. Qpid 서버 큐의 메시지가 Postgres 데이터베이스로 푸시되는지 확인합니다.
    1. qpid-stat -q command를 실행하고 msgInmsgOut 열 값을 확인합니다.
    2. 다음은 msgIn과 msgOut이 같지 않음을 보여주는 샘플 출력입니다. 메시지가 Qpid 서버에서 Postgres 데이터베이스로 푸시되지 않음을 나타냅니다.

  6. msgInmsgOut 열에 불일치가 있는 경우 Qpid 서버 로그 /opt/apigee/var/log/edge-qpid-server/system.log를 살펴보고 오류가 있는지 확인합니다.
  7. 아래 그림과 같이 '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에 응답할 수 없는 경우에 발생할 수 있습니다.

해상도

  1. 아래와 같이 Postgres 서버 및 PostgreSQL을 다시 시작합니다.
    /opt/apigee/bin/apigee-service edge-postgres-server restart
    
    /opt/apigee/bin/apigee-service apigee-postgresql restart
    
  2. 다시 시작하면 이전의 모든 SQL 쿼리가 중지되고 Postgres 데이터베이스에 대한 새 연결이 허용됩니다.
  3. 애널리틱스 대시보드를 새로고침하고 애널리틱스 데이터가 표시되는지 확인합니다.

문제가 계속되면 Apigee Edge 지원팀에 문의하세요.

잘못된 애널리틱스 배포

진단

  1. 다음 API 호출을 사용하여 애널리틱스 배포 상태를 가져옵니다.
    curl -u user_email:password http://management_server_host:port
    /v1/organizations/orgname/environments/envname/provisioning/axstatus
    
  2. API 호출 결과에서 Qpid 및 Postgres 서버의 상태를 확인합니다.
    1. Qpid 및 Postgres 서버의 상태가 'SUCCESS'로 표시되면 분석 서버 배선이 제대로 연결되었음을 나타냅니다. 오래된 분석 서버 UUID로 진행합니다.
    2. Qpid/Postgres 서버의 상태가 'UNKNOWN' 또는 'FAILURE'로 표시되는 경우 해당 서버에 문제가 있음을 나타냅니다.

      예를 들어 다음 시나리오는 Postgres 서버의 상태를 'UNKNOWN'으로 보여줍니다.

      애널리틱스 온보딩 중에 오류가 발생하면 발생할 수 있습니다. 이 오류가 발생하면 Management Server의 메시지가 Postgres 서버에 도달하지 못합니다.

해상도

이 문제는 일반적으로 'FAILURE' 또는 'UNKNOWN'으로 표시되는 서버를 다시 시작하여 해결할 수 있습니다.

  1. 다음 명령어를 사용하여 분석 배선 상태가 'FAILURE' 또는 'UNKNOWN'으로 표시된 각 서버를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service component restart
    
  2. 예를 들면 다음과 같습니다.
    1. Qpid 서버에서 문제가 발생하면 Qpid 서버를 다시 시작합니다.
      /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
      
    2. Postgres 서버에서 문제가 발생하면 마스터 및 슬레이브 Postgres 서버 노드를 둘 다 다시 시작합니다.
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
      
  3. 위의 예에서는 Postgres 서버에 'UNKNOWN' 메시지가 표시되므로 마스터 및 슬레이브 Postgres 서버를 모두 다시 시작해야 합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
    

오래된 애널리틱스 서버 UUID

진단

  1. 다음 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" : {
      }
    } ]
    
  2. 출력의 다음 정보가 올바른지 확인합니다.
    1. 'scopes' 요소에 나열된 org-env 이름
    2. Postgres 서버 및 Qpid 서버의 UUID입니다.
      • 각 Postgres 서버 노드에서 다음 명령어를 실행하여 Postgres 서버 UUID를 가져옵니다.
        curl 0:8084/v1/servers/self/uuid
        
      • 각 Qpid 서버 노드에서 다음 명령어를 실행하여 Qpid 서버 UUID를 가져옵니다.
        curl 0:8083/v1/servers/self/uuid
        
  3. 모든 정보가 정확하면 Postgres Database로 푸시되지 않는 애널리틱스 데이터로 진행합니다.
  4. Postgres 또는 Qpid 서버의 UUID가 잘못된 경우 관리 서버가 오래된 UUID를 참조하고 있을 가능성이 있습니다.

해상도

비활성 UUID를 삭제하고 서버의 올바른 UUID를 추가하려면 Apigee Edge 지원팀에 문의하세요.