Mulai menggunakan kueri log di Azure Monitor
Catatan
Jika Anda mengumpulkan data dari setidaknya satu komputer virtual, Anda dapat mengerjakan latihan ini di lingkungan sendiri. Untuk skenario lainnya, gunakan Lingkungan demokami, yang mencakup banyak data sampel.
Jika Anda sudah tahu cara mengkueri dalam bahasa Kueri Kusto, tetapi perlu membuat kueri yang berguna dengan cepat berdasarkan jenis sumber daya, lihat panel kueri contoh yang disimpan di artikel Menggunakan kueri di Azure Monitor Log Analytics.
Dalam tutorial ini Anda akan belajar menulis kueri log di Azure Monitor. Artikel ini menunjukkan kepada Anda cara:
- Memahami struktur kueri.
- Mengurutkan hasil kueri.
- Memfilter hasil kueri.
- Menentukan rentang waktu.
- Memilih bidang mana yang akan disertakan dalam hasil.
- Menentukan dan menggunakan bidang kustom.
- Mengagregasi dan mengelompokkan hasil.
Untuk tutorial tentang penggunaan Analitik Log di portal Microsoft Azure, lihat Mulai menggunakan Analitik Log Azure Monitor.
Untuk informasi selengkapnya tentang kueri log di Azure Monitor, lihat Ringkasan kueri log di Azure Monitor.
Berikut versi video dari tutorialnya:
Menulis kueri baru
Kueri bisa dimulai dengan nama tabel atau perintah pencarian. Anda sebaiknya mulai dengan nama tabel, karena menentukan lingkup yang jelas untuk kueri dan meningkatkan performa kueri dan relevansi hasil.
Catatan
Bahasa kueri Kusto yang digunakan Azure Monitor peka huruf besar/kecil. Kata kunci bahasa biasanya ditulis dalam huruf kecil. Saat menggunakan nama tabel atau kolom dalam kueri, pastikan untuk menggunakan huruf yang benar, seperti yang diperlihatkan pada panel skema.
Kueri berbasis tabel
Azure Monitor menyusun data log dalam tabel, masing-masing terdiri dari beberapa kolom. Semua tabel dan kolom ditampilkan di panel skema di Analitik Log di portal Analytics. Identifikasi tabel yang Anda minati lalu lihat sedikit data:
SecurityEvent
| take 10
Kueri yang diperlihatkan di atas menampilkan 10 hasil dari tabel SecurityEvent, tanpa urutan tertentu. Ini adalah cara yang sangat umum untuk melihat tabel dan memahami struktur dan kontennya. Mari kita periksa cara pembangunannya:
- Kueri dimulai dengan nama tabel SecurityEvent, yang menentukan lingkup kueri.
- Karakter pipa (|) memisahkan perintah, sehingga output dari perintah pertama merupakan input berikutnya. Anda dapat menambahkan sejumlah elemen pipa.
- Mengikuti pipa adalah perintah ambil, yang mengembalikan sejumlah catatan arbitrer tertentu dari tabel.
Kita benar-benar bisa menjalankan kueri bahkan tanpa menambahkan | take 10. Perintah akan tetap valid, tetapi dapat menampilkan hingga 10.000 hasil.
Kueri penelusuran
Kueri penelusuran kurang terstruktur, dan umumnya lebih sesuai untuk menemukan baris yang menyertakan nilai tertentu di salah satu kolomnya:
search in (SecurityEvent) "Cryptographic"
| take 10
Kueri ini menelusuri tabel SecurityEvent untuk baris yang berisi frasa "Kriptografi". Dari baris tersebut, 10 baris akan dikembalikan dan ditampilkan. Jika kita menghilangkan bagian in (SecurityEvent) dan hanya menjalankan search "Cryptographic", penelusuran akan menuju ke semua tabel, yang akan memakan waktu lebih lama dan kurang efisien.
Penting
Kueri pencarian biasanya lebih lambat daripada kueri berbasis tabel karena harus memproses lebih banyak data.
Mengurutkan dan teratas
Meskipun ambil berguna untuk mendapatkan beberapa baris, hasilnya dipilih dan ditampilkan tanpa urutan tertentu. Untuk mendapatkan tampilan yang berurutan, Anda dapat mengurutkan berdasarkan kolom pilihan:
SecurityEvent
| sort by TimeGenerated desc
Hal itu dapat menampilkan terlalu banyak hasil dan mungkin juga memakan waktu. Kueri di atas mengurutkan seluruh tabel SecurityEvent berdasarkan kolom TimeGenerated. Portal Analitik kemudian membatasi tampilan hingga 10.000 baris saja. Pendekatan ini tentu saja tidak optimal.
Cara terbaik untuk hanya mendapatkan 10 baris terbaru adalah dengan menggunakan teratas, yang mengurutkan seluruh tabel di sisi server lalu mengembalikan baris teratas:
SecurityEvent
| top 10 by TimeGenerated
Urutan menurun adalah urutan sortir default, jadi kami biasanya menghilangkan argumen desc. Keluarannya terlihat seperti:

Di mana operator: pemfilteran pada suatu kondisi
Filter, seperti namanya, memfilter data dengan kondisi tertentu. Ini adalah cara yang paling umum untuk membatasi hasil kueri ke informasi yang relevan.
Untuk menambahkan filter ke kueri, gunakan operator di mana yang diikuti oleh satu atau beberapa kondisi. Misalnya, kueri berikut hanya mengembalikan baris SecurityEvent di mana Tingkat sama dengan 8:
SecurityEvent
| where Level == 8
Saat menulis kondisi filter, Anda dapat menggunakan ekspresi berikut:
| Ekspresi | Deskripsi | Contoh |
|---|---|---|
| == | Periksa kesetaraan (peka huruf besar/kecil) |
Level == 8 |
| =~ | Periksa kesetaraan (tidak sensitif huruf besar/kecil) |
EventSourceName =~ "microsoft-windows-security-auditing" |
| !=, <> | Periksa ketidaksetaraan (kedua ekspresi identik) |
Level != 4 |
| dan, atau | Diperlukan di antara kondisi | Level == 16 or CommandLine != "" |
Untuk memfilter berdasarkan beberapa kondisi, Anda dapat menggunakan salah satu dari pendekatan berikut:
Gunakan dan, seperti yang ditunjukkan di sini:
SecurityEvent
| where Level == 8 and EventID == 4672
Alur beberapa elemen di mana,satu demi satu, seperti yang ditunjukkan di sini:
SecurityEvent
| where Level == 8
| where EventID == 4672
Catatan
Nilai dapat memiliki jenis yang berbeda, jadi Anda mungkin perlu mentransmisikan untuk melakukan perbandingan pada jenis yang benar. Misalnya, kolom Tingkat SecurityEvent berjenis String, jadi Anda harus mentransmisikan ke jenis numerik seperti int atau long, sebelum Anda dapat menggunakan operator numerik di dalamnya, seperti yang ditunjukkan di sini: SecurityEvent | where toint(Level) >= 10
Menentukan rentang waktu
Gunakan pemetik waktu
Pemilih waktu ditampilkan di samping tombol Jalankan dan menunjukkan bahwa kita hanya mengkueri baris dari 24 jam terakhir. Ini adalah rentang waktu default yang diterapkan ke semua kueri. Untuk mendapatkan baris hanya dari jam terakhir, pilih Jam terakhir dan jalankan kueri lagi.

Menambahkan filter waktu ke kueri
Anda juga bisa menentukan rentang waktu sendiri dengan menambahkan filter waktu ke kueri. Sebaiknya tempatkan filter waktu segera setelah nama tabel:
SecurityEvent
| where TimeGenerated > ago(30m)
| where toint(Level) >= 10
Dalam filter waktu sebelumnya, ago(30m) berarti "30 menit yang lalu," yang berarti bahwa kueri ini menampilkan baris hanya dari 30 menit terakhir (misalnya dinyatakan sebagai 30m). Satuan waktu lainnya termasuk hari (misalnya 2h) dan detik (misalnya 10d).
Menggunakan proyek dan perluas untuk memilih dan mengomputasi kolom
Gunakan proyek guna memilih kolom tertentu untuk disertakan dalam hasil:
SecurityEvent
| top 10 by TimeGenerated
| project TimeGenerated, Computer, Activity
Contoh sebelumnya menghasilkan output berikut:

