Les données n'apparaissent pas dans les tableaux de bord d'analyse

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Problème constaté

Les tableaux de bord d'analyse (Proxy Performance, Performances cibles, etc.) n'affichent aucune donnée dans l'interface utilisateur Edge. Tous les tableaux de bord affichent le message suivant:

No traffic in the selected date range

Messages d'erreur

Ce problème n'entraîne pas d'erreurs observables.

Causes possibles

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

Cause Pour
Aucun trafic d'API pour l'environnement de l'organisation Edge pour les utilisateurs de cloud privé
Données disponibles dans la base de données Postgres, mais ne s'affichant pas dans l'interface utilisateur Edge pour les utilisateurs de cloud privé
Données Analytics non transférées vers la base de données Postgres Edge pour les utilisateurs de cloud privé
Déploiement d'Analytics incorrect Edge pour les utilisateurs de cloud privé
UUID du serveur Analytics obsolètes Edge pour les utilisateurs de cloud privé

Aucun trafic d'API pour l'environnement de l'organisation

Diagnostic

  1. Vérifiez s'il y a du trafic pour les proxys d'API dans l'environnement d'organisation spécifique pour la durée spécifique pendant laquelle vous essayez d'afficher les données d'analyse à l'aide de l'une des méthodes suivantes :
    1. Activez la trace pour l'une de vos API actuellement utilisées par vos utilisateurs et vérifiez si vous pouvez recevoir des requêtes dans la trace.
    2. Affichez les journaux d'accès NGINX (/opt/apigee/var/log/edge-router/nginx/logs/access.log) et vérifiez s'il existe de nouvelles entrées pour les proxys d'API pour la durée spécifique).
    3. Si vous consignez des informations provenant de proxys d'API sur un serveur de journalisation tel que Syslog, Splunk, Loggly, etc., vous pouvez vérifier s'il existe des entrées dans ces serveurs de journalisation pour les proxys d'API pour une durée spécifique.
  2. En l'absence de trafic (aucune requête API) pendant une durée spécifique, les données d'analyse ne sont pas disponibles. Le tableau de bord des données analytiques affiche le message "Aucun trafic au cours de la période sélectionnée".

Résolution

  1. Effectuez des appels vers un ou plusieurs proxys d'API dans l'environnement d'organisation spécifique.
  2. Attendez quelques secondes, puis affichez les tableaux de bord d'analyse dans l'onglet Heure et voyez si les données apparaissent.
  3. Si le problème persiste, passez à la section Données disponibles dans la base de données Postgres, mais ne s'affichant pas dans l'interface utilisateur.

Données disponibles dans la base de données Postgres, mais ne s'affichent pas dans l'interface utilisateur

Problème constaté

Commencez par déterminer la disponibilité des dernières données Analytics dans la base de données Postgres.

Pour vérifier si les dernières données Analytics sont disponibles dans le nœud maître Postgres:

  1. Connectez-vous à chacun des serveurs Postgres et exécutez la commande suivante pour vérifier que vous vous trouvez sur le nœud Postgres maître :
    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
    
  2. Sur le nœud Postgres maître, connectez-vous à PostgreSQL :
    psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
    
  3. Vérifiez si la table existe pour votre org-env à l'aide de la requête SQL suivante dans la base de données Postgres :
    \d analytics."orgname.envname.fact"
    
  4. Vérifiez si les données les plus récentes sont disponibles dans la base de données Postgres à l'aide de la requête SQL suivante :
    select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
    
  5. Si le dernier horodatage est très ancien (ou nul), cela signifie que les données ne sont pas disponibles dans la base de données Postgres. Ce problème est probablement dû au fait que les données ne sont pas transmises du serveur Qpid à la base de données Postgres. Passez à la section Données Analytics non transférées vers la base de données Postgres.
  6. Si les dernières données sont disponibles dans la base de données Postgres sur le nœud maître, suivez les étapes ci-dessous pour déterminer pourquoi les données ne s'affichent pas dans l'interface utilisateur Edge.

