

# Processadores de análise
<a name="parser-processors"></a>

Os processadores de análise convertem dados de log brutos ou semiestruturados em formatos estruturados. Cada pipeline pode ter no máximo um processador de análise primária, que deve ser o primeiro processador no pipeline. O analisador XML é uma exceção: ele opera em campos produzidos por um analisador primário e no máximo 5 instâncias podem ser adicionadas a um único pipeline.

**Processamento condicional não compatível**  
Os processadores de análise (exceto o Grok e o XML) não são compatíveis com o processamento condicional com o parâmetro `when`. Isso inclui os analisadores OCSF, CSV, JSON, KeyValue, VPC, Route53, RDS, WAF, Postgres e Amazon CloudFront. Para obter mais informações, consulte [Sintaxe da expressão para processamento condicional](conditional-processing.md).

## Processador OCSF
<a name="ocsf-processor"></a>

Analisa e transforma os dados de log de acordo com os padrões Open Cybersecurity Schema Framework (OCSF).

**Configuração**  
Configure o processador OCSF com os seguintes parâmetros:

```
processor:
  - ocsf:
      version: "1.5"
      mapping_version: 1.5.0
      schema:
          microsoft_office365_management_activity:
```Parâmetros

`version` (obrigatório)  
A versão do esquema OCSF a ser usada para transformação. Deve ser a 1.5

`mapping_version` (obrigatório)  
A versão do mapeamento OCSF a ser usada para transformação. Deve ser a 1.5.0.

`schema` (obrigatório)  
Objeto de esquema que especifica o tipo de fonte de dados. Os esquemas compatíveis dependem do tipo de fonte do pipeline; cada tipo de fonte tem seu próprio conjunto de esquemas OCSF compatíveis. Você deve usar um esquema que corresponda ao tipo de fonte do pipeline.

Esta tabela lista as combinações de esquema compatíveis.


| Tipo de fonte do pipeline | Esquemas compatíveis | Versão | Versão do mapeamento | 
| --- | --- | --- | --- | 
| cloudwatch\_logs | cloud\_trail: | 1.5 | Não obrigatório | 
| cloudwatch\_logs | route53\_resolver: | 1.5 | Não obrigatório | 
| cloudwatch\_logs | vpc\_flow: | 1.5 | Não obrigatório | 
| cloudwatch\_logs | eks\_audit: | 1.5 | Não obrigatório | 
| cloudwatch\_logs | aws\_waf: | 1.5 | Não obrigatório | 
| cloudwatch\_logs | aws\_nlb: | 1.5 | Não obrigatório | 
| s3 | Qualquer esquema OCSF | Any | Any | 
| microsoft\_office365 | microsoft\_office365: | 1.5 | 1.5.0 | 
| microsoft\_entraid | microsoft\_entraid: | 1.5 | 1.5.0 | 
| microsoft\_windows\_event | microsoft\_windows\_event: | 1.5 | 1.5.0 | 
| paloaltonetworks\_nextgenerationfirewall | paloaltonetworks\_nextgenerationfirewall: | 1.5 | 1.5.0 | 
| okta\_auth0 | okta\_auth0: | 1.5 | 1.5.0 | 
| okta\_sso | okta\_sso: | 1.5 | 1.5.0 | 
| crowdstrike\_falcon | crowdstrike\_falcon: | 1.5 | 1.5.0 | 
| github\_auditlogs | github\_auditlogs: | 1.5 | 1.5.0 | 
| sentinelone\_endpointsecurity | sentinelone\_endpointsecurity: | 1.5 | 1.5.0 | 
| servicenow\_cmdb | servicenow\_cmdb: | 1.5 | 1.5.0 | 
| wiz\_cnapp | wiz\_cnapp: | 1.5 | 1.5.0 | 
| zscaler\_internetaccess | zscaler\_internetaccess: | 1.5 | 1.5.0 | 

## Processador CSV
<a name="csv-processor"></a>

Analisa dados formatados como CSV para campos estruturados.

**Configuração**  
Configure o processador CSV com os seguintes parâmetros:

```
processor:
  - csv:      
      column_names: ["col1", "col2", "col3"]
      delimiter: ","
      quote_character: '"'
```Parâmetros

`column_names` (opcional)  
Matriz de nomes de coluna para campos analisados. Máximo de 100 colunas, cada nome com até 128 caracteres. Se não for fornecido, o padrão é column\_1, column\_2 e assim por diante.

`delimiter` (opcional)  
Caractere usado para separar campos CSV. Deve ser um único caractere. O padrão é vírgula (,).

