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

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

问题

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

No traffic in the selected date range

错误消息

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

可能的原因

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

原因 适用于
没有组织-环境的 API 流量 面向私有云用户的 Edge
Postgres 数据库中提供,但在界面中不显示的数据 面向私有云用户的 Edge
Analytics 数据未推送到 Postgres 数据库 面向私有云用户的 Edge
Google Analytics(分析)部署不正确 面向私有云用户的 Edge
Stale Analytics 服务器 UUID 面向私有云用户的 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 数据库中可用的数据,但未显示在界面中

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

问题

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

如需检查 Postgres Master 节点中是否提供了最新的 Analytics 数据,请执行以下操作

  1. 登录每个 Postgres 服务器,然后运行以下命令以验证您是否位于 Master Postgres 节点上:
    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
    
  2. 在 Master 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 界面中的原因。

诊断

  1. 按照以下步骤在 Chrome 浏览器中启用开发者工具,并从其中一个 Google Analytics(分析)信息中心获取使用的 API:
    1. 从“开发者工具”中选择“Network”标签页。
    2. 开始录制。
    3. 重新加载 Analytics 信息中心。
    4. 在开发者工具的左侧面板上,选择包含 "apiproxy?_optimized..."." 的行。
    5. 在开发者工具的右侧面板上,选择“Headers”标签页并记下“Request 网址”。
  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 数据库

诊断

如果根据 Postgres Database 中的可用数据,但未显示在界面中数据中的规定,未将数据从 Qpid 服务器推送到 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 服务器运行了过多的 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. 重新加载 Google Analytics(分析)信息中心,检查是否已显示 Google Analytics(分析)数据。

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

Google Analytics(分析)部署不正确

诊断

  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”:

      如果 Analytics(分析)初始配置过程中出现故障,就可能会发生这种情况。此故障可防止来自管理服务器的邮件到达 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 Servers 上发现此问题,请重启 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 支持团队联系。