Narzędzia Kusto w agencie platformy Azure SRE

Narzędzia Kusto ułatwiają przekształcanie najlepszych zapytań KQL w narzędzia do wielokrotnego użytku, sparametryzowane. Agent uruchamia dokładne zapytanie, które piszesz bez interpretacji ani odmiany. Wiedza twojego zespołu staje się udostępnioną możliwością.

Wskazówka

  • Standaryzacja zapytań dotyczących zdarzeń — to samo sprawdzone KQL jest uruchamiane za każdym razem, bez wariacji.
  • Przekształcanie wiedzy plemiennej w narzędzia wielokrotnego użytku — twoje najlepsze zapytania stają się funkcjami udostępnionymi.
  • Zapytanie z parametrami — użytkownicy pytają w zwykły język, a agent automatycznie podstawia wartości.
  • Testowanie przed wdrożeniem — sprawdź poprawność wykonywania zapytań przed dodaniem do agentów niestandardowych.

Problem: każdy pisze własne zapytania

Podczas zdarzeń starsi inżynierowie zespołu korzystają z sprawdzonych w praktyce zapytań, które szybko znajdują problemy. Ale ta wiedza pozostaje w ich głowach, w wątkach na Slacku i w osobistych notesach. Gdy nie są na wezwanie, mniej doświadczeni ratownicy marnują czas:

  • Ponowne odkrywanie zapytań od podstaw, często z błędami
  • **Pisanie zbyt szerokich zapytań, które zwracają zbyt dużo danych lub brakuje przypadków brzegowych
  • Brak kolumn krytycznych , które ujawniłyby główną przyczynę
  • Używanie nieprawidłowych okien czasowych lub zapominanie o filtrowaniu według środowiska

Każdy inżynier wykonuje zapytania o te same dane inaczej. Jeden z inżynierów znajduje problem w ciągu pięciu minut. Inny inżynier spędza 30 minut, krążąc w kółko z ad-hoc KQL.

Jak narzędzia Kusto rozwiązują ten problem

Narzędzia Kusto umożliwiają zapisywanie najlepszych zapytań zespołu jako sparametryzowanych, deterministycznych narzędzi. Agent uruchamia dokładnie zdefiniowane zapytanie, dzięki czemu wiedza twojego zespołu staje się funkcją udostępnioną.

przed po
Starszy inżynier zapisuje zapytanie z pamięci Zapytanie jest zapisywane jako narzędzie, każdy może go używać
Przewidywania dyżurów w zakresach czasowych i filtrach Parametry wskazują, co jest potrzebne.
Każdy respondent dostaje inne wyniki To samo zapytanie jest uruchamiane za każdym razem
Sprzężenia złożone muszą być zapamiętane Wbudowana logika wieloetapowa

Zamiast prosić inżyniera na wezwanie o "ustalenie, jak wykonywać zapytania dotyczące dzienników błędów", pytają agenta:

Show me errors from the last 24 hours

Agent używa gotowego narzędzia z poleceniem timeRange=24h, zwracając dokładnie kolumny i filtry potrzebne zespołowi.

Jak to działa

Wykonaj następujące kroki, aby utworzyć narzędzie Kusto i użyć go:

  1. Połącz: dodaj klaster usługi Azure Data Explorer jako łącznik.
  2. Utwórz: zdefiniuj zapytania z parametrami przy użyciu ##parameterName## składni.
  3. Test: Sprawdź, czy zapytanie jest wykonywane poprawnie w portalu.
  4. Dołącz: dodaj narzędzie do agenta programowego.
  5. Użyj: Agent wywołuje narzędzie, gdy pytania użytkownika pasują do opisu narzędzia.

Dwa podejścia do zapytań dotyczących danych

Po dodaniu łącznika usługi Azure Data Explorer wybierz między deterministycznymi lub elastycznymi zapytaniami.

Metoda Opis Użyj, gdy
Łącznik zapytań bazy danych Agent używa wstępnie zdefiniowanych zapytań (narzędzia Kusto) Potrzebujesz deterministycznych, dokładnych zapytań
Łącznik indeksowania bazy danych Agent generuje zapytania, ucząc się schematu Potrzebujesz elastycznych zapytań ad hoc

Tworzenie narzędzia Kusto

Twórz narzędzia w Konstruktorze>Kanwy Agenta>Twórz>Narzędzie>Narzędzie Kusto. Każde narzędzie wymaga nazwy, opisu, łącznika, bazy danych i zapytania KQL z opcjonalnymi ##paramName## symbolami zastępczymi parametrów.

