Daten werden nicht in Analyse-Dashboards angezeigt

Sie lesen gerade die Dokumentation zu Apigee Edge.
Rufen Sie die Dokumentation zu Apigee X auf.
info

Symptom

In den Analytics-Dashboards (Proxy Performance, Target Performance usw.) werden auf der Edge-Benutzeroberfläche keine Daten angezeigt. In allen Dashboards wird die folgende Meldung angezeigt:

No traffic in the selected date range

Fehlermeldungen

Dieses Problem führt nicht zu beobachtbaren Fehlern.

Mögliche Ursachen

In der folgenden Tabelle sind mögliche Ursachen für dieses Problem aufgeführt:

Ursache Für
Kein API-Traffic für Organisation-Umgebung Nutzer von Edge for Private Cloud
Daten in der Postgres-Datenbank verfügbar, werden aber nicht auf der Benutzeroberfläche angezeigt Nutzer von Edge for Private Cloud
Analytics-Daten werden nicht an die Postgres-Datenbank gesendet Nutzer von Edge for Private Cloud
Falsche Analytics-Bereitstellung Nutzer von Edge for Private Cloud
Veraltete UUIDs des Analytics-Servers Nutzer von Edge for Private Cloud

Kein API-Traffic für Organisation-Umgebung

Diagnose

  1. Prüfen Sie, ob für die API-Proxys in der jeweiligen Organisation-Umgebung für den angegebenen Zeitraum Traffic vorhanden ist. Verwenden Sie dazu eine der folgenden Methoden:
    1. Aktivieren Sie die Trace-Funktion für eine Ihrer APIs, die derzeit von Ihren Nutzern verwendet wird, und prüfen Sie, ob Sie Anfragen im Trace erhalten.
    2. Sehen Sie sich die NGINX-Zugriffslogs (/opt/apigee/var/log/edge-router/nginx/logs/access.log) an und prüfen Sie, ob es für den angegebenen Zeitraum neue Einträge für API-Proxys gibt.
    3. Wenn Sie Informationen von API-Proxys auf einem Log-Server wie Syslog, Splunk oder Loggly protokollieren, können Sie prüfen, ob es auf diesen Log-Servern Einträge für API-Proxys für den angegebenen Zeitraum gibt.
  2. Wenn für den angegebenen Zeitraum kein Traffic (keine API-Anfragen) vorhanden ist, sind keine Analytics-Daten verfügbar. Im Analytics Dashboard wird die Meldung „No traffic in the selected date range“ (Kein Traffic im ausgewählten Zeitraum) angezeigt.

Auflösung

  1. Führen Sie einige Aufrufe an einen oder mehrere API-Proxys in der jeweiligen Organisation-Umgebung aus.
  2. Warten Sie einige Sekunden und sehen Sie sich dann die Analytics-Dashboards auf dem Tab „Hour“ (Stunde) an. Prüfen Sie, ob die Daten angezeigt werden.
  3. Wenn das Problem weiterhin besteht, fahren Sie mit Daten in der Postgres Datenbank verfügbar, werden aber nicht auf der Benutzeroberfläche angezeigt fort.

Daten in der Postgres-Datenbank verfügbar, werden aber nicht auf der Benutzeroberfläche angezeigt

Symptom

Prüfen Sie zuerst, ob die neuesten Analytics-Daten in der Postgres-Datenbank verfügbar sind.

So prüfen Sie, ob die neuesten Analytics-Daten im Postgres-Master Knoten verfügbar sind:

  1. Melden Sie sich auf jedem der Postgres-Server an und führen Sie den folgenden Befehl aus, um zu prüfen, ob Sie sich auf dem Postgres-Masterknoten befinden:
    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
  2. Melden Sie sich auf dem Postgres-Masterknoten in PostgreSQL an:
    psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
  3. Prüfen Sie mit der folgenden SQL-Abfrage in der Postgres Datenbank, ob die Tabelle für Ihre Organisation-Umgebung vorhanden ist:
    \d analytics."orgname.envname.fact"
  4. Prüfen Sie mit der folgenden SQL Abfrage, ob die neuesten Daten in der Postgres-Datenbank verfügbar sind:
    select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
  5. Wenn der letzte Zeitstempel sehr alt (oder null) ist, sind keine Daten in der Postgres-Datenbank verfügbar. Die wahrscheinliche Ursache für dieses Problem ist, dass die Daten nicht vom Qpid-Server an die Postgres-Datenbank gesendet werden. Fahren Sie mit Analytics-Daten werden nicht an die Postgres-Datenbank gesendet fort.
  6. Wenn die neuesten Daten in der Postgres-Datenbank auf dem Masterknoten verfügbar sind, führen Sie die folgenden Schritte aus, um zu ermitteln, warum die Daten nicht auf der Edge-Benutzeroberfläche angezeigt werden.

