数据分析信息中心内未显示数据

<ph type="x-smartling-placeholder"></ph> 您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

问题

分析信息中心(代理性能、目标性能等)未显示任何信息 数据所有信息中心都会显示以下消息:

No traffic in the selected date range

错误消息

此问题不会导致可观察的错误。

可能的原因

下表列出了此问题的可能原因:

原因 适用于
组织环境没有 API 流量 面向 Private Cloud 用户的 Edge
数据在 Postgres 数据库中可用,但不在 界面 面向 Private Cloud 用户的 Edge
Analytics 数据未推送到 Postgres 数据库 面向 Private Cloud 用户的 Edge
Google Analytics 部署不正确 面向 Private Cloud 用户的 Edge
Google Analytics 服务器 UUID 已过时 面向 Private Cloud 用户的 Edge

没有组织环境的 API 流量

诊断

  1. 检查特定组织环境中的 API 代理是否有流量 尝试使用以下某个日期查看分析数据的具体时长 方法: <ph type="x-smartling-placeholder">
      </ph>
    1. 为您的用户当前使用的任何 API 启用跟踪,并 检查您是否能够在跟踪记录中获取任何请求。
    2. 查看 NGINX 访问日志 (/opt/apigee/var/log/edge-router/nginx/logs/access.log),看看是否有 特定持续时间内 API 代理的新条目。
    3. 如果您将 API 代理中的信息记录到 Syslog、Splunk、Loggly、 则您可以检查 API 代理的这些日志服务器中是否有任何条目, 具体时长
  2. 如果在指定时长内没有流量(没有 API 请求),则 Google Analytics 数据 不可用。您会看到“在所选日期范围内没有任何流量”数据分析中 信息中心。

分辨率

  1. 在特定组织环境中对一个或多个 API 代理进行一些调用。
  2. 等待几秒钟,然后查看“小时”标签页中的数据分析信息中心,看看是否 系统会显示数据
  3. 如果问题仍然存在,请继续执行 Postgres 中提供的数据 数据库,但不显示在界面中

Postgres 数据库中可用的数据,但不显示在界面中

问题

首先,确定 Postgres 数据库中最新 Analytics 数据的可用性。

检查 Postgres Master 中是否提供最新的 Analytics 数据 节点

  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 数据库。请参阅未将 Analytics 数据推送到 Postgres 数据库
  6. 如果主节点上的 Postgres 数据库中有最新数据,则遵循 以下步骤来诊断 Edge 界面中未显示数据的原因。

诊断

  1. 启用开发者工具 并在 Chrome 浏览器中使用 具体步骤如下: <ph type="x-smartling-placeholder">
      </ph>
    1. 从开发者工具中选择“Network”(网络)标签。
    2. 开始录制。
    3. 重新加载 Analytics 信息中心。
    4. 在开发者工具的左侧面板中,选择 “apiproxy?_优化...”。
    5. 在开发者工具的右侧面板上,选择“Headers”并注意 “请求网址”。
  2. 以下是开发者工具的输出示例:

    示例输出,显示了“网络”标签页的代理性能信息中心中使用的 API 的“开发者工具性能”信息中心

  3. 直接运行 Management 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 界面中查看分析数据。

如果您仍然看不到这些数据,请与 Apigee Edge 支持团队联系。

分析数据未推送到 Postgres 数据库

诊断

如果数据未从 Qpid 服务器推送到 Postgres 数据库(如 Postgres 数据库中可用的数据,但未在界面中显示中所述),请执行 执行下列步骤:

  1. 通过执行以下命令来检查每个 Qpid 服务器是否已启动并运行:
    /opt/apigee/bin/apigee-service edge-qpid-server status
    
  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. 您可能会看到如下错误消息:“可能 PG 可能仍然无法正常运行” “严重:抱歉,过多客户端已存在”,如下图所示:
    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 Server 运行过多 SQL 查询或 CPU 无法响应 Qpid 服务器。

分辨率

  1. 重启 Postgres Server 和 PostgreSQL,如下所示:
    /opt/apigee/bin/apigee-service edge-postgres-server restart
    
    /opt/apigee/bin/apigee-service apigee-postgresql restart
    
  2. 此重启可确保之前的所有 SQL 查询都停止,并且应该允许新的 SQL 查询 Postgres 数据库的连接。
  3. 重新加载 Google Analytics 信息中心,检查 Google Analytics 数据是否正在显示。

如果问题仍然存在,请与 Apigee Edge 支持团队联系。

Google Analytics 部署不正确

诊断

  1. 使用以下 API 调用可获取 Google Analytics 部署状态:
    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”,则表示 分析服务器连接正确。继续查看已过时 Google Analytics 服务器 UUID
    2. 如果 Qpid/Postgres 服务器的状态显示为“UNKNOWN”或“FAILURE” 表示相应服务器存在问题。

      例如,以下场景显示了 Postgres 服务器的状态, "UNKNOWN":

      如果在初始配置分析功能失败时,就可能会发生这种情况。这次失败 阻止邮件从 Management Servers 到达 Postgres 服务器。

分辨率

此问题通常可以通过重启显示“FAILURE”的服务器来解决或 “UNKNOWN”。

  1. 重启分析线路状态显示为“FAILURE”的每个服务器或“UNKNOWN” 创建 Deployment
    /opt/apigee/apigee-service/bin/apigee-service component restart
    
  2. 例如: <ph type="x-smartling-placeholder">
      </ph>
    1. 如果您在 Qpid 服务器上看到问题,请重启 Qpid 服务器:
      /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
      
    2. 如果您在 Postgres 服务器上遇到此问题,请重启主实例和从属实例 Postgres Server 节点:
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
      
  3. 在上面的示例中,“UNKNOWN”消息,因此您需要 重启主 Postgres 服务器和从 Postgres 服务器:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
    

Google Analytics 服务器 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. 确保输出中的以下信息正确无误: <ph type="x-smartling-placeholder">
      </ph>
    1. “范围”中列出的组织环境名称元素。
    2. Postgres 服务器和 Qpid 服务器的 UUID。
      • 通过对每个 Postgres 服务器节点:
        curl 0:8084/v1/servers/self/uuid
        
      • 通过在每个 Qpid 上运行以下命令来获取 Qpid 服务器 UUID 服务器节点:
        curl 0:8083/v1/servers/self/uuid
        
  3. 如果所有信息均正确无误,请接着参阅 Google Analytics 数据 不会被推送到 Postgres 数据库
  4. 如果 Postgres 和/或 Qpid 服务器的 UUID 不正确,则可能 管理服务器引用的是过时的 UUID。

分辨率

如需移除过时的 UUID 并添加正确的服务器 UUID,请联系 Apigee Edge 支持团队