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

您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
info

问题

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

错误消息

未观察到任何错误。

可能的原因

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

原因 适用于
自定义变量不符合标准准则 Edge Private Cloud 和 Public Cloud 用户
实现 StatisticsCollector 政策的 API 代理上没有流量 Edge Private Cloud 和 Public Cloud 用户
自定义变量未推送到 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 支持团队联系。