Salta al contenuto

Perché Systems Manager non mostra la mia istanza Amazon EC2 come istanza gestita?

11 minuti di lettura
0

Desidero sapere perché ricevo l'errore “SSM Agent is not online”” or “Connection Lost” o perché la mia istanza Amazon Elastic Compute Cloud (Amazon EC2) non è visibile in Gestione dei gruppi di nodi.

Breve descrizione

Se l'Agente AWS Systems Manager (Agente SSM) è offline nell'istanza Amazon Elastic Compute Cloud (Amazon EC2), ricevi le seguenti notifiche:

Nota: se l'Agente SSM è offline, l'istanza non appare come gestita in Systems Manager.

Risoluzione

Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Soddisfa i seguenti prerequisiti, quindi utilizza il runbook AWSSupport-TroubleshootManagedInstance per determinare il motivo per cui l'Agente SSM è offline o non può connettersi a Systems Manager. Per ulteriori informazioni, consulta Esegui un'operazione automatizzata basata su Automazione Systems Manager e Configurazione del servizio di automazione.

Puoi anche utilizzare AWS CLI per risolvere i problemi dell'istanza o risolverli manualmente.

Verifica che l'Agente SSM sia installato e in esecuzione

Importante: durante le fasi di risoluzione dei problemi, seleziona la Regione AWS in cui si trova l'istanza.

Verifica che Systems Manager supporti il sistema operativo in uso. Quindi verifica di aver installato l'Agente SSM eseguendo il comando specifico per il sistema operativo.

Nota: l'Agente SSM è preinstallato sulla maggior parte delle Amazon Machine Image (AMI). Per ulteriori informazioni, consulta Trova AMI con l'Agente SSM preinstallato. Se non hai installato l'Agente SSM nell'istanza, installalo manualmente su Linux, Windows o macOS.

Per verificare che lo stato dell'Agente SSM sia in esecuzione e che lnon sia in ibernazione, completa i seguenti passaggi:

  1. Apri la console Amazon EC2.
  2. Nel pannello di navigazione a sinistra, scegli Istanze.
  3. Seleziona l'istanza.
  4. Scegli Operazioni, Monitoraggio e risoluzione dei problemi, Ottieni il log di sistema.

Se l'Agente SSM è in esecuzione, riceverai il messaggio "Amazon SSM Agent vx.x.x.x is running".

Se l'Agente SSM è in ibernazione, ricevi uno dei seguenti messaggi indicante anche il motivo per cui l'Agente SSM è in ibernazione:

  • "SSM Agent entering hibernation due to error:"
  • "SSM Agent unable to acquire credentials:" 

Nota: se utilizzi l’Agente SSM versione 3.3.2471.0 o successive, consulta il log di sistema dell'istanza per scoprire il motivo per cui l'Agente SSM è in ibernazione.

Esegui il runbook di Automazione Systems Manager

Prerequisito: prima di eseguire l'automazione, assicurati che l'utente o il ruolo AWS Identity and Access Management (AWS IAM) abbia le autorizzazioni necessarie. Per ulteriori informazioni, consulta la sezione Autorizzazioni IAM richieste in AWSSupport-TroubleshootManagedInstance.

Per eseguire il runbook, completa i seguenti passaggi:

  1. Apri il runbook AWSSupport-TroubleshootManagedInstance.
  2. Per i parametri di input, inserisci le seguenti informazioni:
    Per InstanceID, inserisci l'ID dell'istanza interessata. Puoi inserire manualmente l'ID dell'istanza oppure utilizzare il selettore di istanze interattivo. Se utilizzi il selettore di istanze, modifica il filtro da Mostra solo istanze gestite a Mostra tutte le istanze.
    (Facoltativo) Per AutomationAssumeRole, inserisci il nome della risorsa Amazon (ARN) del ruolo IAM che consente ad Automazione Systems Manager di eseguire azioni per tuo conto. Se non specifichi un ruolo, Automazione Systems Manager utilizza le autorizzazioni dell'utente che esegue il runbook.
  3. Scegli Esegui.

