Utilizzo dell' CloudWatch agente per inviare log in formato metrico incorporato - Amazon CloudWatch

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à.

Utilizzo dell' CloudWatch agente per inviare log in formato metrico incorporato

Questa sezione descrive come installare e utilizzare l' CloudWatch agente. La prima parte di questa sezione descrive come installare l' CloudWatch agente. La seconda parte di questa sezione descrive come utilizzare l' CloudWatch agente per inviare log in formato metrico incorporato. Se si desidera utilizzare questo metodo, è necessario installare l' CloudWatch agente per Servizi AWS da cui desideri inviare log in formato metrico incorporato da. Quindi puoi iniziare a inviare gli eventi. L' CloudWatch agente deve avere la versione 1.230621.0 o successiva.

Nota

Non è necessario installare l' CloudWatch agente per inviare i log dalle funzioni Lambda.

I timeout della funzione Lambda non vengono gestiti automaticamente. Ciò significa che se la funzione scade prima che i parametri vengano scaricati, i parametri per tale chiamata non verranno acquisiti.

Installazione dell'agente CloudWatch

Installa l' CloudWatch agente per ogni servizio che deve inviare log in formato metrico incorporato.

Installazione dell'agente CloudWatch su EC2

Innanzitutto, installa l' CloudWatch agente sull'istanza. Per ulteriori informazioni, consulta Installa l'agente CloudWatch .

Dopo aver installato l'agente, configuralo per ascoltare su una TCP porta UDP or i log in formato metrico incorporato. Di seguito è riportato un esempio di questa configurazione che rimane in ascolto sul socket predefinito tcp:25888. Per ulteriori informazioni sulla configurazione dell'agente, consulta Crea o modifica manualmente il file di configurazione CloudWatch dell'agente.

{ "logs": { "metrics_collected": { "emf": { } } } }

Installazione dell' CloudWatchagente su Amazon ECS

Il modo più semplice per distribuire l' CloudWatch agente su Amazon ECS è eseguirlo come sidecar, definendolo nella stessa definizione di attività dell'applicazione.

Creazione del file di configurazione dell'agente

Crea il file di configurazione CloudWatch dell'agente localmente. In questo esempio, il percorso file relativo sarà amazon-cloudwatch-agent.json.

Per ulteriori informazioni sulla configurazione dell'agente, consulta Crea o modifica manualmente il file di configurazione CloudWatch dell'agente.

{ "logs": { "metrics_collected": { "emf": { } } } }

Invia la configurazione a SSM Parameter Store

Immettete il seguente comando per inviare il file di configurazione dell' CloudWatch agente al AWS Archivio parametri Systems Manager (SSM).

aws ssm put-parameter \ --name "cwagentconfig" \ --type "String" \ --value "`cat amazon-cloudwatch-agent.json`" \ --region "{{region}}"

Configurazione della definizione di attività

Configurate la definizione dell'attività per utilizzare l' CloudWatch agente ed esporre la UDP porta TCP or. La definizione di attività di esempio da utilizzare dipende dalla modalità di rete.

Tieni presente che webapp specifica la variabile di ambiente AWS_EMF_AGENT_ENDPOINT. Questa viene utilizzata dalla libreria e deve mostrare l'endpoint su cui l'agente è in ascolto. Inoltre, cwagent specifica CW_CONFIG_CONTENT come parametro «valueFrom» che rimanda alla SSM configurazione creata nel passaggio precedente.

Questa sezione contiene un esempio per la modalità bridge e un esempio per la modalità host o awsvpc. Per altri esempi di come configurare l' CloudWatch agente su AmazonECS, consulta il repository di esempi Github

Di seguito è riportato un esempio di modalità bridge. Quando è abilitata la modalità di rete bridge, l'agente deve essere collegato all'applicazione utilizzando il parametro links e deve essere indirizzato utilizzando il nome del container.

{ "containerDefinitions": [ { "name": "webapp", "links": [ "cwagent" ], "image": "my-org/web-app:latest", "memory": 256, "cpu": 256, "environment": [{ "name": "AWS_EMF_AGENT_ENDPOINT", "value": "tcp://cwagent:25888" }], }, { "name": "cwagent", "mountPoints": [], "image": "public.ecr.aws/cloudwatch-agent/cloudwatch-agent:latest", "memory": 256, "cpu": 256, "portMappings": [{ "protocol": "tcp", "containerPort": 25888 }], "environment": [{ "name": "CW_CONFIG_CONTENT", "valueFrom": "cwagentconfig" }], } ], }

Di seguito è riportato un esempio per la modalità host o la modalità awsvpc. Durante l'esecuzione su tali modalità di rete, l'agente può essere indirizzato su localhost.

{ "containerDefinitions": [ { "name": "webapp", "image": "my-org/web-app:latest", "memory": 256, "cpu": 256, "environment": [{ "name": "AWS_EMF_AGENT_ENDPOINT", "value": "tcp://127.0.0.1:25888" }], }, { "name": "cwagent", "mountPoints": [], "image": "public.ecr.aws/cloudwatch-agent/cloudwatch-agent:latest", "memory": 256, "cpu": 256, "portMappings": [{ "protocol": "tcp", "containerPort": 25888 }], "environment": [{ "name": "CW_CONFIG_CONTENT", "valueFrom": "cwagentconfig" }], } ], }
Nota