Anda juga dapat menggunakan proyek untuk mengganti nama kolom dan menentukan kolom baru. Contoh berikut menggunakan proyek untuk melakukan hal berikut:
- Pilih hanya kolom asli Komputer dan TimeGenerated.
- Menampilkan kolom Aktivitas sebagai EventDetails.
- Buat kolom baru bernama EventCode. Fungsi substring() digunakan untuk mendapatkan hanya empat karakter pertama dari bidang Aktivitas.
SecurityEvent
| top 10 by TimeGenerated
| project Computer, TimeGenerated, EventDetails=Activity, EventCode=substring(Activity, 0, 4)
Anda dapat menggunakan perluas untuk menyimpan semua kolom asli dalam tataan hasil dan menentukan kolom tambahan. Kueri berikut menggunakan perluas untuk menambahkan kolom EventCode. Perhatikan bahwa kolom ini mungkin tidak ditampilkan di akhir tabel hasil, sehingga Anda harus memperluas detail catatan untuk menampilkannya.
SecurityEvent
| top 10 by TimeGenerated
| extend EventCode=substring(Activity, 0, 4)
Menggunakan ringkasan untuk mengagregasi grup baris
Gunakan ringkas untuk mengidentifikasi grup baris, berdasarkan satu atau beberapa kolom, dan menerapkan agregasi ke dalamnya. Penggunaan yang paling umum dari ringkas adalah hitung, yang mengembalikan jumlah hasil di setiap grup.
Kueri berikut ini meninjau semua baris Perf dari satu jam terakhir, mengelompokkannya menurut ObjectName, dan menghitung baris di setiap grup:
Perf
| where TimeGenerated > ago(1h)
| summarize count() by ObjectName
Terkadang memungkinkan untuk menentukan grup dengan beberapa dimensi. Setiap kombinasi unik dari nilai-nilai ini menentukan grup terpisah:
Perf
| where TimeGenerated > ago(1h)
| summarize count() by ObjectName, CounterName
Penggunaan umum lainnya adalah untuk melakukan perhitungan matematis atau statistik di setiap kelompok. Contoh berikut ini menghitung rata-rata CounterValue untuk setiap komputer:
Perf
| where TimeGenerated > ago(1h)
| summarize avg(CounterValue) by Computer
Sayangnya, hasil kueri ini tidak ada artinya karena kita mencampurkan penghitung kinerja yang berbeda. Untuk membuatnya lebih berarti, kita harus menghitung rata-rata secara terpisah untuk setiap kombinasi CounterName dan Komputer:
Perf
| where TimeGenerated > ago(1h)
| summarize avg(CounterValue) by Computer, CounterName
Ringkas menurut kolom waktu
Hasil pengelompokan juga dapat didasarkan pada kolom waktu, atau nilai berkelanjutan lainnya. Namun, hanya meringkas by TimeGenerated akan membuat grup untuk setiap milidetik selama rentang waktu, karena ini adalah nilai yang unik.
Untuk membuat grup berdasarkan nilai berkelanjutan, sebaiknya memutus rentang menjadi unit yang dapat dikelola menggunakan bin. Kueri berikut menganalisis baris Perf yang mengukur memori bebas (MByte yang Tersedia) pada komputer tertentu. Langkah ini menghitung nilai rata-rata setiap periode 1 jam selama 7 hari terakhir:
Perf
| where TimeGenerated > ago(7d)
| where Computer == "ContosoAzADDS2"
| where CounterName == "Available MBytes"
| summarize avg(CounterValue) by bin(TimeGenerated, 1h)
Untuk membuat output lebih jelas, Anda dapat memilih untuk menampilkannya sebagai bagan waktu, memperlihatkan memori yang tersedia dari waktu ke waktu:

Langkah berikutnya
- Untuk mempelajari selengkapnya tentang penggunaan data string dalam kueri log, lihat Bekerja dengan string di kueri log Azure Monitor.
- Untuk mempelajari selengkapnya tentang penggabungan data dalam kueri log, lihat Agregasi Tingkat Lanjut di kueri log Azure Monitor.
- Untuk mempelajari cara menggabungkan data dari beberapa tabel, lihat Menggabungkan kueri log di Azure Monitor.
- Dapatkan dokumentasi tentang seluruh bahasa kueri Kusto di Referensi bahasa KQL.