Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Distribuzione di Fluent Bit su contenitori Amazon ECS Windows
Fluent Bit è un processore e router di log veloce e flessibile supportato da vari sistemi operativi. Può essere utilizzato per indirizzare i log verso varie AWS destinazioni come Amazon CloudWatch Logs, Firehose, Amazon S3 e Amazon Service. OpenSearch Fluent Bit supporta soluzioni partner comuni come Datadog
L'immagine AWS for Fluent Bit è disponibile su Amazon ECR sia nella galleria pubblica Amazon ECR che in un repository Amazon ECR nella maggior parte delle regioni per la disponibilità elevata. Per ulteriori informazioni, consulta
aws-for-fluent-bit
Questo tutorial illustra come distribuire i contenitori Fluent Bit sulle relative istanze Windows in esecuzione in Amazon ECS per trasmettere i log generati dalle attività di Windows ad Amazon per la registrazione centralizzata. CloudWatch
Questo tutorial utilizza il seguente approccio:
-
Fluent Bit funziona come servizio con la strategia di pianificazione Daemon. Questa strategia garantisce che una singola istanza di Fluent Bit venga sempre eseguita sulle istanze di container del cluster.
-
Ascolta sulla porta 24224 utilizzando il plug-in di input di inoltro.
-
Aprire la porta 24224 all'host in modo che il runtime docker possa inviare i log a Fluent Bit utilizzando tale porta.
-
Ha una configurazione che consente a Fluent Bit di inviare i record dei log alle destinazioni specificate.
-
-
Avvia tutti gli altri container di attività Amazon ECS utilizzando il driver di registrazione fluentd. Per ulteriori informazioni, consulta Driver di registrazione Fluentd
sul sito Web della documentazione Docker. -
Docker si connette al socket TCP 24224 su localhost all'interno dello spazio dei nomi dell'host.
-
L'agente Amazon ECS aggiunge le etichette ai container che includono il nome del cluster, l'ARN dell'attività, il nome della famiglia della definizione di attività, il numero di revisione della definizione di attività, l'ARN dell'attività e il nome del container delle attività. Le stesse informazioni vengono aggiunte al record di log utilizzando l'opzione labels del driver di registrazione fluentd docker. Per ulteriori informazioni, consulta labels, labels-regex, env ed env-regex
sul sito Web contenente la documentazione di Docker. -
Poiché l'opzione
async
del driver di registrazione fluentd è impostata sutrue
, quando il container Fluent Bit viene riavviato, docker memorizza i log nel buffer fino al riavvio del container Fluent Bit. Puoi aumentare il limite del buffer impostando l'opzione. fluentd-buffer-limit Per ulteriori informazioni, consulta il sito fluentd-buffer-limitWeb della documentazione di Docker.
-
Di seguito è riportato il flusso di lavoro:
-
Il container di Fluent Bit si avvia e ascolta sulla porta 24224 che è esposta all'host.
-
Fluent Bit utilizza le credenziali del ruolo IAM dell'attività specificate nella definizione di attività.
-
Altre attività avviate sulla stessa istanza utilizzano il driver di registrazione fluentd docker per connettersi al container di Fluent Bit sulla porta 24224.
-
Quando i container dell'applicazione generano log, il runtime docker aggiunge un tag a tali record, aggiunge altri metadati specificati nelle etichette e quindi li inoltra sulla porta 24224 dello spazio dei nomi dell'host.
-
Fluent Bit riceve il record di log sulla porta 24224 perché è esposto allo spazio dei nomi dell'host.
-
Fluent Bit esegue l'elaborazione interna e indirizza i log come specificato.
Questo tutorial utilizza la configurazione CloudWatch Fluent Bit predefinita che esegue le seguenti operazioni:
-
Crea un nuovo gruppo di log per ogni cluster e famiglia di definizione di attività.
-
Crea un nuovo flusso di log per ogni container di attività nel gruppo di log sopra generato ogni volta che viene avviata una nuova attività. Ogni flusso verrà contrassegnato con l'ID dell'attività a cui appartiene il container.
-
Aggiunge altri metadati tra cui il nome del cluster, l'ARN dell'attività, il nome del container di attività, la famiglia di definizioni di attività e il numero di revisione della definizione di attività in ogni voce del log.
Ad esempio, se hai
task_1
withcontainer_1
container_2
e task_2
withcontainer_3
, i seguenti sono i flussi di CloudWatch log:-
/aws/ecs/windows.ecs_task_1
task-out.
TASK_ID
.container_1task-out.
TASK_ID
.container_2 -
/aws/ecs/windows.ecs_task_2
task-out.
TASK_ID
.container_3
-
Fasi
Prerequisiti
Questo tutorial presuppone che siano stati soddisfatti i prerequisiti seguenti:
-
La versione più recente di AWS CLI è installata e configurata. Per ulteriori informazioni, vedere Installazione o aggiornamento alla versione più recente di AWS CLI.
-
L'immagine del container
aws-for-fluent-bit
è disponibile per i seguenti sistemi operativi Windows:-
Windows Server, versione 2019 (Core)
-
Windows Server, versione 2019 (Full)
-
Windows Server 2022 Core
-
Windows Server 2022 Full
-
-
Hai completato le fasi descritte in Configurazione per l'uso di Amazon ECS.
-
Hai un cluster. In questo tutorial, il nome del cluster è FluentBit-cluster.
-
Hai un VPC con una sottorete pubblica in cui verrà avviata l' EC2 istanza. È possibile utilizzare il VPC di default. Puoi anche utilizzare una sottorete privata che consente agli CloudWatch endpoint Amazon di raggiungere la sottorete. Per ulteriori informazioni sugli CloudWatch endpoint Amazon, consulta la sezione CloudWatch Endpoints e quote Amazon nel. Riferimenti generali di AWS Per ulteriori informazioni sull'utilizzo della procedura guidata di Amazon VPC per creare un VPC, consulta Crea un cloud privato virtuale.
Fase 1: Creazione dei ruoli di accesso IAM
Crea i ruoli IAM di Amazon ECS.
-
Crea il ruolo dell'istanza del contenitore Amazon ECS denominato "ecsInstanceRole». Per ulteriori informazioni, consulta Ruolo IAM delle istanze di container di Amazon ECS.
-
Crea un ruolo IAM per l'attività Fluent Bit denominata
fluentTaskRole
. Per ulteriori informazioni, consulta Ruolo IAM dell'attività Amazon ECS.Le autorizzazioni IAM concesse nel ruolo IAM sono assunte dai container delle attività. Per consentire a Fluent Bit di inviare i log a CloudWatch, devi assegnare le seguenti autorizzazioni al ruolo IAM dell'attività.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:CreateLogGroup", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource": "*" } ] }
-
Collegare la policy al ruolo.
-
Salva il contenuto di cui sopra in un file denominato
fluent-bit-policy.json
. -
Per collegare la policy in linea al ruolo IAM
fluentTaskRole
, esegui il comando riportato.aws iam put-role-policy --role-name fluentTaskRole --policy-name fluentTaskPolicy --policy-document file://fluent-bit-policy.json
-
Fase 2: Creazione di un'istanza di container Windows di Amazon ECS
Creazione di un'istanza di container Windows di Amazon ECS
Creazione di un'istanza Amazon ECS
-
Usa il comando
aws ssm get-parameters
per recuperare l'ID AMI per la regione che ospita il tuo VPC. Per ulteriori informazioni, consulta Recupero dei metadati dell'AMI ottimizzata per Amazon ECS. -
Usa la EC2 console Amazon per avviare l'istanza.
Apri la EC2 console Amazon all'indirizzo https://console.aws.amazon.com/ec2/
. -
Seleziona la Regione da utilizzare nella barra di navigazione.
-
Dalla EC2 dashboard, scegli Launch instance.
-
Per Name (Nome), inserisci un nome univoco.
-
Per Application and OS Images (Amazon Machine Image) (Immagini di applicazioni e sistema operativo [Amazon Machine Image]), scegli l'AMI che è stata recuperata nel primo passaggio.
-
In Instance type (Tipo di istanza) selezionare
t3.xlarge
. -
Per Key pair (login) (Coppia di chiavi [accesso]), scegli una coppia di chiavi.
-
In Network settings (Impostazioni di rete), per Security group (Gruppo di sicurezza), scegli un gruppo di sicurezza esistente o creane uno nuovo.
-
In Network settings (Impostazioni di rete), per Auto-assign Public IP (Assegna automaticamente un IP pubblico), seleziona Enable (Abilita).
-
In Dettagli avanzati, per il profilo dell'istanza IAM, scegli ecsInstanceRole.
-
Configura la tua istanza di container Amazon ECS con i seguenti dati utente. In Dettagli avanzati, incolla lo script seguente nel campo Dati utente, sostituendolo
cluster_name
con il nome del cluster.<powershell> Import-Module ECSTools Initialize-ECSAgent -Cluster
cluster-name
-EnableTaskENI -EnableTaskIAMRole -LoggingDrivers '["awslogs","fluentd"]' </powershell> -
Quando sei pronto, seleziona il campo di conferma e scegli Launch Instances (Avvia istanze).
-
Una pagina di conferma indicherà che l'istanza si sta avviando. Scegliere View Instances (Visualizza istanze) per chiudere la pagina di conferma e tornare alla console.
Fase 3: Configurazione di Fluent Bit
È possibile utilizzare la seguente configurazione predefinita fornita da AWS per iniziare rapidamente:
-
Amazon CloudWatch
che si basa sul plug-in Fluent Bit per Amazon CloudWatch nel Manuale ufficiale Fluent Bit.
In alternativa, puoi utilizzare altre configurazioni predefinite fornite da. AWS Per ulteriori informazioni, consulta Sostituzione del punto di ingresso per l'immagine Windowsaws-for-fluent-bit
sul sito Web di Github.
La configurazione predefinita di Amazon CloudWatch Fluent Bit è mostrata di seguito.
Sostituisci le seguenti variabili:
-
region
con la regione in cui desideri inviare i CloudWatch log di Amazon.
[SERVICE] Flush 5 Log_Level info Daemon off [INPUT] Name forward Listen 0.0.0.0 Port 24224 Buffer_Chunk_Size 1M Buffer_Max_Size 6M Tag_Prefix ecs. # Amazon ECS agent adds the following log keys as labels to the docker container. # We would use fluentd logging driver to add these to log record while sending it to Fluent Bit. [FILTER] Name modify Match ecs.* Rename com.amazonaws.ecs.cluster ecs_cluster Rename com.amazonaws.ecs.container-name ecs_container_name Rename com.amazonaws.ecs.task-arn ecs_task_arn Rename com.amazonaws.ecs.task-definition-family ecs_task_definition_family Rename com.amazonaws.ecs.task-definition-version ecs_task_definition_version [FILTER] Name rewrite_tag Match ecs.* Rule $ecs_task_arn ^([a-z-:0-9]+)/([a-zA-Z0-9-_]+)/([a-z0-9]+)$ out.$3.$ecs_container_name false Emitter_Name re_emitted [OUTPUT] Name cloudwatch_logs Match out.* region
region
log_group_name fallback-group log_group_template /aws/ecs/$ecs_cluster.$ecs_task_definition_family log_stream_prefix task- auto_create_group On
Ogni log che entra in Fluent Bit ha un tag specificato dall'utente o viene generato automaticamente quando non ne viene fornito uno. I tag possono essere utilizzati per indirizzare log diversi verso destinazioni diverse. Per ulteriori informazioni, consulta Tag
La configurazione di Fluent Bit sopra descritta ha le seguenti proprietà:
-
Il plug-in di input di inoltro ascolta il traffico in entrata sulla porta TCP 24224.
-
Ogni voce di log ricevuta su quella porta ha un tag che il plug-in di input di inoltro modifica per aggiungere una stringa
ecs.
al record come prefisso. -
La pipeline interna di Fluent Bit indirizza la voce del log per modificare il filtro utilizzando l'espressione regolare Match. Questo filtro sostituisce le chiavi del record di log JSON nel formato che Fluent Bit può utilizzare.
-
La voce di log modificata viene quindi utilizzata dal filtro rewrite_tag. Questo filtro modifica il tag del record di registro nel formato out.
TASK_ID
.CONTAINER_NAME
. -
Il nuovo tag verrà indirizzato al plug-in cloudwatch_logs di output che crea i gruppi e i flussi di log come descritto in precedenza utilizzando le opzioni e del
log_group_template
plug-in di output.log_stream_prefix
CloudWatch Per ulteriori informazioni, consulta Configuration parameters(Parametri di configurazione) nel manuale ufficiale di Fluent Bit.
Passaggio 4: Registrare una definizione di attività Windows Fluent Bit che indirizza i log a CloudWatch
Registrare una definizione di attività Windows Fluent Bit verso cui indirizzare i log. CloudWatch
Nota
Questa definizione di attività espone la porta del container 24224 di Fluent Bit alla porta host 24224. Verifica che questa porta non sia aperta nel gruppo di sicurezza dell' EC2 istanza per impedire l'accesso dall'esterno.
Come registrare una definizione di attività
-
Crea un file denominato
fluent-bit.json
con i seguenti contenuti.Sostituisci le seguenti variabili:
-
task-iam-role
con l'Amazon Resource Name (ARN) del ruolo IAM della tua attività -
region
con la regione in cui viene eseguita l'attività
{ "family": "ecs-windows-fluent-bit", "taskRoleArn": "
task-iam-role
", "containerDefinitions": [ { "name": "fluent-bit", "image": "public.ecr.aws/aws-observability/aws-for-fluent-bit:windowsservercore-latest", "cpu": 512, "portMappings": [ { "hostPort": 24224, "containerPort": 24224, "protocol": "tcp" } ], "entryPoint": [ "Powershell", "-Command" ], "command": [ "C:\\entrypoint.ps1 -ConfigFile C:\\ecs_windows_forward_daemon\\cloudwatch.conf" ], "environment": [ { "name": "AWS_REGION", "value": "region
" } ], "memory": 512, "essential": true, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/fluent-bit-logs", "awslogs-region": "region
", "awslogs-stream-prefix": "flb", "awslogs-create-group": "true" } } } ], "memory": "512", "cpu": "512" } -
-
Utilizza il comando seguente per registrare la definizione dell'attività.
aws ecs register-task-definition --cli-input-json
file://fluent-bit.json
--regionregion
Puoi sempre ottenere un elenco delle definizioni di attività per l'account tramite il comando
list-task-definitions
. L'output che mostra i valori della famiglia e delle revisioni che è possibile utilizzare insieme arun-task
ostart-task
.
Fase 5: Esecuzione della definizione di attività ecs-windows-fluent-bit
come servizio Amazon ECS utilizzando la strategia di pianificazione del daemon
Dopo aver registrato una definizione di attività per l'account, puoi eseguire un'attività nel cluster. Per questo tutorial, esegui una istanza della definizione di attività ecs-windows-fluent-bit:1
nel cluster FluentBit-cluster
. Esegui l'attività in un servizio che utilizza la strategia di pianificazione dei daemon, che garantisce che una singola istanza di Fluent Bit venga sempre eseguita su ciascuna delle istanze di container.
Per eseguire un'attività
-
Esegui il comando seguente per avviare la definizione di attività
ecs-windows-fluent-bit:1
(registrata nel passaggio precedente) come servizio.Nota
Questa definizione di attività utilizza il driver di registrazione
awslogs
; l'istanza di container deve disporre delle autorizzazioni necessarie.Sostituisci le seguenti variabili:
-
region
con la regione in cui viene eseguito il servizio
aws ecs create-service \ --cluster FluentBit-cluster \ --service-name FluentBitForwardDaemonService \ --task-definition ecs-windows-fluent-bit:1 \ --launch-type EC2 \ --scheduling-strategy DAEMON \ --region
region
-
-
Per elencare le attività, esegui il comando riportato.
Sostituisci le seguenti variabili:
-
region
con la regione in cui vengono eseguite le attività di assistenza
aws ecs list-tasks --cluster
--regionFluentBit-cluster
region
-
Fase 6: Registrazione di una definizione di attività di Windows che genera i log
Registrazione di una definizione di attività di Windows che genera i log Questa definizione di attività implementa l'immagine del container di Windows che scriverà un numero incrementale su stdout
ogni secondo.
La definizione di attività utilizza il driver di registrazione fluentd che si collega alla porta 24224 su cui ascolta il plug-in Fluent Bit. L'agente Amazon ECS etichetta ogni container Amazon ECS con tag che includono il nome del cluster, l'ARN dell'attività, il nome della famiglia della definizione di attività, il numero di revisione della definizione di attività e il nome del container delle attività. Queste etichette chiave-valore vengono passate a Fluent Bit.
Nota
Questa attività utilizza la modalità di rete default
. Tuttavia, è anche possibile utilizzare la modalità di rete awsvpc
con l'attività.
Come registrare una definizione di attività
-
Crea un file denominato
windows-app-task.json
con i seguenti contenuti.{ "family": "windows-app-task", "containerDefinitions": [ { "name": "sample-container", "image": "mcr.microsoft.com/windows/servercore:ltsc2019", "cpu": 512, "memory": 512, "essential": true, "entryPoint": [ "Powershell", "-Command" ], "command": [ "$count=1;while(1) { Write-Host $count; sleep 1; $count=$count+1;}" ], "logConfiguration": { "logDriver": "fluentd", "options": { "fluentd-address": "localhost:24224", "tag": "{{ index .ContainerLabels \"com.amazonaws.ecs.task-definition-family\" }}", "fluentd-async": "true", "labels": "com.amazonaws.ecs.cluster,com.amazonaws.ecs.container-name,com.amazonaws.ecs.task-arn,com.amazonaws.ecs.task-definition-family,com.amazonaws.ecs.task-definition-version" } } } ], "memory": "512", "cpu": "512" }
-
Utilizza il comando seguente per registrare la definizione dell'attività.
Sostituisci le seguenti variabili:
-
region
con la regione in cui viene eseguita l'attività
aws ecs register-task-definition --cli-input-json
file://windows-app-task.json
--regionregion
Puoi sempre ottenere un elenco delle definizioni di attività per l'account tramite il comando
list-task-definitions
. L'output che mostra i valori della famiglia e delle revisioni che è possibile utilizzare insieme arun-task
ostart-task
. -
Fase 7: Esecuzione della definizione di attività windows-app-task
Dopo aver registrato la definizione di attività windows-app-task
, eseguila nel cluster FluentBit-cluster
.
Per eseguire un'attività
-
Esegui la definizione di attività
windows-app-task:1
registrata nella fase precedente.Sostituisci le seguenti variabili:
-
region
con la regione in cui viene eseguita l'attività
aws ecs run-task --cluster FluentBit-cluster --task-definition windows-app-task:1 --count 2 --region
region
-
-
Per elencare le attività, esegui il comando riportato.
aws ecs list-tasks --cluster
FluentBit-cluster
Fase 8: Verificare gli accessi CloudWatch
Per verificare la configurazione di Fluent Bit, controlla i seguenti gruppi di log nella CloudWatch console:
-
/ecs/fluent-bit-logs
: questo è il gruppo di log che corrisponde al container del daemon Fluent Bit in esecuzione sull'istanza di container. -
/aws/ecs/FluentBit-cluster.windows-app-task
: questo è il gruppo di log che corrisponde a tutte le attività avviate per la famiglia di definizione di attivitàwindows-app-task
all'interno del clusterFluentBit-cluster
.task-out.
: questo flusso di log contiene tutti i log generati dalla prima istanza dell'attività nel container delle attività sample-container.FIRST_TASK_ID
.sample-containertask-out.
: questo flusso di log contiene tutti i log generati dalla seconda istanza dell'attività nel container delle attività sample-container.SECOND_TASK_ID
.sample-container
Il flusso di log task-out.
ha campi simili ai seguenti:TASK_ID
.sample-container
{
"source": "stdout",
"ecs_task_arn": "arn:aws:ecs:region
:0123456789012:task/FluentBit-cluster/13EXAMPLE",
"container_name": "/ecs-windows-app-task-1-sample-container-cEXAMPLE",
"ecs_cluster": "FluentBit-cluster",
"ecs_container_name": "sample-container",
"ecs_task_definition_version": "1",
"container_id": "61f5e6EXAMPLE",
"log": "10",
"ecs_task_definition_family": "windows-app-task"
}
Verifica della configurazione di Fluent Bit
Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/
. -
Nel pannello di navigazione, selezionare Log groups (Gruppi di log). Assicurati di trovarti nella regione in cui è stato implementato Fluent Bit sui container.
Nell'elenco dei gruppi di log di Regione AWS, dovresti vedere quanto segue:
-
/ecs/fluent-bit-logs
-
/aws/ecs/FluentBit-cluster.windows-app-task
Se questi gruppi di log sono visualizzati, la configurazione Fluent Bit è verificata.
-
Fase 9: Pulizia
Una volta terminato questo tutorial, rimuovi le risorse associate per evitare costi aggiuntivi per risorse che non utilizzi.
Per eliminare le risorse del tutorial
-
Interrompi l'attività
windows-simple-task
e l'attivitàecs-fluent-bit
. Per ulteriori informazioni, consulta Interruzione di un'attività Amazon ECS. -
Esegui il comando riportato per eliminare il gruppo di log
/ecs/fluent-bit-logs
. Per ulteriori informazioni, sull'eliminazione dei gruppi di log, consulta delete-log-groupla sezione AWS Command Line Interface Reference.aws logs delete-log-group --log-group-name /ecs/fluent-bit-logs aws logs delete-log-group --log-group-name /aws/ecs/FluentBit-cluster.windows-app-task
-
Esegui il comando riportato per terminare l'istanza.
aws ec2 terminate-instances --instance-ids
instance-id
-
Esegui i comandi riportati per eliminare i ruoli IAM.
aws iam delete-role --role-name ecsInstanceRole aws iam delete-role --role-name fluentTaskRole
-
Esegui il seguente comando per eliminare il cluster Amazon ECS.
aws ecs delete-cluster --cluster
FluentBit-cluster