Podstawy Log Analytics i KQL
Pozyskuj dzienniki diagnostyczne do obszaru roboczego Log Analytics i pisz zapytania w języku Kusto Query Language, aby filtrować, agregować i wizualizować dane operacyjne.
Podstawy Log Analytics i KQL to bezpłatna lekcja Azure Fundamentals na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Azure Fundamentals, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Azure Fundamentals zawiera 4 lekcji w sumie.
Czym jest obszar roboczy usługi Log Analytics?
Obszar roboczy usługi Log Analytics to centralny magazyn danych w usłudze Azure Monitor, przeznaczony na dane dzienników i dane telemetryczne. Po skonfigurowaniu ustawień diagnostycznych zasobu platformy Azure ustrukturyzowane dzienniki i metryki są przesyłane do obszaru roboczego. Następnie można wykonywać zapytania dotyczące tych danych za pomocą języka zapytań Kusto (KQL). Obszar roboczy ma własne zasady przechowywania danych (domyślnie 30 dni, maksymalnie 730 dni) oraz mechanizmy kontroli dostępu.
# Create a Log Analytics workspace
az monitor log-analytics workspace create \
--resource-group myRG \
--workspace-name myWorkspace \
--location eastus \
--retention-time 90Wysyłanie dzienników diagnostycznych do obszaru roboczego
Każdy zasób platformy Azure może generować dzienniki diagnostyczne — szczegółowe rekordy operacji, takich jak wywołania interfejsu API, zdarzenia uwierzytelniania i wykonywanie zapytań. Włącza się je za pomocą opcji Diagnostic Settings dostępnej dla zasobu, wskazując obszar roboczy usługi Log Analytics jako miejsce docelowe. Typowe kategorie dzienników to między innymi AuditEvent dla usługi Key Vault, AppServiceHTTPLogs dla usługi App Service oraz NetworkSecurityGroupFlowEvent dla grup zabezpieczeń sieci (NSG).
# Enable diagnostic settings to send Key Vault logs to Log Analytics
az monitor diagnostic-settings create \
--name 'KVLogs' \
--resource /subscriptions/<sub>/resourceGroups/myRG/providers/Microsoft.KeyVault/vaults/myKV \
--workspace myWorkspace \
--logs '[{"category":"AuditEvent","enabled":true}]'Wprowadzenie do składni KQL
Język zapytań Kusto (KQL) to język zapytań tylko do odczytu, służący do analizowania danych dzienników. Zapytanie KQL odczytuje się od lewej do prawej jako potok: zaczyna się od nazwy tabeli, a następnie przekazuje dane operatorem potoku (|) przez kolejne operatory. Typowe operatory to where do filtrowania, project do wybierania kolumn, summarize do agregowania oraz order by do sortowania. W języku KQL nazwy kolumn uwzględniają wielkość liter, natomiast słowa kluczowe — nie.
// Basic KQL query structure
AzureActivity
| where TimeGenerated > ago(24h)
| where OperationNameValue == 'MICROSOFT.COMPUTE/VIRTUALMACHINES/DELETE'
| project TimeGenerated, Caller, ResourceGroup, Resource
| order by TimeGenerated descFiltrowanie za pomocą operatora Where
Operator where filtruje wiersze za pomocą wyrażeń logicznych. Warunki można łączyć za pomocą operatorów and, or i not. Operator has wykonuje w ciągach znaków wyszukiwanie niewrażliwe na wielkość liter, uwzględniające granice słów, natomiast contains wyszukuje podciąg. Operator in sprawdza przynależność do listy. Funkcja ago() służy do wyrażania względnych przedziałów czasu, takich jak ago(1h) lub ago(7d).
// Filter for failed HTTP requests in the last hour
AppRequests
| where TimeGenerated > ago(1h)
| where Success == false
| where ResultCode in (500, 502, 503)
| project TimeGenerated, Name, ResultCode, DurationMs
| order by DurationMs descAgregowanie danych za pomocą operatora Summarize
Operator summarize oblicza agregacje dla wierszy. Typowe funkcje agregujące to count(), sum(), avg(), max(), min() oraz dcount(), służąca do zliczania wartości unikatowych. Grupowanie można wykonywać według jednej lub większej liczby kolumn za pomocą klauzuli by. Funkcja bin() zaokrągla znaczniki czasu do określonych przedziałów na potrzeby agregowania szeregów czasowych.
// Count failed requests per hour per endpoint
AppRequests
| where TimeGenerated > ago(24h)
| where Success == false
| summarize FailureCount = count() by bin(TimeGenerated, 1h), Name
| order by TimeGenerated desc, FailureCount descŁączenie tabel w języku KQL
Język KQL obsługuje operator join, który umożliwia korelowanie danych z wielu tabel. Domyślny rodzaj złączenia to innerunique, ale można określić także inner, leftouter, rightouter lub fullouter. Typowym wzorcem jest łączenie tabel AzureActivity i AzureMetrics w celu skorelowania zmian administracyjnych ze spadkami wydajności. Operator lookup jest lżejszą alternatywą, używaną do wzbogacania wierszy danymi z małej tabeli referencyjnej.
// Correlate VM restarts with CPU spike events
AzureActivity
| where OperationNameValue has 'restart'
| join kind=leftouter (
AzureMetrics
| where MetricName == 'Percentage CPU'
| where Average > 90
) on ResourceId
| project TimeGenerated, Resource, AverageWizualizowanie wyników KQL
Po napisaniu zapytania w portalu Log Analytics można wyświetlić wyniki jako wykres czasowy, wykres słupkowy, wykres kołowy lub tabelę, używając operatora render. Wynik dowolnego zapytania można także przypiąć do pulpitu nawigacyjnego platformy Azure lub zapisać jako skoroszyt. Polecenie render timechart przekształca zapytanie agregujące szereg czasowy w gotowy wykres liniowy do analizy trendów.
// Render a time chart of request counts per 5-minute interval
AppRequests
| where TimeGenerated > ago(4h)
| summarize RequestCount = count() by bin(TimeGenerated, 5m)
| render timechartAlerty wyszukiwania w dziennikach
Alerty wyszukiwania w dziennikach wykonują zapytanie KQL zgodnie z harmonogramem i uruchamiają się, gdy wynik spełnia określony warunek, na przykład gdy liczba wyników jest większa od zera lub kolumna liczbowa przekracza próg. Są bardziej elastyczne niż alerty metryk, ponieważ umożliwiają wykonywanie zapytań dotyczących dowolnych danych dzienników z wielu tabel. Częstotliwość oceny i okno czasowe można konfigurować niezależnie — na przykład uruchamiać zapytanie co 5 minut dla ostatnich 15 minut.
// Example log search alert condition: more than 5 exceptions in 15 min
AppExceptions
| where TimeGenerated > ago(15m)
| summarize ExceptionCount = count()
// Alert when ExceptionCount > 5Informacje o typowych tabelach dzienników
Azure Monitor przechowuje dzienniki w dobrze znanych tabelach. Tabela AzureActivity rejestruje operacje na poziomie subskrypcji. Tabela SecurityEvent zawiera dzienniki zabezpieczeń systemu Windows z maszyn wirtualnych wyposażonych w agenta Log Analytics. Tabela Heartbeat pokazuje łączność agenta (jeden wiersz na minutę dla każdej połączonej maszyny wirtualnej). Tabele AppRequests, AppExceptions i AppDependencies pochodzą z usługi Application Insights. Znajomość tych nazw tabel jest niezbędna do tworzenia skutecznych zapytań operacyjnych.
Przechowywanie danych w obszarze roboczym i koszty
Cennik usługi Log Analytics obejmuje dwa elementy: pozyskiwanie danych (opłata za każdy pozyskany GB) oraz przechowywanie danych (pierwsze 30 dni jest bezpłatne, a następnie naliczana jest opłata za każdy GB miesięcznie powyżej domyślnego okresu). Koszty można ograniczyć, filtrując zaszumione kategorie dzienników przed pozyskaniem, używając Basic Logs dla dużych ilości danych o niewielkiej wartości po obniżonej cenie oraz archiwizując starsze dane w usłudze Azure Data Explorer lub w magazynie zimnym na potrzeby długoterminowego przechowywania zgodnego z wymaganiami.
Modele kontroli dostępu do obszaru roboczego
Obszary robocze usługi Log Analytics obsługują dwa modele kontroli dostępu. W trybie workspace-context użytkownik mający uprawnienie Read do obszaru roboczego może wykonywać zapytania dotyczące wszystkich tabel. W trybie resource-context użytkownik może wykonywać zapytania tylko dotyczące dzienników generowanych przez zasoby, do których odczytu ma uprawnienia RBAC — nawet bez jawnego dostępu do obszaru roboczego. Tryb resource-context jest zalecany w dużych organizacjach, w których różne zespoły są właścicielami różnych zasobów.
Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat zagadnień Microsoft Azure Fundamentals (AZ-900) omówionych w tej lekcji.
Podsumowanie lekcji
W tej lekcji nauczyli się Państwo, że: obszary robocze usługi Log Analytics centralizują dane dzienników diagnostycznych z zasobów platformy Azure, operatory KQL, takie jak where, summarize i render, umożliwiają filtrowanie, agregowanie i wizualizowanie dzienników, a alerty wyszukiwania w dziennikach uruchamiają automatyczne reakcje, gdy wynik zapytania KQL spełnia określony warunek. W następnej części omówimy usługę Application Insights i dane telemetryczne na poziomie aplikacji.
Często zadawane pytania
Czy lekcja „Podstawy Log Analytics i KQL” jest bezpłatna?
Tak — pełny tekst „Podstawy Log Analytics i KQL” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Azure Fundamentals, przejdź na CoddyKit PRO. Kurs Azure Fundamentals zawiera 4 lekcji w sumie.
Co nauczysz się w „Podstawy Log Analytics i KQL”?
Pozyskuj dzienniki diagnostyczne do obszaru roboczego Log Analytics i pisz zapytania w języku Kusto Query Language, aby filtrować, agregować i wizualizować dane operacyjne. Ćwiczysz Azure Fundamentals z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Azure Fundamentals?
Nie wymagamy żadnego doświadczenia. Azure Fundamentals w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Podstawy Log Analytics i KQL”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Azure Fundamentals?
Tak. Każda lekcja Azure Fundamentals zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Metryki i alerty usługi Azure Monitor
- Podstawy Log Analytics i KQL
- Application Insights
- Pulpity nawigacyjne i skoroszyty Azure