Diagnostic

  1. Activez les outils pour les développeurs dans votre navigateur Chrome et utilisez l'API à partir de l'un des tableaux de bord d'analyse en procédant comme suit :
    1. Sélectionnez l'onglet "Network" (Réseau) dans les outils pour les développeurs.
    2. Démarrez l'enregistrement.
    3. Actualisez le tableau de bord Analytics.
    4. Dans le panneau de gauche des outils pour les développeurs, sélectionnez la ligne comportant "apiproxy?_optimized..."..
    5. Dans le panneau de droite des outils pour les développeurs, sélectionnez l'onglet "Headers" (En-têtes) et notez "Request URL" (URL de la requête).
  2. Voici un exemple de résultat obtenu par les outils pour les développeurs:

    Exemple de résultat montrant l'API utilisée dans le tableau de bord Proxy Performance depuis l'onglet "Réseau" des outils de développement pour le tableau de bord des performances proxy

  3. Exécutez directement l'appel d'API de gestion et vérifiez si vous obtenez les résultats. Voici un exemple d'appel d'API pour l'onglet "Jour" du tableau de bord Proxy Performance:
    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"
    
  4. Si vous obtenez une réponse positive, mais sans aucune donnée, cela signifie que le serveur de gestion ne parvient pas à extraire les données du serveur Postgres en raison de problèmes de connectivité réseau.
  5. Vérifiez si vous pouvez vous connecter au serveur Postgres à partir du serveur de gestion :
    telnet Postgres_server_IP_address 5432
    
  6. Si vous ne parvenez pas à vous connecter au serveur Postgres, vérifiez s'il existe des restrictions de pare-feu sur le port 5432.
  7. S'il existe des restrictions du pare-feu, le serveur de gestion peut ne pas être en mesure d'extraire les données du serveur Postgres.

Résolution

  1. S'il existe des restrictions de pare-feu, supprimez-les afin que le serveur de gestion puisse communiquer avec le serveur Postgres.
  2. En l'absence de restrictions du pare-feu, le problème peut être dû à un glitch réseau.
  3. En cas de problème réseau sur le serveur de gestion, le redémarrer peut résoudre le problème.
  4. Redémarrez tous les serveurs de gestion un par un à l'aide de la commande ci-dessous :
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    
  5. Vérifiez si vous pouvez voir les données d'analyse dans l'interface utilisateur Edge.

Si vous ne voyez toujours pas les données, contactez l'assistance Apigee Edge.

Données Analytics non transférées vers la base de données Postgres

Diagnostic

Si les données ne sont pas transférées du serveur Qpid vers la base de données Postgres, comme indiqué dans la section Données disponibles dans la base de données Postgres, mais ne figurant pas dans l'interface utilisateur, procédez comme suit:

  1. Vérifiez que chaque serveur Qpid est opérationnel en exécutant la commande ci-dessous :
    /opt/apigee/bin/apigee-service edge-qpid-server status
    
  2. Si un serveur Qpid est en panne, redémarrez-le. Sinon, passez à l'étape 5.
    /opt/apigee/bin/apigee-service edge-qpid-server restart
    
  3. Patientez un certain temps, puis vérifiez à nouveau si les dernières données sont disponibles dans la base de données Postgres.
    1. Connectez-vous à PostgreSQL :
      psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
      
    2. Exécutez la requête SQL ci-dessous pour vérifier si les données les plus récentes sont disponibles :
      select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
      
  4. Si les données les plus récentes sont disponibles, ignorez les étapes suivantes et passez à la dernière étape de la section "Résolution". Si les données les plus récentes ne sont pas disponibles, procédez comme suit.
  5. Vérifiez si les messages des files d'attente du serveur Qpid sont transférés vers la base de données Postgres.
    1. Exécutez qpid-stat -q command et vérifiez les valeurs des colonnes msgIn et msgOut.
    2. Voici un exemple de sortie qui montre que msgIn et msgOut ne sont pas égaux. Cela indique que les messages ne sont pas transférés du serveur Qpid vers la base de données Postgres.

  6. En cas d'incohérence dans les colonnes msgIn et msgOut, consultez les journaux du serveur Qpid /opt/apigee/var/log/edge-qpid-server/system.log pour voir s'il y a des erreurs.
  7. Il est possible que des messages d'erreur de type "Probly PG is still down" (probablement en panne) ou FATAL: désolé, trop de clients ont déjà été détectés, comme illustré ci-dessous :
    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)
    

