Como faço para solucionar problemas de configuração quando integro o Fluent Bit com o Container Insights para o Amazon EKS?

5 minuto de leitura
0

Quero solucionar problemas de configuração quando integro o Fluent Bit com o Amazon CloudWatch Container Insights para o Amazon Elastic Kubernetes Service (Amazon EKS).

Breve descrição

Observação: é uma prática recomendada usar o Fluent Bit em vez do Fluentd. Para obter mais informações, consulte Enviar logs ao CloudWatch Logs.

Para permitir que o Fluent Bit forneça logs de contêineres ao CloudWatch Logs, você deve conceder permissões do AWS Identity and Access Management (IAM) ao Fluent Bit. Para obter mais informações, consulte Verifique os pré-requisitos.

Para usar o Container Insights com o Fluent bit, configure um perfil do IAM para a conta de serviço (IRSA) e implante o Container Insights no seu cluster do EKS.

Resolução

Configurar o Container Insights com o Fluent Bit

Use a política gerenciada do AWS CloudWatchAgentServerPolicy para criar uma conta de serviço cloudwatch-agent e fluent-bit.

Conclua as seguintes etapas:

  1. Execute os seguintes comandos para configurar as variáveis de ambiente:

    export CLUSTER=clustername
    export AWS_REGION=awsregion

    Observação: substitua clustername, awsregion por seu próprio nome de cluster e região da AWS.

  2. Execute o seguinte comando eksctl para criar uma conta de serviço CloudWatch-agent com IRSA:

    eksctl create iamserviceaccount \
        --name cloudwatch-agent \
        --namespace amazon-cloudwatch \
        --cluster $CLUSTER \
        --attach-policy-arn "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy" \
        --approve \
        --override-existing-serviceaccounts
  3. Execute o seguinte comando eksctl para criar a conta de serviço do Fluent Bit com IRSA:

    eksctl create iamserviceaccount \
        --name fluent-bit \
        --namespace amazon-cloudwatch \
        --cluster $CLUSTER \
        --attach-policy-arn "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy" \
        --approve \
        --override-existing-serviceaccounts
  4. Para usar o início rápido para implantar o Container Insights, execute o seguinte 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'
    curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/quickstart/cwagent-fluent-bit-quickstart-enhanced.yaml | sed 's/{{cluster_name}}/'${ClusterName}'/;s/{{region_name}}/'${RegionName}'/;s/{{http_server_toggle}}/"'${FluentBitHttpServer}'"/;s/{{http_server_port}}/"'${FluentBitHttpPort}'"/;s/{{read_from_head}}/"'${FluentBitReadFromHead}'"/;s/{{read_from_tail}}/"'${FluentBitReadFromTail}'"/' | kubectl apply -f -

    Observação: substitua my-cluster-name e my-cluster-region por seu próprio nome de cluster e região. O comando anterior cria um ClusterRole, ClusterRoleBinding, ConfigMap e DaemonSet para o agente do CloudWatch e o Fluent Bit.

  5. Execute o seguinte comando para validar a implantação do agente do CloudWatch e do Fluent Bit:

    kubectl get pods -n amazon-cloudwatch

Quando a implementação estiver concluída, o agente do CloudWatch criará o grupo de logs /aws/containerinsights/Cluster_Name/performance.

O Fluent Bit cria os grupos de registro /aws/containerinsights/Cluster_Name/application, /aws/containerinsights/Cluster_Name/host e /aws/containerinsights/Cluster_Name/dataplane.

Solucionar problemas de configuração do Fluent Bit

Falha nos pods do Fluent Bit

Para verificar se há mensagens de erro nos logs do pod do Fluent Bit, conclua as etapas a seguir:

  1. Execute os seguintes comandos para localizar eventos de pods do Fluent Bit:

    kubectl -n amazon-cloudwatch logs -l k8s-app=fluent-bit
    kubectl -n amazon-cloudwatch describe pod fluent_pod pod_name
  2. Verifique se o endereço cluster-info está correto e não contém erros de sintaxe.

  3. Verifique se todos os valores de nome e região do cluster estão definidos. Para obter mais informações, consulte amazon-cloudwatch-container-insights no site do GitHub.

O Fluent Bit não envia logs ao CloudWatch

Conclua as etapas a seguir para solucionar o problema:

  1. Verifique se o plug-in de saída está configurado corretamente no arquivo de configuração do Fluent Bit. Para verificar se há algum erro de envio de dados, execute o seguinte comando para visualizar os logs do pod do Fluent Bit:

    kubectl -n amazon-cloudwatch logs fluent_pod_name
  2. Certifique-se de que os pods do Fluent Bit tenham as permissões do IAM necessárias para criar grupos de logs e transmitir logs ao CloudWatch. Você deve ter a política do IAM CloudWatchAgentServerPolicy anexada ao perfil do IAM que está anotado na conta de serviço fluent-bit.
    Se você usou o IRSA, deverá anexar o perfil do IAM aos nós de processamento. Para obter mais informações, consulte Como faço para solucionar erros de IRSA no Amazon EKS?

Se você não vir logs de aplicativos específicos, confirme se a aplicação pode ser executado. Em seguida, confirme se a aplicação pode gerar outros tipos de logs. Se a aplicação for executada e os logs forem gerados, verifique os logs do pod fluent-bit para ver se erros específicos são enviados ao CloudWatch.

Os pods do Fluent Bit estão presos no status CreateContainerConfigError

Execute o seguinte comando para obter a mensagem de erro exata:

kubectl describe pod pod_name -n amazon-cloudwatch

Na seção Eventos da saída do comando, procure uma mensagem de erro como a seguinte:

Error syncing pod ("fluent-bit-xxxxxxx"), skipping: failed to "StartContainer" with CreateContainerConfigError: "configmap \"fluent-bit-config\" not found"

Se você vir a mensagem de erro anterior, o ConfigMap do Fluent Bit (fluent-bit-config) está ausente. Repita a etapa 4 na seção Configurar o Container Insights com o Fluent Bit deste artigo.

Informações relacionadas

Configurar o atendente do CloudWatch para coletar métricas do cluster

Início rápido ao usar o operador do agente do CloudWatch e o Fluent Bit

Activate debug logging no site do GitHub

AWS OFICIAL
AWS OFICIALAtualizada há um ano