Diagnose

  1. Aktivieren Sie die Entwicklertools in Ihrem Chrome-Browser und rufen Sie die API ab, die in einem der Analytics-Dashboards verwendet wird. Gehen Sie dazu so vor:
    1. Wählen Sie in den Entwicklertools den Tab „Network“ (Netzwerk) aus.
    2. Starten Sie die Aufnahme.
    3. Laden Sie das Analytics-Dashboard neu.
    4. Wählen Sie im linken Bereich der Entwicklertools die Zeile mit "apiproxy?_optimized...". aus.
    5. Wählen Sie im rechten Bereich der Entwicklertools den Tab „Headers“ (Header) aus und notieren Sie die „Request URL“ (Anfrage-URL).
  2. Hier sehen Sie eine Beispielausgabe der Entwicklertools:

    Beispielausgabe der API, die im Dashboard „Proxy Performance“ verwendet wird (Tab „Network“ der Entwicklertools für das Dashboard „Proxy Performance“)

  3. Führen Sie den Management API-Aufruf direkt aus und prüfen Sie, ob Sie Ergebnisse erhalten. Hier sehen Sie einen Beispiel-API Aufruf für den Tab „Day“ (Tag) im Dashboard „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. Wenn Sie eine erfolgreiche Antwort ohne Daten sehen, kann der Management Server die Daten aufgrund von Problemen mit der Netzwerk verbindung nicht vom Postgres-Server abrufen.
  5. Prüfen Sie, ob Sie vom Management Server aus eine Verbindung zum Postgres-Server herstellen können:
    telnet Postgres_server_IP_address 5432
  6. Wenn Sie keine Verbindung zum Postgres-Server herstellen können, prüfen Sie, ob für Port 5432 Firewall Einschränkungen gelten.
  7. Wenn Firewall-Einschränkungen vorhanden sind, kann der Management Server die Daten möglicherweise nicht vom Postgres-Server abrufen.

Auflösung

  1. Wenn Firewall-Einschränkungen vorhanden sind, entfernen Sie sie, damit der Management Server mit dem Postgres-Server kommunizieren kann.
  2. Wenn keine Firewall-Einschränkungen vorhanden sind, kann dieses Problem auf einen Netzwerkfehler zurückzuführen sein.
  3. Wenn auf dem Management Server ein Netzwerkfehler aufgetreten ist, kann das Problem möglicherweise durch einen Neustart behoben werden.
  4. Starten Sie alle Management Server einzeln mit dem folgenden Befehl neu:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. Prüfen Sie, ob die Analytics-Daten auf der Edge-Benutzeroberfläche angezeigt werden.

Wenn die Daten weiterhin nicht angezeigt werden, wenden Sie sich an den Apigee Edge-Support.

Analytics-Daten werden nicht an die Postgres-Datenbank gesendet

Diagnose

Wenn die Daten nicht vom Qpid-Server an die Postgres-Datenbank gesendet werden (wie unter Daten in der Postgres-Datenbank verfügbar, werden aber nicht auf der Benutzeroberfläche angezeigt beschrieben), führen Sie die folgenden Schritte aus:

  1. Prüfen Sie mit dem folgenden Befehl, ob alle Qpid-Server ausgeführt werden:
    /opt/apigee/apigee-service/bin edge-qpid-server status
  2. Wenn ein Qpid-Server nicht ausgeführt wird, starten Sie ihn neu. Andernfalls fahren Sie mit Schritt 5 fort.
    /opt/apigee/apigee-service/bin edge-qpid-server restart
  3. Warten Sie einige Zeit und prüfen Sie dann noch einmal, ob die neuesten Daten in der Postgres-Datenbank verfügbar sind.
    1. Melden Sie sich in PostgreSQL an:
      psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
    2. Führen Sie die folgende SQL-Abfrage aus, um zu prüfen, ob die neuesten Daten verfügbar sind:
      select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
  4. Wenn die neuesten Daten verfügbar sind, überspringen Sie die folgenden Schritte und fahren Sie mit dem letzten Schritt im Abschnitt „Auflösung“ fort. Wenn die neuesten Daten nicht verfügbar sind, fahren Sie mit den folgenden Schritten fort.
  5. Prüfen Sie, ob die Nachrichten aus den Qpid-Serverwarteschlangen an die Postgres-Datenbank gesendet werden.
    1. Führen Sie den Befehl qpid-stat -q command aus und prüfen Sie die Werte in den Spalten msgIn und msgOut.
    2. Hier sehen Sie eine Beispielausgabe, in der die Werte für „msgIn“ und „msgOut“ nicht gleich sind. Das bedeutet, dass Nachrichten nicht vom Qpid-Server an die Postgres-Datenbank gesendet werden.

  6. Wenn die Werte in den Spalten msgIn und msgOut nicht übereinstimmen, prüfen Sie die Qpid Serverlogs /opt/apigee/var/log/edge-qpid-server/system.log und suchen Sie nach Fehlern.
  7. Möglicherweise werden Fehlermeldungen wie "Probably PG is still down" oder "FATAL: sorry, too many clients already" angezeigt, wie in der folgenden Abbildung zu sehen:
    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)

