Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
¿Cómo puedo transmitir los registros de los contenedores a CloudWatch en Amazon EKS?
Quiero usar Fluent Bit o Fluentd para transmitir registros desde contenedores que se ejecutan en Amazon Elastic Kubernetes Service (Amazon EKS) a Registros de Amazon CloudWatch.
Descripción corta
Dado que Fluent Bit es la solución de registro predeterminada para Información de contenedores de CloudWatch, se recomienda utilizar Fluent Bit en lugar de Fluentd. Amazon proporciona una imagen de contenedor de Fluent Bit en Amazon Elastic Container Registry (Amazon ECR). Para obtener más información, consulta Repositorios de imágenes de AWS para Fluent Bit para Amazon ECS.
Para descargar Fluent Bit, consulta Cómo empezar a usar Fluent Bit en el sitio web de Fluent Bit. Para Fluentd, consulta Descargar Fluentd en el sitio web de Fluentd.
Cuando configuras Fluent Bit como un DaemonSet para enviar registros a CloudWatch, Fluent Bit crea los siguientes orígenes y grupos de registros:
- /aws/containerinsights/Cluster_Name/application: El origen del registro son todos los archivos de registro de /var/log/containers.
- /aws/containerinsights/Cluster_Name/host: El origen del registro son los registros de /var/log/dmesg, /var/log/secure y /var/log/messages.
- /aws/containerinsights/Cluster_Name/dataplane: El origen del registro son los registros de /var/log/journal for kubelet.service, kubeproxy.service y docker.service.
Resolución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Transmisión de registros de contenedores que se ejecutan en Amazon EKS en un clúster de Amazon EC2
Sigue estos pasos:
-
Para crear un espacio de nombres denominado amazon-cloudwatch, ejecuta el siguiente 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 -
Para crear un ConfigMap denominado fluent-bit-cluster-info que incluya el nombre del clúster y la región de AWS a la que deseas enviar los registros, ejecuta el siguiente 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: Sustituye my-cluster-name y my-cluster-region por tu nombre de clúster y región.
-
Para usar Fluent Bit para enviar registros a un clúster de Amazon Elastic Compute Cloud (Amazon EC2), ejecuta el siguiente comando de 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 -
(Opcional) Para usar Fluent Bit en Amazon ECR, ejecuta el siguiente comando aws-for-fluent-bit de DaemonSet:
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"}]}}}}' -
Para crear roles de AWS Identity and Access Management para cuentas de servicio (IRSA), ejecuta el siguiente 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-serviceaccountsPara obtener más información, consulta Configuración de Fluent Bit como un DaemonSet para enviar registros a Registros de CloudWatch.
Solución de problemas de despliegue de Fluent Bit
Sigue estos pasos:
-
Para enumerar los nombres de los pods en el espacio de nombres amazon-cloudwatch, ejecuta el siguiente comando:
kubectl get pods -n amazon-cloudwatchNota: El nombre del pod se devuelve como fluent-bit-*****.
-
Para comprobar el resultado de los eventos, ejecuta el siguiente comando:
kubectl describe pod POD_NAME -n amazon-cloudwatchNota: Sustituye POD_NAME por el nombre de tu pod.
-
Para comprobar los registros, ejecuta el siguiente comando:
kubectl logs pod-name -n amazon-cloudwatchNota: Sustituye POD_NAME por el nombre de tu pod.
Eliminación del despliegue de Fluent Bit
Para eliminar el despliegue de Fluent Bit, ejecuta los siguientes comandos:
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
Transmisión de registros de contenedores que se ejecutan en Amazon EKS en un clúster de Fargate
Amazon EKS en un clúster de AWS Fargate tiene un enrutador de registros integrado que se basa en Fluent Bit. AWS ejecuta Fluent Bit automáticamente. Para obtener más información, consulta Inicio del registro de AWS Fargate para el clúster.
Para transmitir los registros de los contenedores a Registros de CloudWatch, sigue estos pasos:
-
Para crear un espacio de nombres de Kubernetes dedicado denominado aws-observability, ejecuta el siguiente 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 -
Para crear un ConfigMap con un valor de datos de Fluent Conf para transmitir los registros del contenedor a Registros de CloudWatch, ejecuta el siguiente 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 política administrada por AWS para CloudWatch. A continuación, adjunta la política de IAM al rol de ejecución del pod que has especificado para tu perfil de Fargate.
Para descargar el archivo de política de IAM, ejecuta el siguiente comando:
curl -o permissions.json https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/cloudwatchlogs/permissions.jsonPara crear una política de IAM a partir del archivo de políticas, ejecuta el siguiente comando create-policy:
aws iam create-policy --policy-name eks-fargate-logging-policy --policy-document file://permissions.jsonPara adjuntar la política de IAM al rol de ejecución del pod que has especificado para tu perfil de Fargate, ejecuta el siguiente 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: Sustituye 111122223333 por el ID de tu cuenta.
Para obtener más información, consulta Solución de problemas de AWS X-Ray.
Desactivación de los registros de transmisión de EKS en los pods Fargate
Para desactivar los registros de transmisión de tu EKS en los pods de Fargate, ejecuta el siguiente comando:
kubectl delete namespace aws-observability
Elimina los pods y, a continuación, vuelve a desplegarlos después de eliminar el espacio de nombres aws-observability.
- Idioma
- Español

Contenido relevante
- preguntada hace 5 meses
- Como solucionar el error: Supplied Policy document is breaching Cloudwatch Logs policy length limit.Respuesta aceptadapreguntada hace un año
- preguntada hace 10 meses