

# Registro do mapeamento da origem do evento do Kafka
<a name="esm-logging"></a>

Você pode configurar o registro em nível de sistema para seus mapeamentos da origem de eventos do Kafka a fim de habilitar e filtrar os logs do sistema que os agentes de sondagem de eventos Lambda enviam para o CloudWatch. 

Esse recurso está disponível apenas para mapeamentos de origens de eventos do Kafka e com o [Modo provisionado](https://docs.aws.amazon.com/lambda/latest/dg/kafka-scaling-modes.html#kafka-provisioned-mode).

Para fazer o mapeamento da origem do evento com a configuração de registro, você também pode verificar os logs do sistema a partir de consultas de logs pré-criadas na guia **Monitor** da página Console **Lambda** > **Recursos adicionais** > **mapeamentos da origem do evento** agora.

## Como funciona o registro em log
<a name="esm-logging-overview"></a>

Quando você define a configuração de registro com o nível de log em seu mapeamento da origem do evento, o agente de sondagem de eventos do Lambda envia os logs correspondentes (logs do sistema de mapeamento da origem do evento).

O mapeamento da origem do evento reutiliza o mesmo [destino de log](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-logs.html#configuring-log-destinations) com a função do Lambda. Certifique-se de que a função do Lambda tenha as permissões de registro em log necessárias.

O mapeamento da origem do evento terá seu próprio fluxo de logs, com a data e o UUID do mapeamento da origem do evento como nome do fluxo de logs, como `2020/01/01/12345678-1234-1234-1234-12345678901`.

Para logs do sistema de mapeamento da origem do evento, você pode escolher entre os níveis de log a seguir.


| Nível de log | Usage | 
| --- | --- | 
| DEBUG (mais detalhes) | Informações detalhadas sobre o progresso do processamento da origem do evento | 
| INFORMAÇÕES | Mensagens sobre a operação normal do mapeamento da origem do evento | 
| WARN (menos detalhes) | Mensagens sobre possíveis avisos e erros que podem levar a um comportamento inesperado | 

Quando você seleciona um nível de log, o agente de sondagem de eventos do Lambda envia logs desse nível, e de níveis inferiores. Por exemplo, se você definir o nível de log do sistema de mapeamento da origem do evento como INFO, o agente de sondagem de eventos não enviará saídas de log no nível DEBUG.

## Configurar o registro em log da
<a name="esm-logging-configure"></a>

É possível definir a configuração de registro em log ao criar ou atualizar um mapeamento da origem do evento do Kafka.

### Configurar o registro em log (console)
<a name="esm-logging-console"></a>

**Para configurar o registro em log (console)**

1. Abra a [página Funções](https://console.aws.amazon.com/lambda/home#/functions) do console do Lambda.

1. Escolha o nome da sua função.

1. Execute um destes procedimentos:
   + Para adicionar um novo acionador do Kafka, em **Visão geral da função**, escolha **Adicionar acionador**.
   + Para modificar um acionador existente do Kafka, escolha o acionador e, em seguida, escolha **Editar**.

1. Em **Configuração do agente de sondagem de eventos**, para o **Modo provisionado**, ative a caixa de seleção **Configurar**. A configuração do **Nível de log** deve aparecer.

1.  Clique na lista suspensa **Nível de log** e selecione um nível para o mapeamento da origem do evento.

1. Escolha **Adicionar** ou **Salvar** na parte inferior para criar ou atualizar o mapeamento da origem do evento.

### Configurar o registro em log (AWS CLI)
<a name="esm-logging-cli"></a>

#### Criar um mapeamento da origem do evento com o registro em log
<a name="esm-logging-cli-create"></a>

O exemplo a seguir cria um mapeamento da origem do evento do Amazon MSK com configuração de registro em log:

```
aws lambda create-event-source-mapping \
  --function-name my-kafka-function \
  --topics AWSKafkaTopic \
  --event-source-arn arn:aws:kafka:us-east-1:123456789012:cluster/my-cluster/abc123 \
  --starting-position LATEST \
  --provisioned-poller-config MinimumPollers=1,MaximumPollers=3 \
  --logging-config '{"SystemLogLevel":"DEBUG"}'
```

Para o Kafka autogerenciado, use a mesma sintaxe:

```
aws lambda create-event-source-mapping \
  --function-name my-kafka-function \
  --topics AWSKafkaTopic \
  --self-managed-event-source '{"Endpoints":{"KAFKA_BOOTSTRAP_SERVERS":["abc.xyz.com:9092"]}}' \
  --starting-position LATEST \
  --provisioned-poller-config MinimumPollers=1,MaximumPollers=3 \
  --logging-config '{"SystemLogLevel":"DEBUG"}'
```

#### Atualizar a configuração do registro em log
<a name="esm-logging-cli-update"></a>

Use o comando `update-event-source-mapping` para adicionar ou modificar a configuração do registro em log:

```
aws lambda update-event-source-mapping \
  --uuid 12345678-1234-1234-1234-123456789012 \
  --logging-config '{"SystemLogLevel":"WARN"}'
```

## Formato de registro para um log do sistema de mapeamento da origem do evento do Kafka
<a name="esm-logging-record-format"></a>

Quando o agente de sondagem de eventos do Lambda envia o log, cada respectiva entrada contém metadados gerais de mapeamento da origem do evento e o conteúdo específico do evento.

### Registro em log WARN
<a name="esm-logging-warn-record"></a>

O registro WARN contém erros ou avisos do agente de sondagem de eventos e é emitido quando o evento ocorre. Por exemplo:

```
{
    "eventType": "ESM_PROCESSING_EVENT",
    "timestamp": 1546347650000,
    "resourceArn": "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:12345678-1234-1234-1234-123456789012",
    "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/tests-cluster/87654321-4321-4321-4321-876543221-s1",
    "eventProcessorId": "12345678-1234-1234-1234-123456789012/0",
    "logLevel": "WARN",
    "error": {
        "errorMessage": "Timeout expired while fetching topic metadata",
        "errorCode": "org.apache.kafka.common.errors.TimeoutException"
    }
}
```

### Registro em log INFO
<a name="esm-logging-info-record"></a>

O registro INFO contém configurações de cliente consumidor do Kafka em cada agente de sondagem de eventos e é emitido no caso de um consumidor ser criado ou alterado. Por exemplo:

```
{
    "eventType": "POLLER_STATUS_EVENT",
    "timestamp": 1546347660000,
    "resourceArn": "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:12345678-1234-1234-1234-123456789012",
    "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/tests-cluster/87654321-4321-4321-4321-876543221-s1",
    "eventProcessorId": "12345678-1234-1234-1234-123456789012/0",
    "logLevel": "INFO",
    "kafkaEventSourceConnection": {
        "brokerEndpoints": "boot-abcd1234.c2.kafka-serverless.us-east-1.amazonaws.com:9098",
        "consumerId": "12345678-1234-1234-1234-123456789012-0",
        "topics": [
            "test"
        ],
        "consumerGroupId": "12345678-1234-1234-1234-123456789012",
        "securityProtocol": "SASL_SSL",
        "saslMechanism": "AWS_MSK_IAM",
        "totalPartitionCount": 2,
        "assignedPartitionCount": 2,
        "partitionsAssignmentGeneration": 5,
        "assignedPartitions": [
            "test-0",
            "test-1"
        ],
        "networkConfig": {
            "ipAddresses": [
                "10.100.141.1"
            ],
            "subnetCidrBlock": "10.100.128.0/20",
            "securityGroups": [
                "sg-abcdefabcdefabcdef"
            ]
        }
    }
}
```

### Registro em log DEBUG
<a name="esm-logging-debug-record"></a>

O log DEBUG contém as informações relacionadas aos deslocamentos do Kafka no processamento do mapeamento da origem do evento, e as informações de deslocamento são emitidas por minuto. Por exemplo:

```
{
    "eventType": "KAFKA_STATUS_EVENT",
    "timestamp": 1546347670000,
    "resourceArn": "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:12345678-1234-1234-1234-123456789012",
    "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/tests-cluster/87654321-4321-4321-4321-876543221-s1",
    "eventProcessorId": "12345678-1234-1234-1234-123456789012/0",
    "logLevel": "DEBUG",
    "kafkaPartitionOffsets": {
        "partition": "test-1",
        "endOffset": 5004,
        "consumedOffset": 5003,
        "processedOffset": 5003,
        "committedOffset": 5004
    }
}
```