OpenSearch Piped Processing Language (PPL) - CloudWatch Registri Amazon

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à.

OpenSearch Piped Processing Language (PPL)

Questa sezione contiene un'introduzione di base all'interrogazione dei CloudWatch log utilizzando PPL. OpenSearch Con PPL, è possibile recuperare, interrogare e analizzare i dati utilizzando comandi concatenati, semplificando la comprensione e la composizione di interrogazioni complesse. La sua sintassi si basa sulle pipe Unix e consente il concatenamento di comandi per trasformare ed elaborare i dati. Con PPL, puoi filtrare e aggregare i dati e utilizzare un ricco set di funzioni matematiche, di stringhe, di data, condizionali e di altro tipo per l'analisi.

L'inclusione SOURCE in una query PPL è un modo utile per specificare i gruppi di log, gli indici di campo e le fonti di dati da includere in una query quando si utilizza l' AWS CLI API o per creare una query. Il SOURCE comando è supportato solo nell'API AWS CLI and, non nella console. CloudWatch Quando si utilizza la CloudWatch console per avviare una query, si utilizza l'interfaccia della console per specificare i gruppi di log e il nome e il tipo di origine dati.

aws:fieldIndexDa utilizzare per restituire solo dati indicizzati, forzando una query a scansionare solo i gruppi di log indicizzati su un campo specificato nella query. I gruppi di log pertinenti vengono selezionati automaticamente, in base ai campi specificati nel comando. filterIndex Ciò riduce il volume scansionato ignorando i gruppi di log che non contengono eventi di registro contenenti il campo specificato nella query e analizzando solo i gruppi di log che corrispondono al valore specificato nella query per questo indice di campo. aws:fieldIndexUtilizzatelo per specificare il nome del campo, insieme al nome e al valore del campo nel comando di origine, per interrogare solo i dati indicizzati contenenti il campo e il valore specificati. Per ulteriori informazioni, consulta Crea indici di campo per migliorare le prestazioni delle query e ridurre il volume di scansione

È possibile utilizzare OpenSearch PPL per le interrogazioni dei gruppi di log nella Standard Log Class.

Nota

Per informazioni su tutti i comandi di interrogazione OpenSearch PPL supportati nei CloudWatch registri e informazioni dettagliate sulla sintassi e le restrizioni, vedere Comandi PPL supportati nella Service Developer Guide. OpenSearch

Per informazioni su altri linguaggi di interrogazione che è possibile utilizzare, vedere CloudWatch Logs Insights, Service SQL e OpenSearch CloudWatch Metrics Insights

Comando o funzione Query di esempio Description

campi

fields field1, field2

Visualizza un insieme di campi che necessitano di proiezione.

join

LEFT JOIN left=l, right=r on l.id = r.id `join_right_lg` | fields l.field_1, r.field_2

Unisce due set di dati.

dove

where field1="success" | where field2 != "i-023fe0a90929d8822" | fields field3, field4, field5,field6 | head 1000

Filtra i dati in base alle condizioni specificate.

AWS: FieldIndex

source = [`aws:fieldIndex`="region", `region` = "us-west-2"] | where status = 200 | head 10

Restituisce solo dati indicizzati, forzando una query a scansionare solo i gruppi di log indicizzati su un campo specificato nella query.

stats

stats count(), count(field1), min(field1), max(field1), avg(field1) by field2 | head 1000

Esegue aggregazioni e calcoli

parse

parse field1 ".*/(?<field2>[^/]+$)" | where field2 = "requestId" | fields field1, field2 | head 1000

Estrae un pattern di espressione regolare (regex) da una stringa e visualizza il pattern estratto. Il pattern estratto può essere ulteriormente utilizzato per creare nuovi campi o filtrare i dati.

sort

stats count(), count(field1), min(field1) as field1Alias, max(`field1`), avg(`field1`) by field2 | sort -field1Alias | head 1000

Ordina i risultati visualizzati in base al nome di un campo. Usa sort - FieldName per ordinare in ordine decrescente.

eval

eval field2 = field1 * 2 | fields field1, field2 | head 20

Modifica o elabora il valore di un campo e lo memorizza in un campo diverso. Ciò è utile per modificare matematicamente una colonna, applicare funzioni di stringa a una colonna o applicare funzioni di data a una colonna.

rinominare

rename field2 as field1 | fields field1;

Rinomina uno o più campi nel risultato della ricerca.

head

fields `@message` | head 20

