配置多个轴组后,自定义维度不显示

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

问题

使用统计信息收集器政策创建的自定义变量不会显示在 Edge 界面中 Analytics 自定义报告的“自定义维度”下。

错误消息

对于缺少路径的每个组织/环境组合,重启后,edge-postgres-server 系统日志将显示以下错误:

KeeperErrorCode = NoNode for
/organizations/<ORG>/environments/<ENV>/properties
2018-03-29 16:14:48,980 pool-10-thread-2 ERROR ZOOKEEPER -
ZooKeeperServiceImpl.getData() : Could not get data for path:
/organizations//environments//properties, reason:
KeeperErrorCode = NoNode for
/organizations//environments//properties

可能的原因

原因 说明 故障排除说明适用于
缺少组织和环境组合的 ZooKeeper 属性路径。 如果缺少 ZooKeeper 路径 /organizations//environments//properties,则无法创建自定义维度。 Edge Private Cloud 用户

原因:组织和环境组合缺少 ZooKeeper 属性路径

诊断

您可以通过 启用 Analytics API 为组织-环境组合启用 Analytics,该 API 会填充 ZooKeeper 树中的 /organizations//environments//properties。当此 API 失败时,Edge-postgres-server 组件无法创建自定义维度,并且其 system.log 中将显示以下错误:

KeeperErrorCode = NoNode for
/organizations/example/environments/prod/properties
2018-03-29 16:14:48,980 pool-10-thread-2 ERROR ZOOKEEPER -
ZooKeeperServiceImpl.getData() : Could not get data for path:
/organizations/example/environments/prod/properties, reason:
KeeperErrorCode = NoNode for
/organizations/digi/environments/sandbox/properties

通常情况下,如果一个组织已上线,且存在多个使用同一 postgres-server UUID 的分析群组,通常会出现这种情况。如需检查存在多少分析组,请运行以下 API 调用:

curl -u username:password "http://management-server-host:8080/v1/analytics/groups/ax"

如果此 API 返回多个组,则这很可能是导致问题的原因。在以下示例中,请注意存在两个组,只是用连字符区分:axgroup-001axgroup001

[ {
  "name" : "axgroup-001",
  "properties" : {
  },
  "scopes" : [ "VALIDATE~test" ],
  "uuids" : {
    "qpid-server" : [ "94c96375-1ca7-412d-9eee-80fda94f6e07" ],
    "postgres-server" : [ "8ee86b70-5b33-44b6-b2f8-1b0ec0ec8d77" ]
  },
  "consumer-groups" : [ {
    "name" : "consumer-group-001",
    "consumers" : [ "94c96375-1ca7-412d-9eee-80fda94f6e07" ],
    "datastores" : [ "8ee86b70-5b33-44b6-b2f8-1b0ec0ec8d77" ],
    "properties" : {
    }
  } ],
  "data-processors" : {
  }
}, {
  "name" : "axgroup001",
  "properties" : {
  },
  "scopes" : [ "example~prod" ],
  "uuids" : {
    "qpid-server" : [ "94c96375-1ca7-412d-9eee-80fda94f6e07" ],
    "postgres-server" : [ "8ee86b70-5b33-44b6-b2f8-1b0ec0ec8d77" ]
  },
  "consumer-groups" : [ {
    "name" : "consumer-group-001",
    "consumers" : [ "94c96375-1ca7-412d-9eee-80fda94f6e07" ],
    "datastores" : [ "8ee86b70-5b33-44b6-b2f8-1b0ec0ec8d77" ],
    "properties" : {
    }
  } ],
  "data-processors" : {
  }

具体来说,如果为每个 axgroup 配置的 postgres 服务器 UUID 相同,就会出现此问题。您可以运行以下命令来快速确定此问题:

curl -u username:password "http://management-server-host:8080/v1/analytics/groups/ax"|grep -B7 "postgres-server"

以下示例输出会快速比较 postgres-server UUID,以确定它们是否相同:

{  "name" : "axgroup-001",  "properties" : {  },  "scopes" : [ "VALIDATE~test" ],
"uuids" : {    "qpid-server" : [ "94c96375-1ca7-412d-9eee-80fda94f6e07" ],
"postgres-server" : [ "8ee86b70-5b33-44b6-b2f8-1b0ec0ec8d77" ]--
"name" : "axgroup001",  "properties" : {  },  "scopes" : [ "myorg~prod" ],
"uuids" : {    "qpid-server" : [ "94c96375-1ca7-412d-9eee-80fda94f6e07" ],
"aries-datastore" : [ ],    "postgres-server" : [ "8ee86b70-5b33-44b6-b2f8-1b0ec0ec8d77" ],

分辨率

同一组 PostgreSQL 服务器不能分配给两个 axgroups。最快的解决方法是从一个 axgroup 删除 Postgres 服务器信息,并将所有范围(组织、环境组合)分配给另一个组。为此,请按以下步骤操作:

  1. 按照 在 Analytics 群组中添加和删除分析组件中的说明,从两个 axgroup 中的一个中移除 postgres 服务器组件。如果您只看到非生产范围存在问题,请选择此练习没有任何生产范围的 axgroup。否则,请选择范围数量最少的 axgroup。
  2. 从不再具有任何 postgres 服务器的 axgroup 中移除所有范围,以及从 axgroup 中移除自定义维度问题的所有范围。假设上述示例中的 axgroup-001 是您要使用的群组,则必须使用以下命令移除 myorg 组织和 prod 环境的范围:
    curl -u username:password -X DELETE 'http://management-server-host:8080/v1/analytics/groups/ax/axgroup001/scopes?org=myorg&env=prod'
    
  3. 使用 启用 Analytics API 启用 Google Analytics(分析)。
  4. 使用以下命令在 postgres 主节点上重启 Edge-postgres-server 组件,以及您可能已安装的所有 Edge-qpid-server 组件:
     /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
    
     /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
    
  5. 验证上述错误消息部分中提供的错误是否不再出现在 Postgres 服务器的日志文件 /opt/apigee/var/log/edge-postgres-server/logs/system.log 中。
  6. 确认自定义维度是否显示在 Edge 界面中。

如果问题仍然存在,请参阅必须收集诊断信息

必须收集诊断信息

如果按照前面的说明操作,问题仍然存在,请收集以下诊断信息。请与 Apigee Edge 支持团队联系并分享相关信息:

  1. 最近重启时间的 Edge-postgres-server /opt/apigee/var/log/edge-postgres-server/logs/system.log
  2. 以下 Management API 调用的输出:
    curl -u username:password "http://management-server-host:8080/v1/analytics/groups/ax"
    
  3. 使用以下命令获取 ZooKeeper 树的输出:
    /opt/apigee/apigee-zookeeper/contrib/zk-tree.sh > zktree-output.txt