

# 解析器处理器
<a name="parser-processors"></a>

解析器处理器将原始或半结构化日志数据转换为结构化格式。每个管道最多可以有一个解析器处理器，该处理器必须是管道中的第一个处理器。

**不支持条件处理**  
解析器处理器（Grok 除外）不支持使用 `when` 参数进行条件处理。这包括 OCSF、CSV、JSON、KeyValue、VPC、Route53、WAF、Postgres 和 CloudFront 解析器。有关更多信息，请参阅 [条件处理的表达式语法](conditional-processing.md)。

## OCSF 处理器
<a name="ocsf-processor"></a>

根据开放式网络安全架构框架（OCSF）标准解析和转换日志数据。

**配置**  
使用以下参数配置 OCSF 处理器：

```
processor:
  - ocsf:
      version: "1.5"
      mapping_version: 1.5.0
      schema:
          microsoft_office365_management_activity:
```参数

`version`（必需）  
用于转换的 OCSF 架构版本。必须为 1.5

`mapping_version`（必需）  
用于转换的 OCSF 映射版本。必须为 1.5.0。

`schema`（必需）  
指定数据来源类型的架构对象。支持的架构取决于管道来源类型，每种来源类型都有自己的一组兼容的 OCSF 架构。您必须使用与管道来源类型相匹配的架构。

此表列出了支持的架构组合。


| 管道来源类型 | 支持的架构 | 版本 | 映射版本 | 
| --- | --- | --- | --- | 
| cloudwatch\$1logs | cloud\$1trail: | 1.5 | 可选 | 
| cloudwatch\$1logs | route53\$1resolver: | 1.5 | 可选 | 
| cloudwatch\$1logs | vpc\$1flow: | 1.5 | 可选 | 
| cloudwatch\$1logs | eks\$1audit: | 1.5 | 可选 | 
| cloudwatch\$1logs | aws\$1waf: | 1.5 | 非必需 | 
| s3 | 任何 OCSF 架构 | 任何 | 任何 | 
| microsoft\$1office365 | microsoft\$1office365: | 1.5 | 1.5.0 | 
| microsoft\$1entraid | microsoft\$1entraid: | 1.5 | 1.5.0 | 
| microsoft\$1windows\$1event | microsoft\$1windows\$1event: | 1.5 | 1.5.0 | 
| paloaltonetworks\$1nextgenerationfirewall | paloaltonetworks\$1nextgenerationfirewall: | 1.5 | 1.5.0 | 
| okta\$1auth0 | okta\$1auth0: | 1.5 | 1.5.0 | 
| okta\$1sso | okta\$1sso: | 1.5 | 1.5.0 | 
| crowdstrike\$1falcon | crowdstrike\$1falcon: | 1.5 | 1.5.0 | 
| github\$1auditlogs | github\$1auditlogs: | 1.5 | 1.5.0 | 
| sentinelone\$1endpointsecurity | sentinelone\$1endpointsecurity: | 1.5 | 1.5.0 | 
| servicenow\$1cmdb | servicenow\$1cmdb: | 1.5 | 1.5.0 | 
| wiz\$1cnapp | wiz\$1cnapp: | 1.5 | 1.5.0 | 
| zscaler\$1internetaccess | zscaler\$1internetaccess: | 1.5 | 1.5.0 | 

## CSV 处理器
<a name="csv-processor"></a>

将 CSV 格式的数据解析为结构化字段。

**配置**  
使用以下参数配置 CSV 处理器：

```
processor:
  - csv:      
      column_names: ["col1", "col2", "col3"]
      delimiter: ","
      quote_character: '"'
```参数

`column_names`（可选）  
已解析字段的列名称数组。最多 100 列，每个名称最多可以有 128 个字符。如果未提供，则默认为 column\$11、column\$12 等。

`delimiter`（可选）  
用于分隔 CSV 字段的字符。必须为单个字符。默认为逗号 (,)。

`quote_character`（可选）  
用于引用包含分隔符的 CSV 字段的字符。必须为单个字符。默认为双引号 (")。

要在不指定其他参数的情况下使用处理器，请使用以下命令：

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

## Grok 处理器
<a name="grok-processor"></a>

使用 Grok 模式解析非结构化数据。每个管道最多支持 1 个 Grok。有关 CloudWatch Logs 中的 Grok 转换器的详细信息，请参阅**《CloudWatch Logs 用户指南》中的[可以使用的处理器](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Transformation-Processors.html)。

**配置**  
使用以下参数配置 Grok 处理器：

如果数据来源为字典，可以使用此配置：

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

如果数据来源为 CloudWatch Logs，可以使用此配置：

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

`match`（必需）  
使用 Grok 模式进行字段映射。仅允许一个字段映射。

`match.<field>`（必需）  
具有单个 Grok 模式的数组。每个模式最多 512 个字符。

`when`（可选）  
用于确定此处理器是否执行的条件表达式。最大长度为 256 个字符。请参阅[条件处理的表达式语法](conditional-processing.md)。

**重要**  
如果将 Grok 处理器用作管道中的解析器（第一个处理器），并且其 `when` 条件的计算结果为 false，则不会针对该日志事件执行整个管道。解析器必须运行，下游处理器才能接收结构化数据。

## VPC 处理器
<a name="vpc-processor"></a>

将 VPC 流日志数据解析为结构化字段。

**配置**  
使用以下参数配置 VPC 处理器：

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

## JSON 处理器
<a name="json-processor"></a>

将 JSON 数据解析为结构化字段。

**配置**  
使用以下参数配置 JSON 处理器：

```
processor:
  - parse_json:
      source: "message"
      destination: "parsed_json"
```参数

`source`（可选）  
包含要解析的 JSON 数据的字段。如果省略，则处理整条日志消息

`destination`（可选）  
存储已解析 JSON 的字段。如果省略，则将已解析的字段添加到根级别

## Route 53 处理器
<a name="route53-processor"></a>

将 Route 53 Resolver 日志数据解析为结构化字段。

**配置**  
使用以下参数配置 Route 53 处理器：

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

## 键值处理器
<a name="key-value-processor"></a>

将键值对格式的数据解析为结构化字段。

**配置**  
使用以下参数配置键值处理器：

```
processor:
  - key_value:
      source: "message"
      destination: "parsed_kv"
      field_delimiter: "&"
      key_value_delimiter: "="
```参数

`source`（可选）  
包含键值数据的字段。最多 128 个字符。

`destination`（可选）  
已解析键值对的目标字段。最多 128 个字符。

`field_delimiter`（可选）  
用于拆分键值对的模式。最多 10 个字符。

`key_value_delimiter`（可选）  
用于将键与值拆分的模式。最多 10 个字符。

`overwrite_if_destination_exists`（可选）  
是否覆盖现有的目标字段。

`prefix`（可选）  
要添加到提取密钥的前缀。最多 128 个字符。

`non_match_value`（可选）  
没有匹配项的键的值。最多 128 个字符。

要在不指定其他参数的情况下使用处理器，请使用以下命令：

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