In modalità awsvpc, è necessario fornire un indirizzo IP pubblico a (solo VPC Fargate), configurare un NAT gateway o configurare un endpoint Logs. CloudWatch VPC Per ulteriori informazioni sulla configurazione di un, vedere Gateways. NAT NAT Per ulteriori informazioni sulla configurazione di un VPC endpoint CloudWatch Logs, vedere Using Logs with Interface CloudWatch Endpoints. VPC

Di seguito è riportato un esempio di come assegnare un indirizzo IP pubblico a un'attività che utilizza il tipo di lancio Fargate.

aws ecs run-task \ --cluster {{cluster-name}} \ --task-definition cwagent-fargate \ --region {{region}} \ --launch-type FARGATE \ --network-configuration "awsvpcConfiguration={subnets=[{{subnetId}}],securityGroups=[{{sgId}}],assignPublicIp=ENABLED}"

Garantire le autorizzazioni

Assicurati che il IAM ruolo che esegue le tue attività sia autorizzato a leggere dal Parameter Store. SSM È possibile aggiungere questa autorizzazione allegando la mazonSSMRead OnlyAccess politica A. A questo scopo, immetti il comando seguente.

aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonSSMReadOnlyAccess \ --role-name CWAgentECSExecutionRole

Installazione dell' CloudWatchagente su Amazon EKS

Alcune parti di questo processo possono essere ignorate se hai già installato CloudWatch Container Insights su questo cluster.

Autorizzazioni

Se non hai già installato Container Insights, assicurati innanzitutto che i tuoi EKS nodi Amazon dispongano delle IAM autorizzazioni appropriate. Dovrebbero avere l'CloudWatchAgentServerPolicyallegato. Per ulteriori informazioni, consulta Verifica dei prerequisiti per Container Insights in CloudWatch.

Crea ConfigMap

Crea un ConfigMap file per l'agente. Indica ConfigMap inoltre all'agente di ascoltare su una UDP porta TCP or. Usa quanto segue ConfigMap.

# cwagent-emf-configmap.yaml apiVersion: v1 data: # Any changes here must not break the JSON format cwagentconfig.json: | { "agent": { "omit_hostname": true }, "logs": { "metrics_collected": { "emf": { } } } } kind: ConfigMap metadata: name: cwagentemfconfig namespace: default

Se hai già installato Container Insights, aggiungi la "emf": { } riga seguente a quella esistente ConfigMap.

Applica il ConfigMap

Immettere il comando seguente per applicare il ConfigMap.

kubectl apply -f cwagent-emf-configmap.yaml

Distribuzione dell'agente

Per distribuire l' CloudWatch agente come sidecar, aggiungete l'agente alla definizione del pod, come nell'esempio seguente.

apiVersion: v1 kind: Pod metadata: name: myapp namespace: default spec: containers: # Your container definitions go here - name: web-app image: my-org/web-app:latest # CloudWatch Agent configuration - name: cloudwatch-agent image: public.ecr.aws/cloudwatch-agent/cloudwatch-agent:latest imagePullPolicy: Always resources: limits: cpu: 200m memory: 100Mi requests: cpu: 200m memory: 100Mi volumeMounts: - name: cwagentconfig mountPath: /etc/cwagentconfig ports: # this should match the port configured in the ConfigMap - protocol: TCP hostPort: 25888 containerPort: 25888 volumes: - name: cwagentconfig configMap: name: cwagentemfconfig

Utilizzo dell' CloudWatch agente per inviare log in formato metrico incorporato

Una volta installato e CloudWatch funzionante l'agente, è possibile inviare i log in formato metrico incorporato tramite o. TCP UDP Durante l'invio di log sull'agente è necessario rispettare due requisiti:

  • I log devono contenere una chiave LogGroupName che indica all'agente quale gruppo di log utilizzare.

  • Ogni evento di log deve trovarsi su una singola riga. In altre parole, un evento di log non può contenere il carattere di nuova riga (n).

Gli eventi di log devono inoltre seguire le specifiche Embedded Metric Format. Per ulteriori informazioni, consulta Specifica: Embedded Metric Format.

Se prevedi di creare allarmi su parametri creati utilizzando il formato dei parametri incorporati, consulta Impostazione degli allarmi sui parametri creati con il formato dei parametri incorporati per ottenere dei suggerimenti.

Di seguito è riportato un esempio di invio manuale di eventi di log da una shell bash Linux. È invece possibile utilizzare le interfacce UDP socket fornite dal linguaggio di programmazione preferito.

echo '{"_aws":{"Timestamp":1574109732004,"LogGroupName":"Foo","CloudWatchMetrics":[{"Namespace":"MyApp","Dimensions":[["Operation"]],"Metrics":[{"Name":"ProcessingLatency","Unit":"Milliseconds","StorageResolution":60}]}]},"Operation":"Aggregator","ProcessingLatency":100}' \ > /dev/udp/0.0.0.0/25888
Nota

Con il formato metrico incorporato, puoi tenere traccia dell'elaborazione dei tuoi EMF log in base alle metriche pubblicate nel AWS/Logs namespace del tuo account. Questi possono essere utilizzati per tenere traccia della generazione non riuscita delle metriche da EMF e degli eventuali errori dovuti all'analisi o alla convalida. Per maggiori dettagli, consulta Monitoraggio con metriche. CloudWatch