您正在查看的是 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 流量
诊断
- 检查在您尝试使用以下方法之一查看分析数据的特定持续时间内,特定组织环境中是否有 API 代理的流量:
- 请为用户当前使用的任何 API 启用跟踪记录,并检查您能否获取跟踪记录中的任何请求。
- 查看 NGINX 访问日志 (
/opt/apigee/var/log/edge-router/nginx/logs/access.log)
),查看在特定时间段内 API 代理是否有任何新条目。 - 如果您将 API 代理中的信息记录到日志服务器(例如 Syslog、Splunk、Loggly 等),则可以检查这些日志服务器中是否有特定时长内 API 代理的任何条目。
- 如果在指定时间内没有流量(没有 API 请求),则无法获得分析数据。您会在分析信息中心看到“所选日期范围内没有流量”。
分辨率
- 在特定组织环境中对一个或多个 API 代理进行一些调用。
- 等待几秒钟,然后查看“小时”标签页中的分析信息中心,看看数据是否显示。
- 如果问题仍然存在,请继续完成 Postgres 数据库中可用的数据,但未显示在界面中。
数据在 Postgres 数据库中可用,但不显示在界面中
问题
首先,确定 Postgres 数据库中最新 Analytics 数据的可用性。
如需检查 Postgres Master 节点中是否提供了最新的 Analytics 数据,请执行以下操作:
- 登录每个 Postgres 服务器,然后运行以下命令以验证您是否位于 Master Postgres 节点上:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
- 在 Master Postgres 节点上,登录 PostgreSQL:
psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
- 在 Postgres 数据库中使用以下 SQL 查询,检查您的组织环境是否存在该表:
\d analytics."orgname.envname.fact"
- 使用以下 SQL 查询检查 Postgres 数据库中是否有最新数据:
select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
- 如果最新的时间戳非常旧(或 null),则表示 Postgres 数据库中没有数据。此问题的可能原因是数据未从 Qpid 服务器推送到 Postgres 数据库。继续阅读分析数据未推送到 Postgres 数据库。
- 如果主节点上的 Postgres 数据库中有最新数据,请按照以下步骤诊断数据未显示在 Edge 界面中的原因。
诊断
- 按照以下步骤在 Chrome 浏览器中启用开发者工具,并从其中一个 Google Analytics(分析)信息中心获取使用的 API:
- 从“开发者工具”中选择“Network”标签页。
- 开始录制。
- 重新加载 Analytics 信息中心。
- 在开发者工具的左侧面板上,选择包含 "apiproxy?_optimized..."." 的行。
- 在开发者工具的右侧面板上,选择“Headers”标签页并记下“Request 网址”。
- 下面是开发者工具中的输出示例:
示例输出,显示代理性能信息中心开发者工具“网络”标签页中代理性能信息中心使用的 API
- 直接运行 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"
- 如果您看到成功响应,但没有任何数据,则表示由于网络连接问题,管理服务器无法从 Postgres 服务器提取数据。
- 检查您能否从管理服务器连接到 Postgres 服务器:
telnet Postgres_server_IP_address 5432
- 如果您无法连接到 Postgres 服务器,请检查端口 5432 上是否存在任何防火墙限制。
- 如果存在防火墙限制,则可能是管理服务器无法从 Postgres 服务器拉取数据的原因。
分辨率
- 如果存在防火墙限制,请将其移除,以便管理服务器可以与 Postgres 服务器通信。
- 如果没有防火墙限制,则此问题可能是由于网络故障造成的。
- 如果管理服务器出现任何网络故障,那么重启可能会解决问题。
- 使用以下命令逐个重启所有管理服务器:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- 检查您是否能在 Edge 界面中查看分析数据。
如果您仍然看不到数据,请与 Apigee Edge 支持团队联系。
分析数据未推送到 Postgres 数据库
诊断
如果根据 Postgres Database 中的可用数据,但未显示在界面中数据中的规定,未将数据从 Qpid 服务器推送到 Postgres 数据库,则执行以下步骤:
- 执行以下命令,检查每个 Qpid 服务器是否已启动并运行:
/opt/apigee/bin/apigee-service edge-qpid-server status
- 如果任何 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
并查看是否存在任何错误。 - 您可能会看到诸如“可能 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 服务器,就可能会发生这种情况。
分辨率
- 重启 Postgres 服务器和 PostgreSQL,如下所示:
/opt/apigee/bin/apigee-service edge-postgres-server restart
/opt/apigee/bin/apigee-service apigee-postgresql restart
- 此重启可确保先前的所有 SQL 查询都停止,并且应允许与 Postgres 数据库的新连接。
- 重新加载 Google Analytics(分析)信息中心,检查是否已显示 Google Analytics(分析)数据。
如果问题仍然存在,请与 Apigee Edge 支持团队联系。
Google Analytics(分析)部署不正确
诊断
- 使用以下 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”:
如果 Analytics(分析)初始配置过程中出现故障,就可能会发生这种情况。此故障可防止来自管理服务器的邮件到达 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 Servers 上发现此问题,请重启 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”元素中列出的组织环境名称。
- 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 数据库。
- 如果 Postgres 和/或 Qpid 服务器的 UUID 不正确,则管理服务器可能引用了过时的 UUID。
分辨率
如需移除过时的 UUID 并添加服务器的正确 UUID,请与 Apigee Edge 支持团队联系。