Variable personnalisée non visible dans les rapports personnalisés Analytics

Vous consultez la documentation Apigee Edge.
Accédez à la documentation**Apigee X**.
info

Problème constaté

La variable personnalisée créée à l'aide de la règle StatisticsCollector n'est pas visible sous "Dimensions personnalisées" dans les rapports personnalisés Analytics de l'interface utilisateur Edge.

Messages d'erreur

Aucune erreur n'est observée.

Causes possibles

Le tableau suivant répertorie les causes possibles de ce problème :

Cause Pour
Variable personnalisée ne respectant pas les consignes standards Utilisateurs du cloud privé et public Edge
Aucun trafic sur le proxy d'API implémentant la règle StatisticsCollector Utilisateurs du cloud privé et public Edge
Variable personnalisée non envoyée au serveur Postgres Utilisateurs du cloud privé Edge

Cliquez sur un lien du tableau pour afficher les solutions possibles à cette cause.

Variable personnalisée ne respectant pas les consignes standards

Diagnostic

Si le nom de la variable personnalisée utilisée dans la règle StatisticsCollector ne respecte pas les consignes standards (voir Solution), il n'apparaît pas dans les rapports personnalisés.

L'extrait de code ci-dessous montre que le nom de la variable "product id" contient un espace. Il n'apparaît donc pas sous "Dimension personnalisée" dans le rapport personnalisé.

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

Solution

Les noms de variables personnalisées utilisés dans la règle StatisticsCollector du proxy d'API doivent respecter les consignes suivantes :

  • Les noms peuvent inclure [a-z][0-9] et "_".
  • Les noms ne peuvent pas comporter d'espaces. Par exemple, dans l'exemple de code ci-dessus, le nom de la variable doit être remplacé par "product_id".
  • Ne tient pas compte de la casse.
  • Les mots clés réservés listés dans le tableau du lien suivant ne sont pas autorisés. Par exemple, "user" n'est pas autorisé. Pour en savoir plus, consultez Mots clés SQL.

Si le problème persiste, passez à Aucun trafic sur le proxy d'API implémentant la règle StatisticsCollector.

Aucun trafic sur le proxy d'API implémentant la règle StatisticsCollector

Diagnostic

S'il n'y a pas de trafic sur le proxy d'API qui implémente la règle StatisticsCollector, la variable personnalisée n'apparaît pas dans les rapports personnalisés.

Solution

Effectuez quelques appels au proxy d'API qui implémente la règle StatisticsCollector.

Attendez un certain temps et vérifiez si la ou les variables personnalisées apparaissent dans les dimensions personnalisées du rapport personnalisé.

Si le problème persiste, passez à Variable personnalisée non envoyée au serveur Postgres.

Variable personnalisée non envoyée au serveur Postgres

Diagnostic

Lorsqu'une variable personnalisée est créée dans le proxy d'API et que des appels d'API sont effectués, la variable est d'abord stockée en mémoire sur le processeur de messages. Le processeur de messages envoie ensuite les informations sur la nouvelle variable à ZooKeeper, qui à son tour les envoie au serveur Postgres pour l'ajouter en tant que colonne dans la base de données Postgres.

Parfois, la notification de ZooKeeper peut ne pas atteindre le serveur Postgres en raison de problèmes réseau. En raison de cette erreur, la variable personnalisée peut ne pas apparaître dans le rapport personnalisé.

Pour identifier où la variable personnalisée est manquante :

  1. Générez l'arborescence ZooKeeper à l'aide de la commande suivante :
    /opt/apigee/apigee-zookeeper/contrib/zk-tree.sh > zktree-output.txt
  2. Recherchez la variable personnalisée dans la sortie de l'arborescence ZooKeeper.
  3. Si la variable personnalisée existe dans l'arborescence ZooKeeper, exécutez les commandes suivantes pour vérifier si elle est ajoutée à la base de données Postgres :
    1. Sur le nœud Postgres, connectez-vous à PostgreSQL :
      psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
    2. Exécutez la requête SQL suivante :
      select column_name, data_type, character_maximum_length from INFORMATION_SCHEMA.COLUMNS
        where table_name = 'orgname.envname.fact';
  4. Il est fort probable que la colonne de la variable personnalisée soit manquante dans la table de faits, ce qui explique pourquoi elle n'apparaît pas dans les dimensions personnalisées.

Solution

Solution 1 : Redémarrez le serveur Postgres

  1. Redémarrez le serveur Postgres pour le forcer à lire toutes les informations pertinentes pour Analytics à partir de Zookeeper :
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

    Si le problème persiste, appliquez la solution 2.

Solution 2 : Activez la propriété forceonboard

Activez la propriété forceonboard en procédant comme suit :

  1. Créez le fichier /opt/apigee/customer/application/postgres-server.properties sur la machine du serveur Postgres, s'il n'existe pas déjà.
  2. Ajoutez la ligne suivante à ce fichier :
    conf_pg-agent_forceonboard=true
  3. Assurez-vous que ce fichier appartient à Apigee à l'aide de la commande suivante :
    chown apigee:apigee /opt/apigee/customer/application/postgres-server.properties
  4. Redémarrez le serveur Postgres :
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
  5. Si vous avez plusieurs serveurs Postgres, répétez les étapes ci-dessus sur tous les serveurs Postgres.
  6. Annulez le déploiement et déployez votre proxy d'API qui utilise la règle StatisticsCollector policy.
  7. Exécutez les appels d'API.
  8. Vérifiez si la ou les variables personnalisées apparaissent dans les dimensions personnalisées du rapport personnalisé.

Si le problème persiste, contactez l'assistance Apigee Edge.