Panoramica della gestione (comandi di controllo)

Questa sezione descrive i comandi di controllo usati per gestire Kusto. I comandi di controllo sono richieste inviate al servizio per recuperare informazioni che non sono necessariamente dati nelle tabelle di database, per modificare lo stato del servizio e così via.

Distinzione tra comandi di controllo e query

Kusto usa tre meccanismi per distinguere le query dai comandi di controllo: a livello di linguaggio, a livello di protocollo e a livello di API. Questa distinzione viene fatta per motivi di sicurezza.

A livello di linguaggio, il primo carattere del testo di una richiesta determina se la richiesta è un comando di controllo o una query. I comandi di controllo devono iniziare con il carattere punto (.), mentre nessuna query può iniziare con tale carattere.

A livello di protocollo, per i comandi di controllo vengono usati diversi endpoint HTTP/HTTPS, a differenza delle query.

A livello di API, per inviare i comandi di controllo vengono usate diverse funzioni, a differenza delle query.

Combinazione di query e comandi di controllo

I comandi di controllo possono fare riferimento a query (ma non viceversa) o ad altri comandi di controllo. Sono supportati diversi scenari:

  1. AdminThenQuery: viene eseguito un comando di controllo e il risultato (rappresentato come tabella dati temporanea) funge da input per una query.
  2. AdminFromQuery:viene eseguita una query o un comando di amministrazione e il relativo risultato (rappresentato come tabella dati temporanea) funge da input per un comando di controllo.

Si noti che, in tutti i casi, l'intera combinazione è tecnicamente un comando di controllo, non una query, quindi il testo della richiesta deve iniziare con un carattere punto (.) e la richiesta deve essere inviata all'endpoint di gestione del servizio.

Si noti inoltre che le istruzioni di query vengono visualizzate all'interno della parte del testo che costituisce la query (non possono precedere il comando stesso).

Nota

Non eseguire troppo spesso operazioni [command-then-query]. Command-then-query invia tramite pipe il set di risultati del comando di controllo e vi applica filtri/aggregazioni.

  • Ad esempio: .show ... | where ... | summarize ...
  • Quando si esegue un'operazione come .show cluster extents | count (enfasi su | count), Kusto prepara prima di tutto una tabella dati che include tutti i dettagli di tutti gli extent del cluster. Il sistema invia quindi questa tabella disponibile solo in memoria al motore Kusto per eseguire il conteggio. Il sistema si assume effettivamente un carico oneroso in un percorso non ottimizzato per offrire una risposta così semplice.

AdminThenQuery è indicato in uno dei due modi seguenti:

  1. Usando un carattere di barra verticale (|), tramite il quale la query considera quindi i risultati del comando di controllo come se si trattasse di qualsiasi altro operatore di query che produce dati.
  2. Usando un carattere di punto e virgola (;), che quindi inserisce i risultati del comando di controllo in un simbolo speciale denominato $command_results, che può essere usato nella query tutte le volte necessarie.

Ad esempio:

// 1. Using pipe: Count how many tables are in the database-in-scope:
.show tables
| count

// 2. Using semicolon: Count how many tables are in the database-in-scope:
.show tables;
$command_results
| count

// 3. Using semicolon, and including a let statement:
.show tables;
let useless=(n:string){strcat(n,'-','useless')};
$command_results | extend LastColumn=useless(TableName)

AdminFromQuery è indicato dalla combinazione di caratteri. Nell'esempio seguente viene prima di tutto eseguita una query che produce una tabella con una singola colonna (denominata str di tipo string) e una singola riga e la scrive come nome di tabella MyTable nel database nel contesto:

.set MyTable <|
let text="Hello, World!";
print str=text