Al termine dell'automazione, esamina la sezione Output. La variabile FinalOutput.Message indica se Systems Manager gestisce l'istanza e se un controllo è stato superato o meno, fornendo informazioni su come risolvere un errore.

Utilizza AWS CLI per risolvere i problemi dell'Agente SSM offline

Completa i seguenti passaggi:

  1. Verifica di poter accedere all'istanza tramite SSH o Remote Desktop Protocol.
  2. Esegui il comando AWS CLI ssm-cli per risolvere i problemi di disponibilità d un'istanza gestita:
    Linux e macOS
    ssm-cli get-diagnostics --output table
    Windows
    ssm-cli.exe get-diagnostics --output table
    PowerShell
    .\ssm-cli.exe get-diagnostics --output table
    Nota: sulle macchine Windows Server, devi accedere alla directory C:\Program Files\Amazon\SSM prima di eseguire il comando ssm-cli.

Se l'Agente SSM non funziona correttamente, il comando ssm-cli potrebbe non essere disponibile. Per ulteriori informazioni, consulta Risoluzione dei problemi dell'Agente SSM.

Risolvi manualmente i problemi dell'istanza Amazon EC2

Verifica la connettività agli endpoint di Systems Manager sulla porta 443

La verifica della connettività agli endpoint di Systems Manager sulla porta 443 è specifica per le impostazioni del sistema operativo e della sottorete. Per un elenco degli endpoint di Systems Manager per area geografica, consulta Endpoint di servizio.

Nota: negli esempi seguenti, è richiesto l'endpoint ssmmessages per Gestione sessione.

Istanze EC2 per Linux

Utilizza i comandi Telnet o Netcat per verificare la connettività agli endpoint sulla porta 443 per le istanze EC2 per Linux. Netcat non è preinstallato sulle istanze EC2. Per installare manualmente Netcat, consulta Ncat sul sito Web Nmap.

Nota: nei comandi seguenti, sostituisci a regionID l'ID della regione della tua istanza.

Comandi Telnet:

telnet ssm.RegionID.amazonaws.com 443
telnet ec2messages.RegionID.amazonaws.com 443
telnet ssmmessages.RegionID.amazonaws.com 443

Esempio di connessione Telnet:

root@111800186:~# telnet ssm.us-east-1.amazonaws.com 443
Trying 52.46.141.158...
Connected to ssm.us-east-1.amazonaws.com.
Escape character is '^]'.

Per uscire da telnet, premi i tasti Ctrl e ]. Inserisci quit, quindi premi Invio.

Comandi Netcat:

nc -vz ssm.RegionID.amazonaws.com 443
nc -vz ec2messages.RegionID.amazonaws.com 443
nc -vz ssmmessages.RegionID.amazonaws.com 443

Istanze EC2 per Windows

Per verificare la connettività agli endpoint sulla porta 443 per le istanze Windows EC2, esegui i seguenti comandi di Windows PowerShell:

Test-NetConnection ssm.RegionID.amazonaws.com -port 443
Test-NtConnection ec2messages.RegionID.amazonaws.com -port 443
Test-NetConnection ssmmessages.RegionID.amazonaws.com -port 443

Sottoreti pubbliche

Gli endpoint di Systems Manager sono pubblici. Per risolvere i problemi di connettività con le istanze in una sottorete pubblica, la tabella di routing dell'istanza deve indirizzare il traffico Internet a un gateway Internet. Inoltre, i gruppi di sicurezza di Amazon Virtual Private Cloud (Amazon VPC) e le liste di controllo degli accessi alla rete (ACL di rete) devono consentire le connessioni in uscita sulla porta 443.

Sottoreti private

Utilizza indirizzi IP privati per accedere privatamente alle API di Amazon EC2 e Systems Manager. Per risolvere i problemi di connettività con un'istanza in una sottorete privata, la tabella di routing dell'istanza deve indirizzare il traffico Internet a un gateway NAT. In alternativa, è necessario configurare l'endpoint VPC per raggiungere gli endpoint di Systems Manager.

Per ulteriori informazioni, consulta Come posso creare endpoint VPC in modo da poter utilizzare Systems Manager per gestire istanze EC2 private senza accesso a Internet?

