Ricerca nel sito web

Come inviare i log delle applicazioni Linux ad AWS CloudWatch


Su questa pagina

  1. Non limitato alle risorse AWS
  2. Come inviare i log dell'applicazione o del server ad AWS CloudWatch
  3. Passi
  4. Ruolo IAM
  5. Verifica la configurazione configurata
  6. Conclusione

AWS CloudWatch è un servizio di monitoraggio fornito dal cloud AWS. AWS fornisce il monitoraggio predefinito per i parametri del server come utilizzo della CPU, ingresso rete, uscita rete, ecc. AWS CloudWatch può essere utilizzato per il monitoraggio personalizzato come utilizzo del disco e utilizzo della memoria (RAM). Per il monitoraggio personalizzato, dobbiamo seguire alcuni passaggi per monitorarlo.

Allo stesso modo, AWS CloudWatch può essere utilizzato per monitorare i log del server o dell'applicazione. Poiché questa non è una funzionalità predefinita di AWS per ovvie ragioni, possiamo configurarla secondo i nostri requisiti. Dipenderà dall'utente quali log dobbiamo inviare ad AWS CloudWatch per il monitoraggio.

Non limitato alle risorse AWS

Anche se AWS CloudWatch è un servizio AWS, non significa che possa essere utilizzato solo per le istanze EC2, può anche essere configurato per inviare i log dell'applicazione o del server dalle VM di altri fornitori di cloud e anche dalle VM sull'unità fisica .

Come inviare i log dell'applicazione o del server ad AWS CloudWatch

Per inviare i log dell'applicazione o del server ad AWS CloudWatch, è necessario installare l'agente CloudWatch sul rispettivo server. Utilizzeremo l'istanza AWS EC2 per raggiungere il nostro obiettivo in questo blog.

Passi

  1. Ruolo appropriato da collegare all'istanza per comunicare con AWS CloudWatch
  2. Installazione dell'agente AWS CloudWatch
  3. Configurazione dell'agente AWS CloudWatch
  4. Testare i log nel portale AWS CloudWatch

Ruolo IAM

Per inviare i log dell'applicazione o del server ad AWS CloudWatch, dobbiamo collegare un ruolo all'istanza EC2 con le autorizzazioni appropriate. Il ruolo consentirà di apportare modifiche in AWS CloudWatch.

Dovrebbe contenere le seguenti politiche.

  • CreateLogStream
  • DescriviLogStream
  • Crea gruppo di log
  • PutLogEvents

Consente di creare un ruolo in AWS IAM.

Vai alla sezione IAM dall'elenco Servizi nella console AWS. Se non disponi ancora di un account AWS, creane uno da qui.

Nella dashboard IAM, vai a Policy e quindi a Create Policy.

Nella pagina \Crea policy\, seleziona \JSON\ dalla scheda e incolla la policy JSON sottostante rimuovendo quella predefinita.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams"
    ],
      "Resource": [
        "arn:aws:logs:*:*:*"
    ]
  }
 ]
}

La tua politica dovrebbe apparire come sotto. Al termine, fai clic sul pulsante \Review Policy\ nella parte inferiore della pagina.

Nella pagina successiva, è necessario fornire il nome alla politica.

Al termine, fare clic sul pulsante \Crea policy\ in fondo alla pagina.

Dopo aver creato un criterio, verrai reindirizzato alla pagina del ruolo IAM. Poiché abbiamo già creato la policy richiesta, creeremo un ruolo che verrà collegato all'istanza.

Nella pagina \Crea ruolo\, seleziona \EC2\. Poiché attribuiremo il ruolo all'istanza EC2.

Fare clic sul pulsante \Avanti: Autorizzazione\ nella parte inferiore sinistra della pagina.

Nella pagina successiva, ti verrà chiesto di allegare una policy al ruolo. Cerca il nome della policy che hai fornito nel passaggio precedente. Una volta trovato, seleziona il criterio dall'elenco.

Al termine, fai clic sul pulsante \Avanti: tag\ nella parte inferiore della pagina.

