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

  • 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.
  • Untuk menyimpan kueri, Anda harus memiliki 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(), dan app().
  • 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= SourceAppPerintah 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.