Debug dei connettori

Per risolvere i problemi in modo rapido ed efficiente, si consiglia vivamente di collegare l'istanza di Satellite Connector a un'istanza di IBM Cloud Logs.

Accedi alla tua istanza del connettore Satellite dalla console. Se nell'account non è presente un'istanza di IBM Cloud Logs per la regione in cui è stato creato il connettore Satellite, fare clic su Connetti nella sezione Registrazione per il collegamento. Si accede alla pagina del Catalogo, dove è possibile creare un'istanza di IBM Cloud Logs. Se si dispone già di un'istanza di IBM Cloud Logs, fare clic su Configura nella sezione Registrazione per il collegamento. Quindi, selezionare l'istanza di registrazione esistente. Dopo aver collegato un'istanza di IBM Cloud Logs al connettore Satellite, si può usare la sezione Registrazione per il collegamento per aprire la dashboard dell'istanza di registrazione e l'output sarà filtrato per il connettore.

Per l'istanza di registrazione deve essere abilitato Ricevi log piattaforma. Per abilitare questa opzione, selezionare Opzioni-> Modifica piattaforma dall'elenco di istanze di log.

In genere ci sono due tipi di errore:

  1. Impossibile stabilire il tunnel. L'agent non viene visualizzato nella scheda Agent attivi sulla console.
  2. Il tunnel è stato stabilito e puoi vedere l'agent nell'elenco di agent attivi, ma non puoi accedere ad un'applicazione in loco da IBM Cloud utilizzando un endpoint.

Il tunnel non può essere stabilito - L'agent non viene visualizzato nell'elenco di agent attivi

Il tunnel non viene stabilito e l' Satellite Connector Agent non compare nell'elenco dell'interfaccia utente nella scheda "Agenti attivi".

C'è un ritardo di circa 2 minuti da quando l'agent connettore inizia a quando viene visualizzato nell'elenco.

Dopo 2 minuti, se l'agent non viene ancora visualizzato, attenersi alla seguente procedura di debug:

  1. Verificare che l'ID connettore e la regione siano specificati correttamente.

  2. Aprire il dashboard di registrazione ed esaminare i log del connettore. Spesso, il problema è con la chiave API IAM e vedi un messaggio simile al seguente esempio. Per ulteriori informazioni, vedi Perché la mia chiave API non funziona.

    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"
    
  3. Controllare il log sul contenitore agent. Se non ci sono errori nel dashboard IBM Cloud Logs, significa che c'è un problema che si verifica prima che l'agente comunichi con i server del tunnel. È possibile ottenere ulteriori informazioni esaminando il file di log sul contenitore dell'agent. Il comando varia in base alla piattaforma del contenitore. Se stai utilizzando Docker, puoi utilizzare il seguente comando:

    docker logs <container id>
    
  4. Dovresti essere in grado di determinare dai messaggi di log qual è il problema. Il motivo più comune per gli errori è che l'agent non dispone di accesso pubblico in uscita per comunicare con i server tunnel IBM. Vedi Perché il mio Connector Agent non è in grado di stabilire il tunnel con IBM Cloud.

  5. Verificare che si stia utilizzando la piattaforma hardware del contenitore corretta. Ad esempio, si sta tentando di eseguire l'immagine agente su una piattaforma arm64. L'agent connettore verrà eseguito solo su piattaforme linux/amd64 o su quelle che possono emulare amd64. In questo caso, verrà visualizzato un errore simile al seguente:

    {"msg":"exec container process `/usr/local/bin/node`: Exec format error","level":"error","time":"2023-06-16T14:37:54.000567792Z"}
    

    Nota per gli utenti Apple Mac silicon: se si sta provando il connettore su un Mac con Apple silicon che utilizza un processore ARM64, l'agent del contenitore verrà eseguito se è stato installato Rosetta2. Normalmente viene installato con Docker. Quando si esegue Connector Agent, verrà visualizzata la seguente avvertenza:

    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 43064456c42434f056348a32773a732d02d4a68690fc6b2b36790be8daa49bb2
    

    In questo caso, si tratta solo di un'avvertenza e Connector Agent è in esecuzione. Se non si desidera visualizzare l'avviso, è possibile specificare l'opzione --platform linux/amd64 nel proprio comando docker run.

  6. Verifica che la piattaforma del contenitore possa eseguire il pull dell'immagine. L'immagine si trova in IBM Container Registry all'indirizzo icr.io/ibm/satellite-connector/satellite-connector-agent:<version> Assicurarsi di aver specificato correttamente l'immagine. La macchina su cui è in esecuzione l'agent ha accesso di rete a icr.io e l'utente ha effettuato l'accesso a IBM Container Registry. Per ulteriori informazioni, consultare Estrazione dell'immagine agent.

