Mengkueri data di seluruh ruang kerja, aplikasi, dan sumber daya Analitik Log di Azure Monitor
Ada dua cara untuk mengkueri data dari beberapa ruang kerja, aplikasi, dan sumber daya:
- Secara eksplisit dengan menentukan informasi ruang kerja, aplikasi, atau sumber daya menggunakan ekspresi ruang kerja(), aplikasi(), atau sumber daya(), seperti yang dijelaskan dalam artikel ini.
- Secara implisit dengan menggunakan kueri konteks sumber daya. Saat Anda mengkueri dalam konteks sumber daya, grup sumber daya, atau langganan tertentu, kueri mengambil data yang relevan dari semua ruang kerja yang berisi data untuk sumber daya ini. Kueri konteks sumber daya tidak mengambil data dari sumber daya Application Insights klasik.
Artikel ini menjelaskan cara menggunakan workspace()
ekspresi , , app()
dan resource()
untuk mengkueri data dari beberapa ruang kerja, aplikasi, dan sumber daya Analitik Log.
Jika Anda mengelola langganan di penyewa Microsoft Entra lainnya melalui Azure Lighthouse, Anda dapat menyertakan ruang kerja Analitik Log yang dibuat di penyewa pelanggan tersebut dalam kueri Anda.
Penting
Jika Anda menggunakan sumber daya Application Insights berbasis ruang kerja, telemetri disimpan di ruang kerja Analitik Log dengan semua data log lainnya. workspace()
Gunakan ekspresi untuk mengkueri data dari aplikasi di beberapa ruang kerja. Anda tidak memerlukan kueri lintas ruang kerja untuk mengkueri data dari beberapa aplikasi di ruang kerja yang sama.
Izin yang diperlukan
Perbuatan | Izin yang diperlukan |
---|---|
Periksa status ruang kerja | Microsoft.OperationalInsights/workspaces/query/*/read izin ke ruang kerja Analitik Log yang Anda kueri, seperti yang disediakan oleh peran bawaan Pembaca Analitik Log, misalnya. |
Menyimpan kueri | microsoft.operationalinsights/querypacks/queries/action izin ke paket kueri tempat Anda ingin menyimpan kueri, seperti yang disediakan oleh peran bawaan Kontributor Analitik Log, misalnya. |
Batasan
- Kueri lintas sumber daya dan lintas layanan tidak mendukung fungsi dan fungsi berparameter yang definisinya mencakup ekspresi lintas ruang kerja atau lintas layanan lainnya, termasuk
adx()
, ,arg()
resource()
,workspace()
, danapp()
. - Anda dapat menyertakan hingga 100 ruang kerja Log Analytics atau sumber daya Application Insights klasik dalam satu kueri.
- Mengkueri di sejumlah besar sumber daya dapat memperlambat kueri secara substansial.
- Kueri lintas sumber daya dalam pemberitahuan pencarian log hanya didukung di API scheduledQueryRules saat ini. Jika menggunakan API Pemberitahuan Analitik Log lama, Anda harus beralih ke API saat ini.
- Referensi ke sumber daya silang, seperti ruang kerja lain, harus eksplisit dan tidak dapat diparameterkan.
Kueri di seluruh ruang kerja, aplikasi, dan sumber daya menggunakan fungsi
Bagian ini menjelaskan cara mengkueri ruang kerja, aplikasi, dan sumber daya menggunakan fungsi dengan dan tanpa menggunakan fungsi.
Kueri tanpa menggunakan fungsi
Anda dapat mengkueri beberapa sumber daya dari salah satu instans sumber daya Anda. Sumber daya ini dapat menjadi ruang kerja dan aplikasi yang digabungkan.
Contoh untuk kueri di tiga ruang kerja:
union
Update,
workspace("00000000-0000-0000-0000-000000000001").Update,
workspace("00000000-0000-0000-0000-000000000002").Update
| where TimeGenerated >= ago(1h)
| where UpdateState == "Needed"
| summarize dcount(Computer) by Classification
Untuk informasi selengkapnya tentang operator serikat, tempat, dan ringkas, lihat operator serikat, operator tempat, dan ringkas operator.
Kueri dengan menggunakan fungsi
Saat Anda menggunakan kueri lintas sumber daya untuk menghubungkan data dari beberapa ruang kerja Analitik Log dan komponen Application Insights, kueri dapat menjadi kompleks dan sulit dipertahankan. Anda harus menggunakan fungsi dalam kueri log Azure Monitor untuk memisahkan logika kueri dari cakupan sumber daya kueri. Metode ini menyederhanakan struktur kueri. Contoh berikut menunjukkan bagaimana Anda dapat memantau beberapa komponen Application Insights dan memvisualisasikan jumlah permintaan yang gagal berdasarkan nama aplikasi.
Buat kueri seperti contoh berikut yang mereferensikan cakupan komponen Application Insights. withsource= SourceApp
Perintah menambahkan kolom yang menunjuk nama aplikasi yang mengirim log. Simpan kueri sebagai fungsi dengan alias applicationsScoping
.
// crossResource function that scopes my Application Insights components
union withsource= SourceApp
app('00000000-0000-0000-0000-000000000000').requests,
app('00000000-0000-0000-0000-000000000001').requests,
app('00000000-0000-0000-0000-000000000002').requests,
app('00000000-0000-0000-0000-000000000003').requests,
app('00000000-0000-0000-0000-000000000004').requests
Sekarang Anda dapat menggunakan fungsi ini dalam kueri lintas sumber daya seperti contoh berikut. Alias applicationsScoping
fungsi mengembalikan gabungan tabel permintaan dari semua aplikasi yang ditentukan. Kueri kemudian memfilter permintaan yang gagal dan memvisualisasikan tren berdasarkan aplikasi. Operator parse
bersifat opsional dalam contoh ini. Ini mengekstrak nama aplikasi dari SourceApp
properti .
applicationsScoping
| where timestamp > ago(12h)
| where success == 'False'
| parse SourceApp with * '(' applicationId ')' *
| summarize count() by applicationId, bin(timestamp, 1h)
| render timechart
Catatan
Metode ini tidak dapat digunakan dengan pemberitahuan pencarian log karena validasi akses sumber daya aturan pemberitahuan, termasuk ruang kerja dan aplikasi, dilakukan pada waktu pembuatan pemberitahuan. Menambahkan sumber daya baru ke fungsi setelah pembuatan pemberitahuan tidak didukung. Jika Anda lebih suka menggunakan fungsi untuk cakupan sumber daya dalam pemberitahuan pencarian log, Anda harus mengedit aturan pemberitahuan di portal atau dengan templat Azure Resource Manager untuk memperbarui sumber daya tercakup. Atau, Anda dapat menyertakan daftar sumber daya dalam kueri pemberitahuan pencarian log.
Kueri di seluruh ruang kerja Analitik Log menggunakan ruang kerja()
workspace()
Gunakan ekspresi untuk mengambil data dari ruang kerja tertentu di grup sumber daya yang sama, grup sumber daya lain, atau langganan lain. Anda dapat menggunakan ekspresi ini untuk menyertakan data log dalam kueri Application Insights dan untuk mengkueri data di beberapa ruang kerja dalam kueri log.
Sintaks
workspace(
Pengidentifikasi)
Argumen
*Identifier*
: Mengidentifikasi ruang kerja dengan menggunakan salah satu format dalam tabel berikut.
pengidentifikasi | Deskripsi | Contoh |
---|---|---|
ID | GUID ruang kerja | ruang kerja("00000000-0000-0000-0000-000000000000") |
ID Azure Resource | Pengidentifikasi untuk sumber daya Azure | workspace("/subscriptions/00000000-0000-0000-000000000000000/resourcegroups/Contoso/providers/Microsoft.OperationalInsights/workspaces/contosoretail") |
Contoh
workspace("00000000-0000-0000-0000-000000000000").Update | count
workspace("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Contoso/providers/Microsoft.OperationalInsights/workspaces/contosoretail").Event | count
union
( workspace("00000000-0000-0000-0000-000000000000").Heartbeat | where Computer == "myComputer"),
(app("00000000-0000-0000-0000-000000000000").requests | where cloud_RoleInstance == "myRoleInstance")
| count
union
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat), (app("00000000-0000-0000-0000-000000000000").requests) | where TimeGenerated between(todatetime("2023-03-08 15:00:00") .. todatetime("2023-04-08 15:05:00"))
Kueri di seluruh aplikasi Application Insights klasik menggunakan app()
app
Gunakan ekspresi untuk mengambil data dari sumber daya Application Insights klasik tertentu di grup sumber daya yang sama, grup sumber daya lain, atau langganan lain. Jika Anda menggunakan sumber daya Application Insights berbasis ruang kerja, telemetri disimpan di ruang kerja Analitik Log dengan semua data log lainnya. workspace()
Gunakan ekspresi untuk mengkueri data dari aplikasi di beberapa ruang kerja. Anda tidak memerlukan kueri lintas ruang kerja untuk mengkueri data dari beberapa aplikasi di ruang kerja yang sama.
Sintaks
app(
Pengidentifikasi)
Argumen
*Identifier*
: Mengidentifikasi aplikasi menggunakan salah satu format dalam tabel di bawah ini.
pengidentifikasi | Deskripsi | Contoh |
---|---|---|
ID | GUID dari aplikasi | app("00000000-0000-0000-0000-0000000000000") |
ID Azure Resource | Pengidentifikasi untuk sumber daya Azure | app("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp") |
Contoh
app("00000000-0000-0000-0000-000000000000").requests | count
app("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp").requests | count
union
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat | where Computer == "myComputer"),
(app("00000000-0000-0000-0000-000000000000").requests | where cloud_RoleInstance == "myColumnInstance")
| count
union
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat), (app("00000000-0000-0000-0000-000000000000").requests)
| where TimeGenerated between(todatetime("2023-03-08 15:00:00") .. todatetime("2023-04-08 15:05:00"))
Menghubungkan data antara sumber daya menggunakan resource()
Ekspresi resource
digunakan dalam kueri Azure Monitor yang dicakup ke sumber daya untuk mengambil data dari sumber daya lain.
Sintaks
resource(
Pengidentifikasi)
Argumen
*Identifier*
: Mengidentifikasi sumber daya, grup sumber daya, atau langganan untuk menghubungkan data.
pengidentifikasi | Deskripsi | Contoh |
---|---|---|
Sumber daya | Menyertakan data untuk sumber daya. | resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm") |
Grup Sumber Daya atau Langganan | Menyertakan data untuk sumber daya dan semua sumber daya yang ada di dalamnya. | resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup) |
Contoh
union (Heartbeat),(resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm").Heartbeat) | summarize count() by _ResourceId, TenantId
union (Heartbeat),(resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup").Heartbeat) | summarize count() by _ResourceId, TenantId
Langkah berikutnya
Lihat Menganalisis data log di Azure Monitor untuk gambaran umum kueri log dan bagaimana data log Azure Monitor disusun.