Cela peut se produire si le serveur Postgres exécute trop de requêtes SQL ou si le processeur est saturé, et ne peut donc pas répondre au serveur Qpid.

Résolution

  1. Redémarrez le serveur Postgres et PostgreSQL comme indiqué ci-dessous :
    /opt/apigee/bin/apigee-service edge-postgres-server restart
    
    /opt/apigee/bin/apigee-service apigee-postgresql restart
    
  2. Ce redémarrage garantit que toutes les requêtes SQL précédentes sont arrêtées et doivent autoriser les nouvelles connexions à la base de données Postgres.
  3. Actualisez les tableaux de bord Analytics et vérifiez si les données Analytics s'affichent.

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

Déploiement d'Analytics incorrect

Diagnostic

  1. Obtenez l'état du déploiement de l'analyse à l'aide de l'appel d'API suivant :
    curl -u user_email:password http://management_server_host:port
    /v1/organizations/orgname/environments/envname/provisioning/axstatus
    
  2. Vérifiez l'état des serveurs Qpid et Postgres à partir des résultats de l'appel d'API.
    1. Si l'état des serveurs Qpid et Postgres affiche "SUCCESS", cela indique que les serveurs d'analyse sont correctement câblés. Passez à la section UUID du serveur Analytics obsolètes.
    2. Si l'état des serveurs Qpid/Postgres est défini sur "UNKNOWN" ou "FAILURE", cela indique un problème avec le serveur correspondant.

      Par exemple, le scénario suivant indique l'état des serveurs Postgres comme "UNKNOWN":

      Cela peut se produire en cas d'échec lors de l'intégration d'Analytics. Cette défaillance empêche les messages des serveurs de gestion d'atteindre les serveurs Postgres.

Résolution

Ce problème peut généralement être résolu en redémarrant les serveurs affichant le message "FAILURE" (ÉCHEC) ou "UNKNOWN".

  1. Redémarrez chacun des serveurs dont l'état du câblage d'analyse affiche "FAILURE" (ÉCHEC) ou "UNKNOWN" (UNKNOWN) à l'aide de la commande suivante :
    /opt/apigee/apigee-service/bin/apigee-service component restart
    
  2. Exemple :
    1. Si vous rencontrez le problème sur les serveurs Qpid, redémarrez-les :
      /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
      
    2. Si le problème se produit sur les serveurs Postgres, redémarrez les nœuds du serveur Postgres maître et ceux du serveur Postgres :
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
      
  3. Dans l'exemple ci-dessus, le message "UNKNOWN" s'affiche pour les serveurs Postgres. Vous devez donc redémarrer les serveurs Postgres maîtres et esclaves :
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
    

UUID du serveur Analytics obsolètes

Diagnostic

  1. Obtenez la configuration de l'analyse à l'aide de l'appel d'API suivant :
    curl -u user_email:password http://management-server-host:port/v1/analytics/groups/ax
    

    Voici un exemple de résultat de l'API ci-dessus:

    [ {
      "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" : {
      }
    } ]
    
  2. Assurez-vous que les informations suivantes sont correctes dans le résultat :
    1. org-env dans l'élément "scopes".
    2. UUID des serveurs Postgres et des serveurs Qpid.
      • Obtenez les UUID du serveur Postgres en exécutant la commande suivante sur chacun des nœuds du serveur Postgres :
        curl 0:8084/v1/servers/self/uuid
        
      • Obtenez les UUID du serveur Qpid en exécutant la commande suivante sur chacun des nœuds du serveur Qpid :
        curl 0:8083/v1/servers/self/uuid
        
  3. Si toutes les informations sont correctes, passez à la section Données analytiques non envoyées vers la base de données Postgres.
  4. Si les UUID des serveurs Postgres et/ou Qpid sont incorrects, il est possible que les serveurs de gestion fassent référence à des UUID obsolètes.

Résolution

Pour supprimer les UUID obsolètes et ajouter les UUID appropriés des serveurs, contactez l'assistance Apigee Edge.