

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Preelabora i dati con gli agenti
<a name="pre-processing"></a>

L'agente può preelaborare i record analizzati dai file monitorati prima di inviarli allo stream Firehose. È possibile abilitare questa funzionalità aggiungendo le impostazioni di configurazione `dataProcessingOptions` al flusso di file. Si possono aggiungere una o più opzioni di elaborazione, che verranno eseguite nell'ordine specificato.

L'agente supporta le seguenti opzioni di elaborazione. Poiché l'agente è open source, è possibile sviluppare ulteriormente e ampliare le opzioni di elaborazione. Puoi scaricare l'agente da [Kinesis Agent](https://github.com/awslabs/amazon-kinesis-agent).Opzioni di elaborazione

`SINGLELINE`  
Converte un record a più righe in un record a riga singola rimuovendo i caratteri di nuova riga, gli spazi iniziali e finali.  

```
{
    "optionName": "SINGLELINE"
}
```

`CSVTOJSON`  
Converte un record da un formato delimitatore separato a un formato JSON.  

```
{
    "optionName": "CSVTOJSON",
    "customFieldNames": [ "field1", "field2", ... ],
    "delimiter": "yourdelimiter"
}
```  
`customFieldNames`  
[Obbligatorio] I nomi di campo utilizzati come chiavi in ciascuna coppia chiave-valore JSON. Ad esempio, se specifichi `["f1", "f2"]`, il record "v1, v2" viene convertito in `{"f1":"v1","f2":"v2"}`.  
`delimiter`  
La stringa utilizzata come delimitatore nel record. L'impostazione predefinita è una virgola (,).

`LOGTOJSON`  
Converte un record da un formato log a un formato JSON. I formati di log supportati sono **Apache Common Log**, **Apache Combined Log**, **Apache Error Log** e **RFC3164 Syslog**.  

```
{
    "optionName": "LOGTOJSON",
    "logFormat": "logformat",
    "matchPattern": "yourregexpattern",
    "customFieldNames": [ "field1", "field2", … ]
}
```  
`logFormat`  
[Obbligatorio] Il formato di inserimento dei log. I seguenti sono i valori possibili:  
+ `COMMONAPACHELOG` - Il formato Apache Common Log. Ogni voce di log ha il seguente modello come impostazione predefinita: "`%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes}`".
+ `COMBINEDAPACHELOG`: il formato Apache Combined Log. Ogni voce di log ha il seguente modello come impostazione predefinita: "`%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes} %{referrer} %{agent}`".
+ `APACHEERRORLOG`: il formato Apache Error Log. Ogni voce di log ha il seguente modello come impostazione predefinita: "`[%{timestamp}] [%{module}:%{severity}] [pid %{processid}:tid %{threadid}] [client: %{client}] %{message}`".
+ `SYSLOG`— Il formato Syslog. RFC3164 Ogni voce di log ha il seguente modello come impostazione predefinita: "`%{timestamp} %{hostname} %{program}[%{processid}]: %{message}`".  
`matchPattern`  
Ignora il modello predefinito per il formato di log specificato. Utilizza questa impostazione per estrarre valori dalle voci di log se utilizzano un formato personalizzato. Se si specifica `matchPattern`, è necessario specificare anche `customFieldNames`.  
`customFieldNames`  
I nomi di campo obbligatori utilizzati come chiavi in ciascuna coppia chiave-valore JSON. Puoi utilizzare questa impostazione per definire i nomi dei campi per i valori estratti da `matchPattern` oppure sovrascrivere i nomi dei campi predefiniti dei formati di log predefiniti.

**Example : configurazione LOGTOJSON**  <a name="example-logtojson"></a>
Questo è un esempio di una configurazione `LOGTOJSON` per una voce Apache Common Log convertita in formato JSON:  

```
{
    "optionName": "LOGTOJSON",
    "logFormat": "COMMONAPACHELOG"
}
```
Prima della conversione:  

```
64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291
```
Dopo la conversione:  

```
{"host":"64.242.88.10","ident":null,"authuser":null,"datetime":"07/Mar/2004:16:10:02 -0800","request":"GET /mailman/listinfo/hsdivision HTTP/1.1","response":"200","bytes":"6291"}
```

**Example : configurazione LOGTOJSON con campi personalizzati**  <a name="example-logtojson-custom-fields"></a>
Ecco un altro esempio di configurazione `LOGTOJSON`:  

```
{
    "optionName": "LOGTOJSON",
    "logFormat": "COMMONAPACHELOG",
    "customFieldNames": ["f1", "f2", "f3", "f4", "f5", "f6", "f7"]
}
```
Con questa impostazione di configurazione, la stessa voce Apache Common Log dall'esempio precedente viene convertita in formato JSON come segue:  

```
{"f1":"64.242.88.10","f2":null,"f3":null,"f4":"07/Mar/2004:16:10:02 -0800","f5":"GET /mailman/listinfo/hsdivision HTTP/1.1","f6":"200","f7":"6291"}
```

**Example : convertire la voce Apache Common Log**  <a name="example-apache-common-log-entry"></a>
La seguente configurazione di flusso converte una voce Apache Common Log in record a riga singola in formato JSON:  

```
{ 
    "flows": [
        {
            "filePattern": "/tmp/app.log*", 
            "deliveryStream": "my-delivery-stream",
            "dataProcessingOptions": [
                {
                    "optionName": "LOGTOJSON",
                    "logFormat": "COMMONAPACHELOG"
                }
            ]
        }
    ] 
}
```

**Example : convertire record a più righe**  <a name="example-convert-multi-line"></a>
La seguente configurazione del flusso analizza i record a più righe la cui prima riga inizia con "`[SEQUENCE=`". Ogni record viene convertito in un record a riga singola. Quindi, i valori vengono estratti dal record in base a un delimitatore di schede. I valori estratti sono mappati in valori `customFieldNames` specificati per formare un record a riga singola in formato JSON.  

```
{ 
    "flows": [
        {
            "filePattern": "/tmp/app.log*", 
            "deliveryStream": "my-delivery-stream",
            "multiLineStartPattern": "\\[SEQUENCE=",
            "dataProcessingOptions": [
                {
                    "optionName": "SINGLELINE"
                },
                {
                    "optionName": "CSVTOJSON",
                    "customFieldNames": [ "field1", "field2", "field3" ],
                    "delimiter": "\\t"
                }
            ]
        }
    ] 
}
```

**Example : configurazione LOGTOJSON con modello corrispondente**  <a name="example-logtojson-match-pattern"></a>
Questo è un esempio di una configurazione `LOGTOJSON` per una voce Apache Common Log convertita in formato JSON, con l'ultimo campo (byte) omesso:  

```
{
    "optionName": "LOGTOJSON",
    "logFormat": "COMMONAPACHELOG",
    "matchPattern": "^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3})",
    "customFieldNames": ["host", "ident", "authuser", "datetime", "request", "response"]
}
```
Prima della conversione:  

```
123.45.67.89 - - [27/Oct/2000:09:27:09 -0400] "GET /java/javaResources.html HTTP/1.0" 200
```
Dopo la conversione:  

```
{"host":"123.45.67.89","ident":null,"authuser":null,"datetime":"27/Oct/2000:09:27:09 -0400","request":"GET /java/javaResources.html HTTP/1.0","response":"200"}
```