Aby zapoznać się z pełnym przewodnikiem z zrzutami ekranu, zobacz Samouczek: tworzenie narzędzia Kusto.

Dodawanie narzędzia do agenta niestandardowego

Po utworzeniu narzędzia dołącz go do agenta niestandardowego za pomocą przycisku widoku kanwy +>Dodaj istniejące narzędzia.

Wymagania wstępne

Przed utworzeniem narzędzi Kusto spełnij następujące wymagania.

Uprawnienia usługi Azure Data Explorer

Tożsamość zarządzana agenta wymaga roli AllDatabasesViewer w klastrze usługi Azure Data Explorer.

Użyj następującego polecenia zarządzania KQL:

.add cluster AllDatabasesViewer ('aadapp=<MANAGED_IDENTITY_CLIENT_ID>;<TENANT_ID>')

Alternatywnie w witrynie Azure Portal przejdź do klastra usługi Azure Data Explorer. Wybierz Bezpieczeństwo + sieci>Uprawnienia>Dodaj>AllDatabasesViewer.

Łącznik Kusto

Przed utworzeniem narzędzi skonfiguruj łącznik ADX. Podczas dodawania łącznika:

  • Wybierz Łącznik zapytań bazy danych dla wstępnie zdefiniowanych zapytań, a nie nauki schematu.
  • Użyj pełnego adresu URL klastra, w tym bazy danych: https://<CLUSTER_NAME>.<REGION>.kusto.windows.net/<DATABASE_NAME>.

Zapytania sparametryzowane

Uczyń swoje narzędzia elastycznymi za pomocą parametrów, używając składni ##parameterName##.

AppEvents
| where TimeGenerated > ago(##timeRange##)
| where EventLevel == "Error"
| where Message contains "##searchPattern##"
| take 100

Gdy agent używa tego narzędzia, zastępuje parametry na podstawie danych wejściowych użytkownika.

Użytkownik mówi Zamienniki agenta
"błędy z ostatniego dnia" timeRange=24h
"Znajdź wyjątki wskaźnika o wartości null" searchPattern=NullPointerException

Parametry pozwalają jednemu narzędziu obsłużyć wiele odmian tego samego pytania.

Tryby wykonywania (YAML)

Podczas definiowania narzędzi w języku YAML wybierz tryb wykonywania.

Tryb Opis Użyj, gdy
Query Wykonuje wbudowane zapytanie KQL Najczęstszą. Zapytanie jest definiowane bezpośrednio w języku YAML.
Function Wywołuje funkcję przechowywaną w klastrze Logika zapytań jest definiowana w usłudze Azure Data Explorer jako funkcja
Script Uruchamia skrypt KQL z pliku zewnętrznego Złożone zapytania wielostatementowe
# Query mode (most common)
spec:
  mode: Query
  query: |-
    AppEvents | take 10

# Function mode
spec:
  mode: Function
  function: GetRecentErrors

Najlepsze praktyki dotyczące zapytań

Postępuj zgodnie z tymi zaleceniami podczas pisania zapytań narzędzi Kusto.

Użyj odpowiednich zakresów czasu — ustawienie domyślne dla ostatnich danych:

| where TimeGenerated > ago(1h)

Dodaj limity wyników — zapobiegaj przeciążeniu danych wyjściowych:

| take 100

Uwzględnij przydatne projekcje — zwraca tylko kolumny, których potrzebuje agent:

| project TimeGenerated, Name, DurationMs, ResultCode

Kiedy używać narzędzi Kusto, czy zapytań ad hoc

Wybierz odpowiednie podejście na podstawie danego scenariusza.

Scenario Narzędzia Kusto Zapytania ad hoc
Standaryzowane kroki runbooka Yes Nie.
Powtarzalne wzorce badania Yes Nie.
Złożone zapytania z wieloma łączeniami Yes Nie.
Eksplorowanie nieznanych danych Nie. Yes
Jednorazowe badania Nie. Yes

Wprowadzenie

Resource Czego się nauczysz
Tworzenie narzędzia Kusto Przewodnik krok po kroku z zrzutami ekranu
Zdolność Co dodaje
Agenci niestandardowi Przypisywanie narzędzi do niestandardowych, wyspecjalizowanych agentów
Łączniki Łączenie innych źródeł danych