Nota: ogni endpoint di interfaccia crea un'interfaccia di rete elastica nella sottorete fornita.

Per la sicurezza delle sottoreti private è consigliabile verificare le seguenti impostazioni:

  • Il gruppo di sicurezza collegato all'interfaccia di rete dell'endpoint VPC consente il traffico in entrata della porta TCP 443 dal gruppo di sicurezza collegato all'istanza.
  • Il gruppo di sicurezza collegato all’istanza consente il traffico in uscita della porta TCP 443 verso l'indirizzo IP privato dell'interfaccia di rete dell'endpoint VPC.

Verifica l'impostazione di Configurazione di gestione host predefinita

**Nota:Se non hai attivato Configurazione di gestione host predefinita, passa alla sezione ** Verifica che il ruolo IAM corretto sia collegato all'istanza.

Se il ruolo IAM creato da Configurazione di gestione host predefinita non dispone di autorizzazioni sufficienti per il tuo caso d'uso, puoi aggiungere policy.

Tutte le istanze associate devono utilizzare il Servizio di metadati dell'istanza versione 2 (IMDSv2). Per verificare la configurazione di IMDSv2, determina quando l'utilizzo di IMDSv1 è pari a zero esaminando la metrica MetadataNoToken di Amazon CloudWatch. Quindi controlla se le tue istanze sono passate a IMDSv2.

Configurazione di gestione host predefinita è disponibile nella versione 3.2.582.0 o successiva dell’agente SSM. Per verificare la versione dell’agente SSM, consulta Verifica del numero di versione dell’agente SSM.

Per verificare l’impostazione di Configurazione di gestione host predefinita, utilizza la console di Systems Manager o l'interfaccia a riga di comando di AWS.

Console di Systems Manager

Completa i seguenti passaggi:

  1. Apri la console Systems Manager.
  2. Nel pannello di navigazione, scegli Fleet Manager.
  3. Dall'elenco a discesa Gestione dell'account, scegli Configurazione di gestione host predefinita.
  4. Verifica che l'impostazione Abilita la configurazione di gestione host predefinita sia attiva.

Interfaccia a riga di comando AWS

Esegui il comando get-service-setting di AWS CLI per verificare l’impostazione di Configurazione di gestione host predefinita:

aws ssm get-service-setting \
--setting-id arn:aws:ssm:RegionID:AccountID:servicesetting/ssm/managed-instance/default-ec2-instance-management-role

Nota: sostituisci ad AccountID l'ID del tuo account AWS.

Dopo aver attivato Configurazione di gestione host predefinita, riceverai un output simile al seguente:

{
  "ServiceSetting": {
    "SettingId": "/ssm/managed-instance/default-ec2-instance-management-role",
    "SettingValue": "service-role/AWSSystemsManagerDefaultEC2InstanceManagementRole",
     "LastModifiedDate": 1679492424.738,
    "LastModifiedUser": "arn:aws:sts::012345678910:assumed-role/role/role-name",
    "ARN": "arn:aws:ssm:ap-southeast-1:012345678910:servicesetting/ssm/managed-instance/default-ec2-instance-management-role",
    "Status": "Customized"
  }
}

Nota: se il valore di SettingValue è $None, Configurazione di gestione host predefinita non sarà impostata.

Verifica che Configurazione di gestione host predefinita stia utilizzando un ruolo IAM appropriato

È consigliabile utilizzare il ruolo IAM AWSSystemsManagerDefaultEC2InstanceManagementRole quando si imposta Configurazione di gestione host predefinita. Per utilizzare un ruolo diverso, assicurati che al ruolo sia associata la policy IAM AmazonSSMManagedEC2InstanceDefaultPolicy.

Se hai collegato profili delle istanze alle tue istanze EC2, rimuovi tutte le autorizzazioni che consentono l'operazione ssm:UpdateInstanceInformation. L'agente SSM tenta di utilizzare le autorizzazioni del profilo dell’istanza prima di utilizzare le autorizzazioni di Configurazione di gestione host predefinita. Se consenti l'operazione ssm:UpdateInstanceInformation nei profili delle istanze, l'istanza non utilizzerà le autorizzazioni di Configurazione di gestione host predefinita.