Dies kann passieren, wenn der Postgres-Server zu viele SQL-Abfragen ausführt oder die CPU-Auslastung zu hoch ist und er daher nicht auf den Qpid-Server reagieren kann.

Auflösung

  1. Starten Sie den Postgres-Server und PostgreSQL neu, wie unten gezeigt:
    /opt/apigee/bin/apigee-service edge-postgres-server restart
    
    /opt/apigee/bin/apigee-service apigee-postgresql restart
    
  2. Durch diesen Neustart werden alle vorherigen SQL-Abfragen beendet und neue Verbindungen zur Postgres-Datenbank sollten möglich sein.
  3. Laden Sie die Analytics-Dashboards neu und prüfen Sie, ob die Analytics-Daten angezeigt werden.

Wenn das Problem weiterhin besteht, wenden Sie sich an den Apigee Edge-Support.

Falsche Analytics-Bereitstellung

Diagnose

  1. Rufen Sie den Bereitstellungsstatus von Analytics mit dem folgenden API-Aufruf ab:
    curl -u user_email:password http://management_server_host:port
    /v1/organizations/orgname/environments/envname/provisioning/axstatus
  2. Prüfen Sie den Status der Qpid- und Postgres-Server anhand der Ergebnisse des API-Aufrufs.
    1. Wenn der Status der Qpid- und Postgres-Server als „SUCCESS“ (Erfolg) angezeigt wird, sind die Analytics-Server ordnungsgemäß verbunden. Fahren Sie mit Veraltete UUIDs des Analytics-Servers fort.
    2. Wenn der Status der Qpid-/Postgres-Server als „UNKNOWN“ (Unbekannt) oder „FAILURE“ (Fehler) angezeigt wird, dann liegt ein Problem mit dem entsprechenden Server vor.

      Im folgenden Beispiel wird der Status der Postgres-Server als „UNKNOWN“ angezeigt:

      Dies kann passieren, wenn bei der Einrichtung von Analytics ein Fehler auftritt. Dieser Fehler verhindert, dass die Nachrichten von den Management Servern die Postgres-Server erreichen.

Auflösung

Dieses Problem lässt sich in der Regel beheben, indem Sie die Server neu starten, bei denen „FAILURE“ (Fehler) oder „UNKNOWN“ (Unbekannt) angezeigt wurde.

  1. Starten Sie jeden der Server, bei denen der Status der Analytics-Verbindung „FAILURE“ (Fehler) oder „UNKNOWN“ (Unbekannt) angezeigt wurde, mit dem folgenden Befehl neu:
    /opt/apigee/apigee-service/bin/apigee-service component restart
  2. Beispiel:
    1. Wenn das Problem auf Qpid-Servern auftritt, starten Sie die Qpid-Server neu:
      /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
    2. Wenn das Problem auf Postgres-Servern auftritt, starten Sie sowohl den Master- als auch den Slave Postgres-Serverknoten neu:
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
  3. Im obigen Beispiel wird die Meldung „UNKNOWN“ (Unbekannt) für die Postgres-Server angezeigt. Sie müssen also sowohl den Master- als auch den Slave-Postgres-Server neu starten:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

Veraltete UUIDs des Analytics-Servers

Diagnose

  1. Rufen Sie die Analytics-Konfiguration mit dem folgenden API-Aufruf ab:
    curl -u user_email:password http://management-server-host:port/v1/analytics/groups/ax

    Hier sehen Sie eine Beispielausgabe der oben genannten API:

    [ {
      "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. Prüfen Sie, ob die folgenden Informationen in der Ausgabe korrekt sind:
    1. Namen der Organisation-Umgebung im Element „scopes“.
    2. UUIDs der Postgres- und Qpid-Server.
      • Rufen Sie die UUIDs des Postgres-Servers ab, indem Sie den folgenden Befehl auf jedem der Postgres-Serverknoten ausführen:
        curl 0:8084/v1/servers/self/uuid
      • Rufen Sie die UUIDs des Qpid-Servers ab, indem Sie den folgenden Befehl auf jedem der Qpid Serverknoten ausführen:
        curl 0:8083/v1/servers/self/uuid
  3. Wenn alle Informationen korrekt sind, fahren Sie mit Analytics-Daten werden nicht an die Postgres-Datenbank gesendet fort.
  4. Wenn die UUIDs der Postgres- und/oder Qpid-Server falsch sind, verweisen die Management Server möglicherweise auf veraltete UUIDs.

Auflösung

Wenn Sie die veralteten UUIDs entfernen und die korrekten UUIDs der Server hinzufügen möchten, wenden Sie sich an den Apigee Edge-Support.