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 di Bahasa Kueri Kusto (KQL) tetapi perlu membuat kueri yang berguna dengan cepat berdasarkan jenis sumber daya, lihat panel contoh kueri yang disimpan di Menggunakan kueri di Azure Monitor Log Analytics.
Dalam tutorial ini, Anda 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:
Izin yang diperlukan
Anda harus memiliki Microsoft.OperationalInsights/workspaces/query/*/read
izin ke ruang kerja Analitik Log yang Anda kueri, seperti yang disediakan oleh peran bawaan Pembaca Analitik Log, misalnya.
Menulis kueri baru
Kueri dapat dimulai dengan nama tabel atau search
perintah. Sebaiknya mulai dengan nama tabel karena menentukan cakupan yang jelas untuk kueri. Ini juga meningkatkan performa kueri dan relevansi hasilnya.
Catatan
KQL, yang digunakan oleh 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 sebelumnya mengembalikan 10 hasil dari SecurityEvent
tabel, tanpa urutan tertentu. Cara umum ini untuk melihat sekilas tabel membantu Anda memahami struktur dan kontennya. Mari kita periksa cara pembangunannya:
Kueri dimulai dengan nama
SecurityEvent
tabel , yang menentukan cakupan kueri.Karakter pipa (|) memisahkan perintah, sehingga output dari perintah pertama merupakan input berikutnya. Anda dapat menambahkan sejumlah elemen pipa.
Mengikuti pipa adalah
take
operator.Kita dapat menjalankan kueri bahkan tanpa menambahkan
| take 10
. Perintah masih akan valid, tetapi dapat mengembalikan hingga 30.000 hasil.
Take
take
Gunakan operator untuk melihat sampel kecil rekaman dengan mengembalikan hingga jumlah rekaman yang ditentukan. Hasil yang dipilih segan-segan dan ditampilkan dalam urutan tertentu. Jika Anda perlu mengembalikan hasil dalam urutan tertentu, gunakan sort
operator dan top
.
Kueri penelusuran
Kueri pencarian kurang terstruktur. Mereka lebih cocok untuk menemukan rekaman yang menyertakan nilai tertentu di salah satu kolomnya:
search in (SecurityEvent) "Cryptographic"
| take 10
Kueri ini mencari SecurityEvent
tabel untuk rekaman yang berisi frasa "Kriptografi." Dari rekaman tersebut, 10 rekaman dikembalikan dan ditampilkan. Jika Anda menghilangkan in (SecurityEvent)
bagian dan hanya search "Cryptographic"
menjalankan , pencarian melewati semua tabel. Prosesnya kemudian 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
Bagian ini menjelaskan sort
operator dan top
serta argumen dan asc
merekadesc
. Meskipun take
berguna untuk mendapatkan beberapa rekaman, Anda tidak dapat memilih atau mengurutkan hasilnya dalam urutan tertentu. Untuk mendapatkan tampilan yang diurutkan, gunakan sort
dan top
.
Desc dan asc
Desc
desc
Gunakan argumen untuk mengurutkan rekaman dalam urutan turun. Turun adalah urutan pengurutan default untuk sort
dan top
, sehingga Anda biasanya dapat menghilangkan desc
argumen.
Misalnya, data yang dikembalikan oleh kedua kueri berikut ini diurutkan menurut kolom TimeGenerated, dalam urutan menurut:
-
SecurityEvent | sort by TimeGenerated desc
-
SecurityEvent | sort by TimeGenerated
Asc
Untuk mengurutkan dalam urutan naik, tentukan asc
.
Sort
Anda dapat menggunakan sort
operator. sort
mengurutkan hasil kueri menurut kolom yang Anda tentukan. Namun, sort
tidak membatasi jumlah rekaman yang dikembalikan oleh kueri.
Misalnya, kueri berikut mengembalikan semua rekaman yang tersedia untuk SecurityEvent
tabel, yang maksimal 30.000 rekaman, dan mengurutkannya menurut kolom TimeGenerated.
SecurityEvent
| sort by TimeGenerated
Kueri sebelumnya dapat mengembalikan terlalu banyak hasil. Selain itu, mungkin juga perlu waktu untuk mengembalikan hasilnya. Kueri mengurutkan seluruh SecurityEvent
tabel menurut TimeGenerated
kolom. Portal Analitik kemudian membatasi tampilan hanya 30.000 rekaman. Pendekatan ini tidak optimal. Cara terbaik untuk hanya mendapatkan rekaman terbaru adalah dengan menggunakan top
operator.
Atas
top
Gunakan operator untuk mengurutkan seluruh tabel di sisi server lalu hanya mengembalikan rekaman teratas.
Misalnya, kueri berikut mengembalikan 10 rekaman terbaru:
SecurityEvent
| top 10 by TimeGenerated
Output terlihat seperti contoh ini.
Operator tempat: Memfilter pada kondisi
Filter, seperti namanya, memfilter data dengan kondisi tertentu. Pemfilteran adalah cara paling umum untuk membatasi hasil kueri ke informasi yang relevan.
Untuk menambahkan filter ke kueri, gunakan where
operator diikuti oleh satu atau beberapa kondisi. Misalnya, kueri berikut hanya SecurityEvent
mengembalikan rekaman di mana Level equals _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 |
and , or |
Diperlukan di antara kondisi | Level == 16 or CommandLine != "" |
Untuk memfilter berdasarkan beberapa kondisi, Anda dapat menggunakan salah satu dari pendekatan berikut:
Gunakan and
, seperti yang ditunjukkan di sini:
SecurityEvent
| where Level == 8 and EventID == 4672
Pipa beberapa where
elemen, 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, SecurityEvent Level
kolom berjenis String, jadi Anda harus melemparkannya ke jenis numerik, seperti int
atau long
, sebelum Anda dapat menggunakan operator numerik di atasnya, seperti yang ditunjukkan di sini: SecurityEvent | where toint(Level) >= 10
Menentukan rentang waktu
Anda dapat menentukan rentang waktu dengan menggunakan pemilih waktu atau filter waktu.
Gunakan pemetik waktu
Pemilih waktu ditampilkan di samping tombol Jalankan dan menunjukkan bahwa Anda mengkueri rekaman hanya dari 24 jam terakhir. Rentang waktu default ini diterapkan ke semua kueri. Untuk mendapatkan rekaman hanya dari satu jam terakhir, pilih Jam terakhir lalu jalankan kueri lagi.
Menambahkan filter waktu ke kueri
Anda juga bisa menentukan rentang waktu sendiri dengan menambahkan filter waktu ke kueri. Menambahkan filter waktu mengambil alih rentang waktu yang dipilih dalam pemilih waktu.
Yang terbaik adalah menempatkan 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." Kueri ini mengembalikan rekaman hanya dari 30 menit terakhir, yang dinyatakan sebagai, misalnya, 30m. Satuan waktu lainnya termasuk hari (misalnya 2h) dan detik (misalnya 10d).
Menggunakan proyek dan perluas untuk memilih dan mengomputasi kolom
Gunakan project
untuk 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 project
untuk mengganti nama kolom dan menentukan kolom baru. Contoh berikutnya menggunakan project
untuk melakukan hal berikut:
- Pilih hanya
Computer
kolom asli danTimeGenerated
. Activity
Tampilkan kolom sebagaiEventDetails
.- Buat kolom baru bernama
EventCode
. Fungsi inisubstring()
hanya digunakan untuk mendapatkan empat karakter pertama dariActivity
bidang .
SecurityEvent
| top 10 by TimeGenerated
| project Computer, TimeGenerated, EventDetails=Activity, EventCode=substring(Activity, 0, 4)
Anda dapat menggunakan extend
untuk menyimpan semua kolom asli dalam tataan hasil dan menentukan kolom lain. Kueri berikut menggunakan extend
untuk menambahkan EventCode
kolom. Kolom ini mungkin tidak ditampilkan di akhir hasil tabel. Anda perlu memperluas detail rekaman untuk melihatnya.
SecurityEvent
| top 10 by TimeGenerated
| extend EventCode=substring(Activity, 0, 4)
Menggunakan ringkasan untuk mengagregasi grup baris
Gunakan summarize
untuk mengidentifikasi grup rekaman sesuai dengan satu atau beberapa kolom dan menerapkan agregasi ke dalamnya. Penggunaan summarize
yang paling umum adalah count
, yang mengembalikan jumlah hasil di setiap grup.
Kueri berikut meninjau semua Perf
rekaman dari jam terakhir, mengelompokkannya menurut ObjectName
, dan menghitung rekaman 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 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 kami menggabungkan penghitung kinerja yang berbeda. Untuk membuat hasilnya lebih bermakna, hitung rata-rata secara terpisah untuk setiap kombinasi CounterName
dan Computer
:
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 tunggal selama rentang waktu karena nilai-nilai ini unik.
Untuk membuat grup berdasarkan nilai berkelanjutan, yang terbaik adalah memecah rentang menjadi unit yang dapat dikelola dengan menggunakan bin
. Kueri berikut menganalisis Perf
rekaman yang mengukur memori bebas (Available MBytes
) 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, yang memperlihatkan memori yang tersedia dari waktu ke waktu.
Tanya jawab umum
Bagian ini menyediakan jawaban atas pertanyaan umum.
Mengapa saya melihat rekaman duplikat di Log Azure Monitor?
Terkadang, Anda mungkin melihat rekaman duplikat di Log Azure Monitor. Duplikasi ini biasanya berasal dari salah satu dari dua kondisi berikut:
- Komponen dalam alur memiliki percobaan ulang untuk memastikan pengiriman yang andal di tempat tujuan. Terkadang, kemampuan ini dapat mengakibatkan duplikat untuk persentase kecil item telemetri.
- Jika rekaman duplikat berasal dari komputer virtual, Anda mungkin menginstal agen Analitik Log dan Agen Azure Monitor. Jika Anda masih memerlukan agen Analitik Log yang terinstal, konfigurasikan ruang kerja Analitik Log untuk tidak lagi mengumpulkan data yang juga dikumpulkan oleh aturan pengumpulan data yang digunakan oleh Agen Azure Monitor.
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 dalam referensi bahasa KQL.