自定义变量对 Google Analytics(分析)自定义报告不可见

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

问题

在 Edge 界面的 Analytics 自定义报告中,使用 StatisticsCollector 政策创建的自定义变量不会显示在“自定义维度”下。

错误消息

未发现任何错误。

可能的原因

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

原因 适用于
自定义变量不符合标准准则 Edge Private 和公有云用户
实现 StatisticsCollector 政策的 API 代理上没有任何流量 Edge Private 和公有云用户
自定义变量未推送到 Postgres 服务器 Edge Private Cloud 用户

点击表格中的链接可查看导致相应原因的可能解决方案。

自定义变量不符合标准指南

诊断

如果 StatisticsCollector 政策中使用的自定义变量名称不符合标准准则(请参阅 解决方法),则它不会显示在自定义报告中。

以下代码段显示,变量名称“product id”带有空格,因此它不会显示在自定义报告的自定义维度下。

  <StatisticsCollector name="publishPurchaseDetails">
    <Statistics>
      <Statistic name="productID" ref="product id" type="string">999999</Statistic>
    </Statistics>
  </StatisticsCollector>

分辨率

在 API 代理的 StatisticsCollector 政策中使用的自定义变量名称应遵循以下准则:

  • 名称可包括 [a-z][0-9] 和“_”。
  • 名称中不能包含空格。例如,在上面显示的代码示例中,变量名称应更改为“product_id”。
  • 忽略大小写。
  • 不允许使用以下链接的表格中列出的预留关键字。例如,不允许使用“user”。如需了解详情,请参阅 SQL 关键字

如果问题仍然存在,请继续阅读实现 StatisticsCollector 政策的 API 代理上没有流量

实施 StatisticsCollector 政策的 API 代理上没有流量

诊断

如果实现 StatisticsCollector 政策的 API 代理上没有流量,则自定义变量不会显示在自定义报告中。

分辨率

对实现 StatisticsCollector 政策的 API 代理进行一些调用。

稍等片刻,检查自定义变量是否出现在自定义报告的自定义维度中。

如果问题仍然存在,请继续阅读自定义变量未推送到 Postgres 服务器

自定义变量未推送到 Postgres 服务器

诊断

在 API 代理中创建自定义变量并进行 API 调用时,该变量首先存储在内存中的消息处理器上。然后,消息处理器将有关新变量的信息发送到 ZooKeeper,ZooKeeper 继而将其发送到 Postgres 服务器以将其添加为 Postgres 数据库中的列。

有时,由于网络问题,ZooKeeper 发出的通知可能无法到达 Postgres 服务器。由于此错误,自定义变量可能不会出现在自定义报告中。

若要确定缺少自定义变量的位置,请执行以下操作

  1. 使用以下命令生成 ZooKeeper 树:
    /opt/apigee/apigee-zookeeper/contrib/zk-tree.sh > zktree-output.txt
  2. 在 ZooKeeper 树输出中搜索自定义变量。
  3. 如果 ZooKeeper 树中存在该自定义变量,请执行以下命令以检查该自定义变量是否已添加到 Postgres 数据库:
    1. 在 Postgres 节点上,登录 PostgreSQL:
      psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
    2. 运行以下 SQL 查询:
      select column_name, data_type, character_maximum_length from INFORMATION_SCHEMA.COLUMNS
        where table_name = 'orgname.envname.fact';
  4. 您很可能会看到事实表中缺少自定义变量列,这就是没有出现在“自定义维度”中的原因。

分辨率

解决方案 1:重启 Postgres 服务器

  1. 重启 Postgres 服务器,强制其从 ZooKeeper 读取与 Analytics 相关的所有信息:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

    如果问题仍然存在,请应用解决方案 2。

解决方案 2:启用属性 forceonboard

按照以下步骤启用 forceonboard 属性:

  1. 在 Postgres 服务器上创建 /opt/apigee/customer/application/postgres-server.properties 文件(如果尚不存在)。
  2. 将以下代码行添加到此文件中:
    conf_pg-agent_forceonboard=true
  3. 使用以下命令确保此文件归 Apigee 所有:
    chown apigee:apigee /opt/apigee/customer/application/postgres-server.properties
  4. 重启 Postgres 服务器:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
  5. 如果您有多个 Postgres 服务器,请在所有 Postgres 服务器上重复上述步骤。
  6. 取消部署并部署使用 StatisticsCollector 政策的 API 代理。
  7. 运行 API 调用。
  8. 检查自定义变量是否出现在自定义报告的自定义维度中。

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