Nota per gli utenti Docker Swarm: se vedi il seguente errore su "Nessuna immagine di questo tipo":

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…"

Ciò significa che Docker Swarm non ha potuto eseguire il pull dell'immagine. È probabile che sia dovuto a credenziali IBM Container Registry non valide. Per risolvere questo problema:

  1. Rimuovi il servizio.
  2. Accedi al sito IBM Container Registry.
  3. Riavviare lo stack.

Tunnel stabilito - Il contenitore agent è elencato nella scheda Agent attivi sulla console

Se il contenitore dell'agent è elencato nella scheda Agent attivi sulla console, attenersi alla seguente procedura di debug:

  1. Vai alla tua istanza del connettore e apri il dashboard di registrazione. Questo filtra automaticamente l'output di registrazione per l'ID connettore.

  2. Esaminare i messaggi di errore.

    Dopo che il tunnel è stato stabilito, qualsiasi errore sarà localizzato sia nell'istanza IBM Cloud Logs che nei log della piattaforma container dell'agente. La maggior parte degli errori ora saranno quelli che tentano di accedere a un endpoint da IBM Cloud a un'applicazione in esecuzione in loco sul tunnel. Quando si accede a un endpoint, all'inizio della connessione viene scritta una voce flowlog nell'istanza di registrazione. Ad esempio:

    flowlog: start for client 10.249.96.47:1206 connect to postgres.apps.wdc6.toddjohn.net:5432, conn_type: location
    

    Dopo che la connessione è stata chiusa, viene scritta un'altra voce flowlog con alcuni dettagli sulla connessione. Ad esempio:

    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 168
    

    La durata è il tempo di apertura della connessione, non il tempo di andata e ritorno delle richieste.

    Se si verificano degli errori durante il tentativo di connessione all'endpoint, viene scritta una voce flowlog contenente i dettagli dell'errore. Ad esempio:

    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
    
  3. Se non vengono visualizzate voci relative a " flowlog ", assicurati che l'applicazione " IBM Cloud " abbia accesso all'endpoint CSE e che stia utilizzando l'indirizzo e la porta corretti dell'endpoint. Ad esempio, se si utilizza un'istanza VPC o un cluster VPC Kubernetes, un gruppo di sicurezza può bloccare l'accesso. Assicurati che i tuoi gruppi di sicurezza consentano il traffico dal tuo VPC alla porta e all'IP dell'endpoint CSE.

  4. Verificare che l'endpoint sia configurato correttamente e che l'applicazione in loco sia in ascolto sull'FQDN di destinazione configurato o sull'IP e sulla porta di destinazione. Se la tua applicazione on-premise utilizza un container, il suo indirizzo IP potrebbe cambiare. Per ulteriori informazioni, vedi Perché non posso raggiungere il mio endpoint da IBM Cloud.

  5. Se si stanno eseguendo più agent per lo stesso connettore, assicurarsi che tutti gli agent abbiano accesso di rete all'endpoint. Ogni richiesta di connessione viene instradata a un agente casuale e quindi tutti gli agenti devono avere connettività di rete a tutti gli endpoint in loco. Non esiste alcun meccanismo per indicare come destinazione un singolo agente per un connettore specifico.