Nella pagina successiva, ti verrà chiesto di assegnare alcuni tag al ruolo. Poiché si tratta di un passaggio facoltativo, non assegno alcun tag al ruolo e ho saltato il passaggio.

Dopo aver fatto clic su Avanti, ti verrà chiesto di assegnare un nome al ruolo.

Il tuo ruolo verrà creato in pochi secondi.

Ora che abbiamo completato la configurazione richiesta dal lato dell'infrastruttura, configuriamo l'agente AWS CloudWatch sull'istanza EC2.

Per questo passaggio, è necessaria un'istanza EC2 in esecuzione. Connettiti all'istanza nel modo desiderato. Esistono diversi modi per connettersi all'istanza. Puoi controllarli qui.

Se disponi di un'istanza Amazon Linux, segui i passaggi indicati di seguito.

Se accedi all'istanza per la prima volta, assicurati di eseguire il comando di aggiornamento seguente.

Di seguito i passaggi che puoi seguire per le macchine Amazon Linux.

sudo yum update -y

Una volta completato l'aggiornamento, esegui il comando seguente per installare il pacchetto awslogs.

sudo yum install -y awslogs

Una volta installato il pacchetto, puoi modificare la regione nel file /etc/awslogs/awscli.conf.

Ora, per configurare i log che desideri inviare su AWS CloudWatch, apri il file /etc/awslogs/awslogs.conf e controlla le seguenti righe.

[/var/log/messages]
datetime_format = %b %d %H:%M:%S
file = /var/log/messages
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = Amazon-Linux-2

La configurazione precedente indica che il percorso del file di log dal tuo sistema /var/log/messages  verrà caricato su AWS CloudWatch. La configurazione precedente creerà un gruppo di log in AWS CloudWatch con il nome indicato nel parametro log_group_name. Inoltre, avrà la gerarchia menzionata in log_stream_name. Per il tempo di buffer, possiamo modificare il valore di buffer_duration. Il valore predefinito di buffer_duration è 5000ms.

Una volta apportate le modifiche, riavviare l'applicazione eseguendo il comando seguente. Riavvierà l'applicazione awslog e l'agente inizierà a caricare i log su AWS CloudWatch.

$ sudo service awslogsd start

Per installare e configurare l'agente AWS CloudWatch su RHEL o CentOS, puoi seguire i passaggi seguenti.

Eseguire il comando seguente per scaricare il pacchetto.

curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O

Troverai un file con il nome awslogs-agent-setup.py nella posizione corrente. Poiché il file scaricato è uno script Python, è necessario che Python sia installato sul computer per il passaggio successivo. Assicurati di avere un pacchetto python installato e quindi esegui il comando seguente. È necessario specificare la regione nel comando seguente. Puoi anche cambiare lo stesso nella configurazione in seguito, se lo desideri.

python ./awslogs-agent-setup.py --region ap-south-1

Una volta eseguito il comando sopra, ti chiederà alcuni input. Menzionare lo stesso come per i requisiti.

Lo script precedente genererà il file di configurazione /var/awslogs/etc/awslogs.conf. I dettagli che hai fornito nello script verranno salvati nel file di configurazione.

puoi comunque modificare il file di configurazione secondo le tue esigenze.

Una volta terminate tutte le modifiche, riavviare l'agente eseguendo il comando seguente.

# systemctl start awslogs

Verificare la configurazione configurata

1. Accedi nuovamente al tuo account AWS.

2. Cerca CloudWatch nell'elenco Servizi.

3. Scegliere l'opzione Log Group dai menu a sinistra.

4. Cerca il valore che hai fornito nel parametro log_stram_name  nella configurazione.

5. Vedrai che i log vengono inviati dal server ad AWS CloudWatch.

Conclusione

Puoi configurare qualsiasi file di log dal tuo server per essere inviato ad AWS CloudWatch. Questo può essere configurato per i server che non si trovano nel cloud AWS. Ciò significa che puoi eseguire il push dei log da uno qualsiasi dei tuoi server ospitati su Azure, GCP o qualsiasi altro provider cloud o persino un server on-premise.