Verifica che all'istanza sia collegato il ruolo IAM corretto

Nota: se hai attivato Configurazione di gestione host predefinita, passa alla sezione Verifica la connettività con IMDS.

Per effettuare chiamate API a un endpoint di Systems Manager, devi collegare la policy AmazonSSMManagedInstanceCore al ruolo IAM collegato all'istanza. Se hai una policy IAM personalizzata, verifica che questa utilizzi le autorizzazioni in AmazonSSMManagedInstanceCore. Inoltre, assicurati che la policy di attendibilità per il ruolo IAM consenta a ec2.amazonaws.com di assumere il ruolo. Per ulteriori informazioni, consulta Configurazione alternativa per le autorizzazioni delle istanze EC2.

Verifica la connettività con IMDS

L'Agente SSM deve comunicare con IMDS per ottenere informazioni sull'istanza. Per testare la connessione, esegui questo comando in base al sistema operativo dell'istanza:

  • Linux

    nc -vz 169.254.169.254 80
  • Windows

    Test-NetConnection 169.254.169.254 -port 80

Per verificare che IMDS sia configurato per l'istanza esistente, utilizza la console Amazon EC2 o AWS CLI.

Console di Amazon EC2

Completa i seguenti passaggi:

  1. Apri la console Amazon EC2.
  2. Seleziona Istanze dal pannello di navigazione, quindi seleziona la tua istanza.
  3. Scegli Azioni, quindi scegli Impostazioni dell’istanza.
  4. Scegli Modifica le opzioni dei metadati dell'istanza.
  5. Nella finestra di dialogo, assicurati che il servizio di metadati dell'istanza sia Abilitato.

Interfaccia a riga di comando AWS

Esegui il comando describe-instances di AWS CLI per verificare che IMDS sia impostato per la tua istanza esistente:

aws ec2 describe-instances --query "Reservations[*].Instances[*].MetadataOptions" --instance-ids i-012345678910

Esempio di output:

[
  [
    {
      "State": "applied",
      "HttpTokens": "optional",
      "HttpPutResponseHopLimit": 1,
      "HttpEndpoint": "enabled",
      "HttpProtocolIpv6": "disabled",
      "InstanceMetadataTags": "disabled"
    }
  ]
]

Nota: se l'output mostra “HTTPTokens”: “optional”, sono supportati sia IMDSv1 che IMDSv2. Se l'output mostra ”HttpTokens”: “required”, è supportato solo IMDSv2. Se l'output mostra “HTTPendpoint”: “enabled”, IMDS è attivo.

Se utilizzi un proxy sull'istanza, il proxy potrebbe bloccare la connettività all'URL dei metadati. Per evitare il blocco, configura il tuo agente SSM in modo che funzioni con un proxy e no_proxy per l'URL dei metadati.

Per configurare l’agente SSM per l'utilizzo di un proxy, consulta la seguente documentazione AWS:

Altre indicazioni sulla risoluzione dei problemi

Se l’istanza continua a non apparire come nodo gestito o mostra una connessione persa in Systems Manager, rivedi i log dell’agente SSM per continuare la risoluzione dei problemi. Per Linux e macOS, i log si trovano in /var/log/amazon/ssm. Per Windows, i log si trovano in %PROGRAMDATA%\Amazon\SSM\Logs.

Se la tua istanza non invia report all’agente SSM, utilizza Remote Desktop Protocol (RDP) per Windows o SSH per Linux per raccogliere i log. Se non riesci a raccogliere i log, devi arrestare l'istanza e scollegare il volume root. Quindi collega il volume root a un'altra istanza nella stessa zona di disponibilità del volume secondario per ottenere i log.

Informazioni correlate

Riferimento al runbook di Systems Manager Automation

Collega un volume Amazon Elastic Block Store (Amazon EBS) a un'istanza Amazon EC2

Scollega il volume dall'istanza

Rendi disponibile per l’utilizzo un volume Amazon EBS