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

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 트래픽 없음

진단

  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 쿼리를 사용하여 조직-환경의 테이블이 있는지 확인합니다.
    \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 데이터베이스로 푸시되지 않음으로 진행합니다.
  6. 마스터 노드의 Postgres 데이터베이스에서 최신 데이터를 사용할 수 있는 경우 아래 단계에 따라 Edge UI에 데이터가 표시되지 않는 이유를 진단합니다.

진단

  1. Chrome 브라우저에서 개발자 도구 를 사용 설정하고 아래 단계에 따라 분석 대시보드 중 하나에서 사용되는 API를 가져옵니다.
    1. 개발자 도구에서 네트워크 탭을 선택합니다.
    2. 녹화 시작
    3. 분석 대시보드를 다시 로드합니다.
    4. 개발자 도구의 왼쪽 패널에서 "apiproxy?_optimized..."가 있는 행을 선택합니다.
    5. 개발자 도구의 오른쪽 패널에서 '헤더' 탭을 선택하고 '요청 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 지원팀에 문의하세요.

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

진단

Postgres 데이터베이스에서 데이터를 사용할 수 있지만 UI에 표시되지 않음에서 확인한 대로 Qpid 서버에서 Postgres 데이터베이스로 데이터가 푸시되지 않는 경우 다음 단계를 수행 합니다.

  1. 아래 명령어를 실행하여 각 Qpid 서버가 실행 중인지 확인합니다.
    /opt/apigee/apigee-service/bin edge-qpid-server status
  2. Qpid 서버가 다운된 경우 다시 시작합니다. 그렇지 않으면 5단계로 건너뜁니다.
    /opt/apigee/apigee-service/bin 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. 아래 그림과 같이 "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 서버에 응답할 수 없는 경우 발생할 수 있습니다.

해결 방법

  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"으로 표시됩니다.

      이는 분석 온보딩 중에 오류가 발생한 경우 발생할 수 있습니다. 이 오류로 인해 관리 서버의 메시지가 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' 요소에 나열된 조직-환경 이름
    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 데이터베이스로 푸시되지 않음으로 진행합니다.
  4. Postgres 또는 Qpid 서버의 UUID가 잘못된 경우 관리 서버가 오래된 UUID를 참조하고 있을 수 있습니다.

해결 방법

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