Limita i risultati dell'interrogazione visualizzati alle prime N righe.

top

top 2 field1 by field2

Trova i valori più frequenti per un campo.

dedup

dedup field1 | fields field1, field2, field3

Rimuove le voci duplicate in base ai campi specificati.

rari

rare field1 by field2

Trova i valori meno frequenti di tutti i campi nell'elenco dei campi.

subquery

where field_1 IN [ search source= `subquery_lg` | fields field_2 ] | fields id, field_1

Esegue interrogazioni complesse e annidate all'interno delle istruzioni PPL.

linea di tendenza

trendline sma(2, field1) as field1Alias

Calcola le medie mobili dei campi.

EventStats

eventstats sum(field1) by field2

Arricchisce i dati degli eventi con statistiche riassuntive calcolate. Analizza campi specifici all'interno degli eventi, calcola varie misure statistiche e quindi aggiunge questi risultati a ciascun evento originale come nuovi campi.

espansione

eval tags_array_string = json_extract(`@message`, '$.tags')| eval tags_array = json_array(json_extract(tags_string, '$[0]'), json_extract(tags_string, '$[1]'))| expand tags_array as color_tags

Suddivide un campo contenente più valori in righe separate, creando una nuova riga per ogni valore nel campo specificato.

riempi/null

fields `@timestamp`, error_code, status_code | fillnull using status_code = "UNKNOWN", error_code = "UNKNOWN"

Riempie i campi nulli con il valore fornito. Può essere utilizzato in uno o più campi.

flatten

eval metadata_struct = json_object('size', json_extract(metadata_string, '$.size'), 'color', json_extract(metadata_string, '$.color')) | flatten metadata_struct as (meta_size, meta_color)

Appiattisce un campo. Il campo deve essere di questo tipo: struct<?,?> o. array<struct<?,?>>

cidrmatch

where cidrmatch(ip, '2003:db8::/32') | fields ip

Verifica se l'indirizzo IP specificato rientra nell'intervallo CIDR specificato.

riepilogo del campo

where field1 != 200 | fieldsummary includefields= field1 nulls=true

Calcola le statistiche di base per ogni campo (conteggio, conteggio distinto, min, max, avg, stddev e mean).

grok

grok email '.+@%{HOSTNAME:host}' | fields email, host

Analizza un campo di testo con un pattern grok e aggiunge i risultati al risultato della ricerca.

Funzioni stringa

eval field1Len = LENGTH(field1) | fields field1Len

Funzioni integrate in PPL che possono manipolare e trasformare stringhe e dati di testo all'interno di query PPL. Ad esempio, convertire maiuscole e minuscole, combinare stringhe, estrarre parti e pulire il testo.

Funzioni data-ora

eval newDate = ADDDATE(DATE('2020-08-26'), 1) | fields newDate

Funzioni integrate per la gestione e la trasformazione dei dati di data e ora nelle query PPL. Ad esempio, date_add, date_format, datediff, date-sub, timestampadd, timestampdiff, current_timezone, utc_timestamp e current_date.

Funzioni di condizione

eval field2 = isnull(field1) | fields field2, field1, field3

Funzioni integrate che controllano le condizioni specifiche dei campi e valutano le espressioni in modo condizionale. Ad esempio, se field1 è nullo, restituisci field2.

Funzioni matematiche

eval field2 = ACOS(field1) | fields field1

Funzioni integrate per eseguire calcoli e trasformazioni matematiche nelle interrogazioni PPL. Ad esempio, abs (valore assoluto), round (arrotonda i numeri), sqrt (radice quadrata), pow (calcolo della potenza) e ceil (arrotonda al numero intero più vicino).

CryptoGraphic funzioni

eval crypto = MD5(field)| head 1000

Per calcolare l'hash di un determinato campo

Funzioni JSON

eval valid_json = json('[1,2,3,{"f1":1,"f2":[5,6]},4]') | fields valid_json

Funzioni integrate per la gestione di JSON, tra cui array, estrazione e convalida. Ad esempio, json_object, json_array, to_json_string, json_array_length, json_extract, json_keys e json_valid.

Ambito della query

L'inclusione di SOURCE in una query è un modo utile per specificare i gruppi di log da includere in una query quando si utilizza l'API AWS CLI or per creare una query. Il comando SOURCE è supportato solo nell'API AWS CLI and, non nella CloudWatch console. Quando si utilizza la CloudWatch console per avviare una query, si utilizza l'interfaccia della console per specificare i gruppi di log e il nome e il tipo di origine dati.

