Overzicht van beheer (besturingsopdrachten)

In deze sectie worden de besturingsopdrachten beschreven die worden gebruikt voor het beheren van Kusto. Besturingsopdrachten zijn aanvragen voor de service om informatie op te halen waarbij het niet noodzakelijkerwijs om gegevens in de databasetabellen gaat, om de servicestatus te wijzigen, enzovoort.

Onderscheid tussen besturingsopdrachten en query's

Kusto maakt gebruik van drie mechanismen om onderscheid te maken tussen query's en besturingsopdrachten: op taalniveau, op protocolniveau en op API-niveau. Dit wordt vanwege veiligheidsredenen gedaan.

Op taalniveau bepaalt het eerste teken van de tekst van een aanvraag of de aanvraag een besturingsopdracht of een query is. Besturingsopdrachten moeten beginnen met een punt (.); een query mag niet met dat teken beginnen.

Op protocolniveau worden verschillende HTTP-/HTTPS-eindpunten voor besturingsopdrachten gebruikt, maar niet voor query's.

Op API-niveau worden verschillende functies gebruikt voor het verzenden van besturingsopdrachten, maar niet van query's.

Query's en besturingsopdrachten combineren

Besturingsopdrachten kunnen verwijzen naar query's (maar niet omgekeerd) of andere besturingsopdrachten. Er zijn diverse ondersteunde scenario's:

  1. AdminThenQuery: Er wordt een besturingsopdracht uitgevoerd en het resultaat (weergegeven als een tijdelijke gegevenstabel) fungeert als invoer voor een query.
  2. AdminFromQuery: Er wordt een query of een .show-beheeropdracht uitgevoerd en het resultaat (weergegeven als een tijdelijke gegevenstabel) fungeert als invoer voor een besturingsopdracht.

In alle gevallen is de hele combinatie technisch gezien een besturingsopdracht (geen query), dus de tekst van de aanvraag moet beginnen met een punt (.) en de aanvraag moet worden verzonden naar het beheereindpunt van de service.

Ook query-instructies worden weergegeven in het querydeel van de tekst (deze kunnen niet aan de opdracht zelf voorafgaan).

Notitie

Voer AdminThenQuery-bewerkingen niet te vaak uit. AdminThenQuery stuurt de resultatenset van de besturingselementopdracht door en past hierop filters/aggregaties toe.

  • Bijvoorbeeld: .show ... | where ... | summarize ...
  • Bij het uitvoeren van iets als .show cluster extents | count (nadruk op de | count), bereidt Kusto eerst een gegevenstabel voor die alle details van alle gebieden in het cluster bevat. Het systeem verzendt vervolgens die alleen-in-geheugentabel naar de Kusto-engine om de telling uit te voeren. Het systeem moet eigenlijk heel hard werken om u een antwoord op een dergelijke makkelijke vraag te geven via een niet-geoptimaliseerd pad.

AdminThenQuery wordt op een van de volgende twee manieren aangegeven:

  1. Door een sluisteken (|) te gebruiken. De resultaten van de besturingsopdracht worden door de query behandeld alsof het gaat om een andere query-operator die gegevens genereert.
  2. Door een puntkomma (;) te gebruiken. Vervolgens worden de resultaten van de besturingsopdracht ingevoerd in een speciaal symbool met de naam $command_results, dat vervolgens in een willekeurig aantal malen in de query kan worden gebruikt.

Bijvoorbeeld:

// 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 wordt aangegeven door de tekencombinatie <|. In het volgende voorbeeld wordt eerst een query uitgevoerd die een tabel produceert met één kolom (met de naam str, van het type string) en één rij, en als tabelnaam MyTable naar de database in context geschreven:

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