Yönetime (denetim komutları) genel bakış

Bu bölümde Kusto’yu yönetmek için kullanılan denetim komutları açıklanır. Denetim komutları veritabanı tablolarındaki verilerle sınırlı olması gerekmeyen bilgiler almak veya hizmet durumunu vb. değiştirmek için hizmete yönelik isteklerdir.

Denetim komutlarını sorgulardan ayırt etme

Kusto sorgularla denetim komutlarını ayırt etmek için üç mekanizma kullanır: dil düzeyinde, protokol düzeyinde ve API düzeyinde. Bu, güvenlik amacıyla yapılır.

Dil düzeyinde, istek metninin ilk karakteri isteğin bir denetim komutu mu yoksa sorgu mu olduğunu belirler. Denetim komutlarının nokta (.) karakteriyle başlaması gerekir ve hiçbir sorgu bu karakterle başlayamaz.

Protokol düzeyinde, sorgulardan farklı olarak denetim komutlarında değişik HTTP/HTTPS uç noktaları kullanılır.

API düzeyinde, sorgulardan farklı olarak denetim komutlarını göndermek için değişik işlevler kullanılır.

Sorgularla denetim komutlarını birleştirme

Denetim komutları sorgulara başvurabilir (ancak tersi geçerli değildir) veya diğer denetim komutlarını kullanabilir. Desteklenen çeşitli senaryolar vardır:

  1. AdminThenQuery: Denetim komutu yürütülür ve sonucu (geçici veri tablosu olarak gösterilir) sorgunun girişi olarak işlev görür.
  2. AdminFromQuery: Bir sorgu veya .show yönetici komutu yürütülür ve sonucu (geçici veri tablosu olarak gösterilir) denetim komutunun girişi olarak işlev görür.

Her durumda bileşimin tamamı teknik olarak bir denetim komutudur (sorgu değildir), dolayısıyla isteğin metni nokta (.) karakteriyle başlamalıdır ve istek hizmetin yönetim uç noktasına gönderilmelidir.

Ayrıca metnin sorgu bölümünde sorgu deyimlerinin gösterildiğine de dikkat edin (bunlar komutun kendisinden önce gelemez).

Not

AdminThenQuery işlemlerini çok sık çalıştırmayın. AdminThenQuery , denetim komutunun sonuç kümesini oluşturur ve buna filtreler/toplamalar uygular.

  • Örneğin, .show ... | where ... | summarize ...
  • .show cluster extents | count (| count vurgulanarak) gibi bir şey çalıştırıldığında Kusto öncelikle kümedeki tüm kapsamların ayrıntılarını içeren bir veri tablosu hazırlar. Ardından sistem bu yalnızca bellekte bulunan tabloyu, sayımı yapılmak üzere Kusto altyapısına gönderir. Bu işlem sırasında sistem, size aslında önemsiz olan bir yanıt vermek için optimize olmayan bir yolda yoğun biçimde çalışır.

AdminThenQuery iki yoldan biriyle belirtilir:

  1. Dikey çizgi (|) karakteri kullanılabilir; bu durumda sorgu, denetim komutunun sonuçlarını veri üreten diğer sorgu işleçlerinden biriymiş gibi kabul eder.
  2. Noktalı virgül (;) karakteri kullanılabilir; bu durumda denetim komutunun sonuçları $command_results olarak adlandırılan özel bir sembole eklenir ve bu sembol de sorguda istenen sayıda kullanılabilir.

Örneğin:

// 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, <| karakter bileşimiyle belirtilir. Aşağıdaki örnekte tek sütunlu (string türünde str adlı) ve tek satırlı bir tablo üreten sorguyu yürütürüz ve bunu şu bağlamda MyTable tablo adı olarak yazarız:

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