`quote_character` (opcional)  
Caractere usado para citar campos CSV contendo delimitadores. Deve ser um único caractere. O padrão é aspas duplas (").

Para usar o processador sem especificar parâmetros adicionais, use o comando abaixo:

```
processor:
  - csv: {}
```

## Processador Grok
<a name="grok-processor"></a>

Analisa dados não estruturados usando padrões Grok. É permitido no máximo 1 Grok por pipeline. Para obter detalhes sobre o transformador Grok no CloudWatch Logs, consulte [Processadores que você pode usar](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Transformation-Processors.html) no *Guia do usuário do CloudWatch Logs*.

**Configuração**  
Configure o processador Grok com os seguintes parâmetros:

Quando a fonte de dados é um dicionário, você pode usar esta configuração:

```
processor:
  - grok:      
      match:
       source_key: ["%{WORD:level} %{GREEDYDATA:msg}"]
```

Quando a fonte de dados é o CloudWatch Logs, você pode usar esta configuração:

```
processor:
  - grok:      
      match:
       source_key: ["%{WORD:level} %{GREEDYDATA:msg}"]
```Parâmetros

`match` (obrigatório)  
Mapeamento de campo com padrões Grok. Somente um mapeamento de campo é permitido.

`match.<field>` (obrigatório)  
Matriz com um único padrão Grok. Máximo de 512 caracteres por padrão.

`when` (opcional)  
Expressão condicional que determina se esse processador é executado. O tamanho máximo é de 256 caracteres. Consulte [Sintaxe da expressão para processamento condicional](conditional-processing.md).

**Importante**  
Se o processador Grok for usado como analisador (primeiro processador) em um pipeline e sua condição `when` for avaliada como false, todo o pipeline não será executado para esse evento de logs. Os analisadores devem ser executados para que os processadores downstream recebam dados estruturados.

## Processador de VPC
<a name="vpc-processor"></a>

Converte os dados do VPC Flow Log em campos estruturados.

**Configuração**  
Configure o processador de VPC com os seguintes parâmetros:

```
processor:
  - parse_vpc: {}
```

## Processador JSON
<a name="json-processor"></a>

Converte os dados JSON em campos estruturados.

**Configuração**  
Configure o processador JSON com os seguintes parâmetros:

```
processor:
  - parse_json:
      source: "message"
      destination: "parsed_json"
```Parâmetros

`source` (opcional)  
O campo que contém os dados JSON a serem convertidos. Se omitido, toda a mensagem do log será processada

`destination` (opcional)  
O campo em que o JSON convertido será armazenado. Se omitido, os campos analisados serão adicionados ao nível-raiz

## Processador do Route 53
<a name="route53-processor"></a>

Converte os dados de log do resolvedor do Route 53 em campos estruturados.

**Configuração**  
Configure o processador do Route 53 com os seguintes parâmetros:

```
processor:
  - parse_route53: {}
```

## Processador do Amazon RDS
<a name="rds-processor"></a>

Analisa dados de log do Amazon RDS Aurora em campos estruturados. O processador `parse_rds` é suportado somente quando o `data_source_name` do pipeline é `amazon_rds`. Ele aplica a lógica de análise que corresponde à do pipeline `data_source_type`.

**Configuração**  
Configure o processador do Amazon RDS com os seguintes parâmetros:

```
processor:
  - parse_rds: {}
```

## Processador de chave-valor
<a name="key-value-processor"></a>

Analisa dados formatados em pares de chave-valor para campos estruturados.

**Configuração**  
Configure o processador de chave-valor com os seguintes parâmetros:

```
processor:
  - key_value:
      source: "message"
      destination: "parsed_kv"
      field_delimiter: "&"
      key_value_delimiter: "="
```Parâmetros

`source` (opcional)  
Campo contendo dados de valores-chave. Máximo de 128 caracteres.

`destination` (opcional)  
Campo de destino para pares de chave-valor analisados. Máximo de 128 caracteres.

`field_delimiter` (opcional)  
Padrão para separar pares de chave-valor. Máximo de 10 caracteres.

`key_value_delimiter` (opcional)  
Padrão para separar chaves de valores. Máximo de 10 caracteres.

`overwrite_if_destination_exists` (opcional)  
Se o campo de destino existente deve ou não ser substituído.

`prefix` (opcional)  
Prefixo a ser adicionado às chaves extraídas. Máximo de 128 caracteres.

`non_match_value` (opcional)  
Valor para chaves sem correspondências. Máximo de 128 caracteres.

Para usar o processador sem especificar parâmetros adicionais, use o comando abaixo:

```
processor:
  - key_value: {}
```

## Analisador XML
<a name="xml-processor"></a>

Utilize o analisador XML para converter um campo especificado que contém uma string XML para o formato JSON. Utilize o analisador XML quando seus eventos de logs contiverem campos XML incorporados que você deseja consultar como dados estruturados. O analisador XML opera em um campo nomeado que já contém uma string XML. Coloque esse analisador depois de um analisador primário no pipeline. Você pode adicionar no máximo 5 analisadores `parse_xml` em um único pipeline.

**Configuração**  
Configure o analisador XML com os seguintes parâmetros:

```
processor:
  - parse_json:
      source: "@message"
  - parse_xml:
      source: "body"
      destination: "parsed_xml"
```Parâmetros

`source` (obrigatório)  
Especifica o campo que contém a string XML a ser analisada. Use a notação de pontos para acessar os campos aninhados. Por exemplo, `event.body`. Máximo de 128 caracteres.

`destination` (opcional)  
Especifica o campo em que a estrutura XML analisada é armazenada. Se esse parâmetro for omitido, os campos analisados serão adicionados ao nível-raiz Máximo de 128 caracteres.

`when` (opcional)  
Uma expressão condicional que determina se esse analisador é executado. O tamanho máximo é de 256 caracteres. Para obter mais informações, consulte [Sintaxe da expressão para processamento condicional](conditional-processing.md).

**Exemplo — Saída do analisador XML**  
Dado o seguinte evento de logs JSON com um campo XML incorporado:

```
{
  "body": "<Person id=\"123\" active=\"true\"><name>John</name><age>30</age></Person>"
}
```

Com a seguinte configuração:

```
processor:
  - parse_json:
      source: "@message"
  - parse_xml:
      source: "body"
      destination: "parsed_xml"
```

O analisador XML produz o seguinte resultado:

```
{
  "body": "<Person id=\"123\" active=\"true\"><name>John</name><age>30</age></Person>",
  "parsed_xml": {
    "id": "123",
    "active": "true",
    "name": "John",
    "age": "30"
  }
}
```Notas de comportamento

Profundidade de aninhamento  
O analisador XML suporta uma profundidade máxima de aninhamento de 25 níveis. Elementos aninhados além desse limite produzem um erro.

Tratamento de erros  
O XML malformado não falha no pipeline. O analisador preserva o `@message` original e define `@pipeline.processing.status = "error"` no evento.