AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
Come posso trasmettere log da container a CloudWatch in Amazon EKS?
Desidero utilizzare Fluent Bit o Fluentd per trasmettere log da container eseguiti in Amazon Elastic Kubernetes Service (Amazon EKS) ad Amazon CloudWatch Logs.
Breve descrizione
Poiché Fluent Bit è la soluzione di log predefinita per CloudWatch Container Insights, è consigliabile utilizzare Fluent Bit anziché Fluentd. Amazon fornisce un'immagine del container Fluent Bit su Amazon Elastic Container Registry (Amazon ECR). Per ulteriori informazioni, consulta AWS for Fluent Bit image repositories for Amazon ECS (Repository AWS per immagini Fluent Bit per Amazon ECS).
Per scaricare Fluent Bit, consulta Getting started with Fluent Bit (Guida introduttiva a Fluent Bit) sul sito web di Fluent Bit. Per Fluentd, consulta Download Fluentd (Scarica Fluentd) sul sito web di Fluentd.
Quando configuri Fluent Bit come DaemonSet per inviare log a CloudWatch, Fluent Bit crea i seguenti gruppi e origini di log:
- /aws/containerinsights/Cluster_Name/application: L'origine dei log è costituita da tutti i file di log in /var/log/containers.
- /aws/containerinsights/Cluster_Name/host: L'origine dei log è costituita dai log in /var/log/dmesg, /var/log/secure e /var/log/messages.
- /aws/containerinsights/Cluster_Name/dataplane: L'origine dei log è costituita dai log in /var/log/journal per kubelet.service, kubeproxy.service e docker.service.
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.
Trasmetti i log dei container eseguiti in Amazon EKS su un cluster Amazon EC2
Completa i seguenti passaggi:
-
Per creare un namespace denominato amazon-cloudwatch, esegui questo comando:
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cloudwatch-namespace.yaml -
Per creare una ConfigMap denominata fluent-bit-cluster-info che includa il nome del cluster e la R\egione AWS a cui desideri inviare i log, esegui questo comando:
ClusterName=my-cluster-name RegionName=my-cluster-region FluentBitHttpPort='2020' FluentBitReadFromHead='Off' [[ ${FluentBitReadFromHead} = 'On' ]] && FluentBitReadFromTail='Off'|| FluentBitReadFromTail='On' [[ -z ${FluentBitHttpPort} ]] && FluentBitHttpServer='Off' || FluentBitHttpServer='On' kubectl create configmap fluent-bit-cluster-info \ --from-literal=cluster.name=${ClusterName} \ --from-literal=http.server=${FluentBitHttpServer} \ --from-literal=http.port=${FluentBitHttpPort} \ --from-literal=read.head=${FluentBitReadFromHead} \ --from-literal=read.tail=${FluentBitReadFromTail} \ --from-literal=logs.region=${RegionName} -n amazon-cloudwatchNota: sostituisci my-cluster-name e my-cluster-region con il nome e la Regione del tuo cluster.
-
Per utilizzare Fluent Bit per inviare log a un cluster Amazon Elastic Compute Cloud (Amazon EC2), esegui questo comando DaemonSet:
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/fluent-bit/fluent-bit.yaml -
(Facoltativo) Per utilizzare Fluent Bit su Amazon ECR, esegui questo comando DaemonSet aws-for-fluent-bit:
kubectl patch ds fluent-bit -n amazon-cloudwatch -p \'{"spec":{"template":{"spec":{"containers":[{"name":"fluent-bit","image":"public.ecr.aws/aws-observability/aws-for-fluent-bit:latest"}]}}}}' -
Per creare ruoli AWS Identity and Access Management per gli account di servizio (IRSA), esegui questo comando eksctl:
eksctl create iamserviceaccount \ --name fluent-bit \ --namespace amazon-cloudwatch \ --cluster $CLUSTER \ --attach-policy-arn "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy" \ --approve \ --override-existing-serviceaccountsPer ulteriori informazioni, consulta Set up Fluent Bit as a DaemonSet to send logs to CloudWatch Logs (Configurazione di Fluent Bit come DaemonSet per inviare log a CloudWatch Logs).
Risolvi i problemi relativi alla distribuzione di Fluent Bit
Completa i seguenti passaggi:
-
Per elencare i nomi dei pod nel namespace amazon-cloudwatch, esegui questo comando:
kubectl get pods -n amazon-cloudwatchNota: il nome del pod viene restituito come fluent-bit-*****.
-
Per controllare l'output degli eventi, esegui questo comando:
kubectl describe pod POD_NAME -n amazon-cloudwatchNota: sostituisci POD_NAME con il nome del tuo pod.
-
Per verificare i log, esegui questo comando:
kubectl logs pod-name -n amazon-cloudwatchNota: sostituisci POD_NAME con il nome del tuo pod.
Elimina la distribuzione di Fluent Bit
Per eliminare la distribuzione di Fluent Bit, esegui questi comandi:
kubectl delete configmap fluent-bit-cluster-info -n amazon-cloudwatch kubectl delete -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/fluent-bit/fluent-bit.yaml
Trasmetti i log dei container eseguiti in Amazon EKS su un cluster Fargate
Amazon EKS su un cluster AWS Fargate ha un router di log integrato basato su Fluent Bit. AWS esegue automaticamente Fluent Bit per te. Per ulteriori informazioni, consulta Start AWS Fargate logging for your cluster (Avvio della registrazione di AWS Fargate per un cluster).
Per trasmettere i log dai container a CloudWatch Logs, completa i seguenti passaggi:
-
Per creare un namespace Kubernetes dedicato denominato aws-observability, esegui questo comando:
cat <<EOF > aws-observability-namespace.yaml kind: Namespace apiVersion: v1 metadata: name: aws-observability labels: aws-observability: enabled EOF kubectl apply -f aws-observability-namespace.yaml -
Per creare una ConfigMap con un valore di dati Fluent Conf per trasmettere i log dai container a CloudWatch Logs, esegui questo comando:
cat <<EOF > aws-logging-cloudwatch-configmap.yaml kind: ConfigMap apiVersion: v1 metadata: name: aws-logging namespace: aws-observability data: output.conf: | [OUTPUT] Name cloudwatch_logs Match * region region-code log_group_name fluent-bit-cloudwatch log_stream_prefix from-fluent-bit- auto_create_group true log_key log parsers.conf: | [PARSER] Name crio Format Regex Regex ^(?<time>[^ ]+) (?<stream>stdout|stderr) (?<logtag>P|F) (?<log>.*)$ Time_Key time Time_Format %Y-%m-%dT%H:%M:%S.%L%z filters.conf: | [FILTER] Name parser Match * Key_name log Parser crio EOF kubectl apply -f aws-logging-cloudwatch-configmap.yaml -
Crea una policy gestita da AWS per CloudWatch. Quindi collega la policy IAM al ruolo di esecuzione del pod che hai specificato per il profilo Fargate.
Per scaricare il file della policy IAM, esegui questo comando:
curl -o permissions.json https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/cloudwatchlogs/permissions.jsonPer creare una policy IAM dal file della policy, esegui questo comando create-policy:
aws iam create-policy --policy-name eks-fargate-logging-policy --policy-document file://permissions.jsonPer collegare la policy IAM al ruolo di esecuzione del pod specificato per il profilo Fargate, esegui questo comando attach-role-policy:
aws iam attach-role-policy \ --policy-arn arn:aws:iam::111122223333:policy/eks-fargate-logging-policy \ --role-name your-pod-execution-roleNota: sostituisci 111122223333 con l'ID del tuo account.
Per ulteriori informazioni, consulta Troubleshooting (Risoluzione dei problemi).
Disattiva la trasmissione di log per i pod EKS su Fargate
Per disattivare la trasmissione di log per i pod EKS su Fargate, esegui questo comando:
kubectl delete namespace aws-observability
Elimina i pod e ridistribuiscili dopo aver eliminato il namespace aws-observability.
- Lingua
- Italiano
