Debugging von Connectors
Um Probleme schnell und effizient zu beheben, wird dringend empfohlen, Ihre Satellite-Connector-Instanz mit einer IBM Cloud Logs-Instanz zu verbinden.
Greifen Sie über die Konsole auf Ihre Satellite Connector-Instanz zu. Wenn Sie keine IBM Cloud Logs Instanz in Ihrem Konto für die Region haben, in der Sie den Satellite Connector erstellt haben, klicken Sie auf Verbinden unter dem Abschnitt Logging für Link. Sie werden zur Katalogseite weitergeleitet, wo Sie eine IBM Cloud Logs Instanz erstellen können. Wenn Sie bereits eine IBM Cloud Logs Instanz haben, klicken Sie auf Konfigurieren unter dem Abschnitt Protokollierung für Link. Wählen Sie anschließend Ihre vorhandene Protokollierungsinstanz aus. Nachdem Sie eine IBM Cloud Logs Instanz mit Ihrem Satellite Connector verbunden haben, können Sie den Abschnitt " Logging for Link" verwenden, um das Dashboard "Logging Instance" zu öffnen und die Ausgabe wird für Ihren Connector gefiltert.
Für die Protokollierungsinstanz muss Receive Platform Logs aktiviert sein. Um diese Option zu aktivieren, wählen Sie in der Liste der Protokollierungsinstanzen Optionen-> Plattform bearbeiten aus.
Normalerweise gibt es zwei Fehlertypen:
- Der Tunnel kann nicht aufgebaut werden. Der Agent wird auf der Registerkarte 'Aktive Agenten' der Konsole nicht angezeigt.
- Der Tunnel ist eingerichtet und Sie können den Agenten in der Liste der aktiven Agenten anzeigen, aber Sie können nicht über IBM Cloud über einen Endpunkt auf eine lokale Anwendung zugreifen.
Tunnel kann nicht eingerichtet werden-Agent wird nicht in Liste aktiver Agenten angezeigt
Der Tunnel wird nicht aufgebaut, und Ihr Satellite-Connector-Agent wird in der Liste der Benutzeroberfläche unter der Registerkarte „Aktive Agenten“ nicht angezeigt.
Es gibt ungefähr eine Verzögerung von 2 Minuten ab dem Zeitpunkt, zu dem der Connector Agent gestartet wird, bis zu dem Zeitpunkt, zu dem er in der Liste angezeigt wird.
Wenn der Agent nach 2 Minuten immer noch nicht angezeigt wird, führen Sie die folgenden Debugschritte aus:
-
Überprüfen Sie, ob die Connector-ID und die Region korrekt angegeben wurden.
-
Öffnen Sie das Protokollierungsdashboard und überprüfen Sie die Connectorprotokolle. Häufig liegt das Problem beim IAM-API-Schlüssel und es wird eine Nachricht ähnlich der folgenden angezeigt. Weitere Informationen finden Sie unter Warum funktioniert mein API-Schlüssel nicht?.
Failed to get configuration from API /v1/connectors/U2F0ZWxsaXRlQ29ubmVjdG9yOiJjaTExMGxpdzFwazluMGdybXUyMCI, region us-east, code: 401. IAM Error: "status code: 400. Provided API key could not be found.", API Error: "null", hostname: "482bddf6c60b" -
Überprüfen Sie das Protokoll im Agentencontainer. Wenn im IBM Cloud Logs Dashboard keine Fehler angezeigt werden, bedeutet dies, dass ein Problem auftritt, bevor der Agent mit den Tunnelservern kommuniziert. Weitere Informationen finden Sie in der Protokolldatei des Agentencontainers. Der Befehl variiert je nach Containerplattform. Wenn Sie Dockerverwenden, können Sie den folgenden Befehl verwenden:
docker logs <container id> -
Sie sollten in der Lage sein, anhand der Protokollnachrichten zu bestimmen, was das Problem ist. Die häufigste Ursache für Fehler ist, dass Ihr Agent keinen öffentlichen abgehenden Zugriff für die Kommunikation mit den IBM Tunnelservern hat. Siehe Warum kann mein Connectoragent den Tunnel nicht mit IBM Cloudherstellen.
-
Überprüfen Sie, ob Sie die richtige Container-Hardwareplattform verwenden. Sie versuchen beispielsweise, das Agentenimage auf einer arm64-Plattform auszuführen. Der Connector Agent kann nur auf linux/amd64-Plattformen oder auf Plattformen ausgeführt werden, die amd64emulieren können. Wenn dies der Fall ist, wird ein Fehler ähnlich dem folgenden angezeigt:
{"msg":"exec container process `/usr/local/bin/node`: Exec format error","level":"error","time":"2023-06-16T14:37:54.000567792Z"}Hinweis für Benutzer von Apple Mac Silicon: Wenn Sie den Connector auf einem Mac mit Apple silicon testen, der einen ARM64-Prozessor verwendet, wird der Containeragent ausgeführt, wenn Rosetta2 installiert wurde. Dies wird normalerweise mit Dockerinstalliert. Beim Ausführen des Connectoragenten wird die folgende Warnung angezeigt:
icr.io/ibm/satellite-connector/satellite-connector-agent:v1.0.3 WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested 43064456c42434f056348a32773a732d02d4a68690fc6b2b36790be8daa49bb2In diesem Fall ist dies nur eine Warnung und der Connector Agent ist aktiv. Wenn die Warnung nicht angezeigt werden soll, können Sie die Option
--platform linux/amd64imdocker run-Befehl angeben. -
Überprüfen Sie, ob die Containerplattform das Image extrahieren kann. Das Image befindet sich in der IBM Container Registry unter
icr.io/ibm/satellite-connector/satellite-connector-agent:<version>. Stellen Sie sicher, dass Sie das Image korrekt angegeben haben. Die Maschine, auf der der Agent ausgeführt wird, hat Netzzugriff auficr.iound Sie haben sich bei IBM Container Registryangemeldet. Weitere Informationen finden Sie unter Agentenimage mit Pull-Operationen übertragen.
Hinweis für Docker Swarm-Benutzer: Wenn der folgende Fehler zu "No such image" angezeigt wird:
icr.io/ibm/satellite-connector/satellite-connector-agent:v1.0.4 swarm-worker1 Shutdown Rejected 5 minutes ago "No such image: icr.io/ibm/sat…"
Dies bedeutet, dass Docker Swarm das Image nicht extrahieren konnte. Dies ist wahrscheinlich auf ungültige IBM Container Registry-Berechtigungsnachweise zurückzuführen. Gehen Sie wie folgt vor, um das Problem zu lösen:
- Entfernen Sie den Service.
- Melden Sie sich bei der IBM an: Container Registry.
- Starten Sie den Stack erneut.
Tunnel ist eingerichtet-Agentencontainer wird auf der Registerkarte 'Aktive Agenten' in der Konsole aufgelistet
Wenn Ihr Agentencontainer auf der Registerkarte "Aktive Agenten" in der Konsole aufgelistet ist, führen Sie die folgenden Debugging-Schritte aus:
-
Rufen Sie Ihre Connectorinstanz auf und öffnen Sie das Protokollierungsdashboard. Dadurch wird die Protokollierungsausgabe für Ihre Connector-ID automatisch gefiltert.
-
Überprüfen Sie die Fehlernachrichten.
Nach dem Aufbau des Tunnels werden alle Fehler sowohl in der Instanz IBM Cloud Logs als auch in den Protokollen der Container-Plattform des Agenten angezeigt. Die meisten Fehler sind jetzt diejenigen, die versuchen, von IBM Cloud auf eine Anwendung zuzugreifen, die lokal über den Tunnel ausgeführt wird. Beim Zugriff auf einen Endpunkt wird am Anfang der Verbindung ein Eintrag
flowlogin die Protokollierungsinstanz geschrieben. Zum Beispiel:flowlog: start for client 10.249.96.47:1206 connect to postgres.apps.wdc6.toddjohn.net:5432, conn_type: locationNach dem Schließen der Verbindung wird ein weiterer
flowlog-Eintrag mit einigen Details zur Verbindung geschrieben. Zum Beispiel:flowlog: end for client 10.249.96.47:1206 connect to postgres.apps.wdc6.toddjohn.net:5432, conn_type: location, duration 387 ms, BytesToCloud 2444, BytesFromCloud 168Die Dauer ist die Zeit, zu der die Verbindung geöffnet ist, nicht die Umlaufzeit von Anforderungen.
Wenn beim Versuch, eine Verbindung zum Endpunkt herzustellen, Fehler auftreten, wird ein Eintrag
flowloggeschrieben, der die Fehlerdetails enthält. Zum Beispiel:flowlog: error when client 10.249.96.47:1209 connecting to postgres.apps.wdc6.toddjohn.net:5433, conn_type: location, detail: connect ECONNREFUSED 192.168.3.84:5433 -
Wenn keine Einträge
flowlogangezeigt werden, stellen Sie sicher, dass Ihre IBM Cloud-Anwendung Zugriff auf den CSE-Endpunkt hat und die richtige Endpunktadresse sowie den richtigen Port verwendet. Wenn Sie beispielsweise eine VPC-Instanz oder einen VPC- Kubernetes-Cluster verwenden, kann eine Sicherheitsgruppe den Zugriff blockieren. Stellen Sie sicher, dass Ihre Sicherheitsgruppen Datenverkehr von Ihrer VPC zur CSE-Endpunkt-IP und zum CSE-Port zulassen. -
Überprüfen Sie, ob Ihr Endpunkt ordnungsgemäß konfiguriert ist und ob die lokale Anwendung am konfigurierten Ziel-FQDN oder IP und Zielport empfangsbereit ist. Wenn Ihre On-Prem-Anwendung einen Container verwendet, kann sich deren IP-Adresse ändern. Weitere Informationen finden Sie unter Why can't I reach my endpoint from IBM Cloud.
-
Wenn Sie mehrere Agenten für denselben Connector ausführen, stellen Sie sicher, dass alle Agenten Netzzugriff auf den Endpunkt haben. Jede Verbindungsanforderung wird an einen Zufallsagenten weitergeleitet. Daher müssen alle Agenten über Netzkonnektivität zu allen lokalen Endpunkten verfügen. Es gibt keinen Mechanismus, um einen einzelnen Agenten für einen bestimmten Connector als Ziel auszuwählen.