Il comando source di PPL ora supporta diversi modi per specificarli:

  1. Gruppo di log

  2. Indici di campo - Nuovi

  3. Fonte e tipo di dati: nuovo

Gruppo di log

La selezione della fonte del gruppo di log può essere utilizzata quando i clienti sanno esattamente quali gruppi di log devono essere cercati

source = [lg:`/aws/lambda/my-function`] | where status = 200 | head 10

Indici di campo

La selezione dell'origine basata sull'indice dei campi riduce la quantità di dati interrogati limitando i risultati ai soli dati indicizzati quando i filtri riguardano i campi che sono stati indicizzati. I gruppi di log pertinenti vengono selezionati automaticamente, in base ai campi specificati nel comando. filterIndex Per ulteriori informazioni sugli indici di campo e su come crearli, consulta Creare indici di campo per migliorare le prestazioni delle query e ridurre il volume di scansione.

aws:fieldIndexDa utilizzare per restituire solo dati indicizzati, forzando una query a scansionare solo i gruppi di log indicizzati su un campo specificato nella query. Per questi gruppi di log indicizzati in questo campo, ottimizza ulteriormente la query ignorando i gruppi di log che non contengono eventi di registro contenenti il campo specificato nella query per il campo indicizzato. Riduce ulteriormente il volume scansionato tentando di analizzare solo gli eventi di registro di questi gruppi di log che corrispondono al valore specificato nella query per questo indice di campo. Per ulteriori informazioni sugli indici di campo e su come crearli, consulta Creare indici di campo per migliorare le prestazioni delle query e ridurre il volume di scansione.

In PPL, aws:fieldIndex viene utilizzato per specificare quali coppie chiave-valore devono essere trattate come indici. La sintassi è la seguente

source = [`aws:fieldIndex`="region", `region` = "us-west-2"] | where status = 200 | head 10

dove:

  1. `aws:fieldIndex`="region"identifica la regione come campo Index.

    1. Nota: invece di = i clienti possono utilizzare IN per specificare più indici (esempio seguente)

  2. `region`="us-west-2"identifica la condizione del filtro da applicare

    1. Nota: invece di = i clienti possono utilizzare IN per specificare più valori (esempio seguente)

I clienti possono specificare più FieldIndex come segue

source = [`aws:fieldIndex` IN ("status", "region"), `status` = 200, `region` IN ("us-west-2", "us-east-1")] | head 10

Fonte e tipo di dati

La selezione della fonte di dati e della fonte basata sul tipo può essere utilizzata quando i clienti sanno quali fonti di dati esatte devono essere interrogate. Questa query viene eseguita su uno o più gruppi di log che contengono l'origine e il tipo di dati specificati.

source = [ds:`data_source.type`] | where status = 200 | head 10

PPL supportato per le interrogazioni sulle fonti di dati

Per supportare il caso d'uso per l'interrogazione di sorgenti di dati in PPL, è possibile utilizzare la clausola Dynamic Source Selector. Utilizzando questa sintassi, è possibile interrogare le fonti di dati specificandole nel comando di ricerca. È possibile specificare fino a 10 fonti di dati.

Sintassi

source=[ds:`DataSource1.Type1`, ds:`DataSource2.Type2`, ...ds:`DataSourcen.Typen`]

Query di esempio

search source=[ds:`DataSource1.Type1`, ds:`DataSource2.Type2`] | fields field1, field2

Esempio per la combinazione

I clienti possono specificare tutti gli operatori di selezione della sorgente in qualsiasi ordine e i risultati sarebbero l'intersezione di tutte le condizioni applicate.

Ad esempio,/aws/lambda/my-function-1 potrebbe contenere più fonti e tipi di dati tra cui un'ampia varietà di indici. Quando viene eseguita la seguente query, i risultati restituiti avranno solo eventi di origine e tipo DataSource 1.Type1 e corrispondenti ai criteri di 'status' = 200.

search source=[ ds:`DataSource1.Type1`, lg:`/aws/lambda/my-function-1`, `aws:fieldIndex` IN ("status"), `status` = 200 ]

Restrizioni

Le seguenti restrizioni si applicano quando si utilizza OpenSearch PPL per eseguire query in Logs Insights. CloudWatch

  • Non è possibile utilizzare i comandi join o subquery con le query relative alle fonti di dati.