Mengekspor data dari ruang kerja Analitik Log ke akun penyimpanan dengan menggunakan Logic Apps
Artikel ini menjelaskan metode untuk menggunakan Azure Logic Apps untuk mengkueri data dari ruang kerja Analitik Log di Azure Monitor dan mengirimkannya ke Azure Storage. Gunakan proses ini saat Anda perlu mengekspor data Log Azure Monitor untuk skenario audit dan kepatuhan atau untuk memungkinkan layanan lain mengambil data ini.
Metode ekspor lainnya
Metode yang dibahas dalam artikel ini menjelaskan ekspor terjadwal dari kueri log dengan menggunakan aplikasi logika. Opsi lain untuk mengekspor data untuk skenario tertentu meliputi:
- Untuk mengekspor data dari ruang kerja Analitik Log Anda ke akun penyimpanan atau Azure Event Hubs, gunakan fitur ekspor data ruang kerja Log Analytics dari Log Azure Monitor. Lihat Ekspor data ruang kerja Analitik Log di Azure Monitor.
- Ekspor satu kali dengan menggunakan aplikasi logika. Lihat Konektor Log Azure Monitor untuk Logic Apps.
- Ekspor satu kali ke komputer lokal dengan menggunakan skrip PowerShell. Lihat Invoke-AzOperationalInsightsQueryExport.
Gambaran Umum
Prosedur ini menggunakan konektor Log Azure Monitor, yang memungkinkan Anda menjalankan kueri log dari aplikasi logika dan menggunakan outputnya dalam tindakan lain dalam alur kerja. Konektor Azure Blob Storage digunakan dalam prosedur ini untuk mengirim output kueri ke penyimpanan.
Saat Anda mengekspor data dari ruang kerja Analitik Log, batasi jumlah data yang diproses oleh alur kerja Logic Apps Anda. Filter dan agregat data log Anda dalam kueri untuk mengurangi data yang diperlukan. Misalnya, jika Anda perlu mengekspor peristiwa masuk, filter untuk peristiwa yang diperlukan dan proyeksakan hanya bidang yang diperlukan. Contohnya:
SecurityEvent
| where EventID == 4624 or EventID == 4625
| project TimeGenerated , Account , AccountType , Computer
Saat Anda mengekspor data sesuai jadwal, gunakan ingestion_time()
fungsi dalam kueri Anda untuk memastikan bahwa Anda tidak melewatkan data yang terlambat tiba. Jika data tertunda karena masalah jaringan atau platform, menggunakan waktu penyerapan memastikan bahwa data disertakan dalam eksekusi Logic Apps berikutnya. Misalnya, lihat langkah "Tambahkan tindakan Log Azure Monitor" di bagian prosedur Logic Apps.
Prasyarat
Prasyarat berikut harus diselesaikan sebelum Anda memulai prosedur ini:
- Ruang kerja Analitik Log: Pengguna yang membuat aplikasi logika harus memiliki setidaknya izin baca ke ruang kerja.
- Akun penyimpanan: Akun penyimpanan tidak harus berada dalam langganan yang sama dengan ruang kerja Analitik Log Anda. Pengguna yang membuat aplikasi logika harus memiliki izin tulis ke akun penyimpanan.
Batasan konektor
Ruang kerja Log Analytics dan kueri log di Azure Monitor adalah layanan multipenyewa yang mencakup batasan untuk melindungi dan mengisolasi pelanggan dan mempertahankan kualitas layanan. Saat Anda mengkueri sejumlah besar data, pertimbangkan batas berikut, yang dapat memengaruhi cara Anda mengonfigurasi pengulangan Logic Apps dan kueri log Anda:
- Kueri log tidak dapat mengembalikan lebih dari 500.000 baris.
- Kueri log tidak dapat mengembalikan lebih dari 64.000.000 byte.
- Kueri log tidak dapat berjalan lebih dari 10 menit.
- Konektor Analitik Log dibatasi hingga 100 panggilan per menit.
Prosedur Logic Apps
Bagian berikut memanding Anda melalui prosedur.
Membuat kontainer di akun penyimpanan
Gunakan prosedur dalam Membuat kontainer untuk menambahkan kontainer ke akun penyimpanan Anda untuk menyimpan data yang diekspor. Nama yang digunakan untuk kontainer dalam artikel ini adalah loganalytics-data, tetapi Anda dapat menggunakan nama apa pun.
Membuat alur kerja aplikasi logika
Buka Azure Logic Apps di portal Azure dan klik Tambahkan. Pilih Langganan, Grup sumber daya, dan Wilayah untuk menyimpan aplikasi logika baru. Kemudian beri nama yang unik. Anda dapat mengaktifkan pengaturan Analitik Log untuk mengumpulkan informasi tentang data runtime dan peristiwa seperti yang dijelaskan dalam Menyiapkan Log Azure Monitor dan mengumpulkan data diagnostik untuk Azure Logic Apps. Pengaturan ini tidak diperlukan untuk menggunakan konektor Log Azure Monitor.
Pilih Tinjauan + buat kemudian pilih Buat. Setelah penyebaran selesai, pilih Buka sumber daya untuk membuka Logic Apps Designer.
Membuat pemicu untuk alur kerja
Pada Mulai dengan pemicu umum, pilih Pengulangan. Pengaturan ini membuat alur kerja aplikasi logika yang secara otomatis berjalan pada interval reguler. Dalam kotak Frekuensi tindakan, pilih Hari. Dalam kotak Interval , masukkan 1 untuk menjalankan alur kerja sekali per hari.
Menambahkan tindakan Log Azure Monitor
Tindakan Azure Monitor Logs memungkinkan Anda menentukan kueri yang akan dijalankan. Kueri log yang digunakan dalam contoh ini dioptimalkan untuk pengulangan per jam. Ini mengumpulkan data yang diserap untuk waktu eksekusi tertentu. Misalnya, jika alur kerja berjalan pada 4:35, rentang waktunya adalah 3:00 hingga 4:00. Jika Anda mengubah aplikasi logika untuk dijalankan pada frekuensi yang berbeda, Anda juga perlu mengubah kueri. Misalnya, jika Anda mengatur pengulangan untuk dijalankan setiap hari, Anda mengatur startTime
dalam kueri ke startofday(make_datetime(year,month,day,0,0))
.
Anda diminta untuk memilih penyewa untuk memberikan akses ke ruang kerja Analitik Log dengan akun yang akan digunakan alur kerja untuk menjalankan kueri.
Klik + Langkah baru untuk menambahkan tindakan yang dijalankan setelah tindakan pengulangan. Di bawah Pilih tindakan, masukkan azure monitor. Lalu pilih Log Azure Monitor.
Pilih Azure Log Analytics – Jalankan kueri dan daftar hasil.
Pilih Langganan dan Grup Sumber Daya untuk ruang kerja Analitik Log Anda. Pilih Ruang Kerja Analitik Log untuk Jenis Sumber Daya. Lalu pilih nama ruang kerja di bawah Nama Sumber Daya.
Tambahkan kueri log berikut ke jendela Kueri :
let dt = now(); let year = datetime_part('year', dt); let month = datetime_part('month', dt); let day = datetime_part('day', dt); let hour = datetime_part('hour', dt); let startTime = make_datetime(year,month,day,hour,0)-1h; let endTime = startTime + 1h - 1tick; AzureActivity | where ingestion_time() between(startTime .. endTime) | project TimeGenerated, BlobTime = startTime, OperationName , OperationNameValue , Level , ActivityStatus , ResourceGroup , SubscriptionId , Category , EventSubmissionTimestamp , ClientIpAddress = parse_json(HTTPRequest).clientIpAddress , ResourceId = _ResourceId
Rentang waktu menentukan rekaman yang akan dicakupkan dalam kueri berdasarkan kolom TimeGenerated. Nilai harus lebih besar dari rentang waktu yang dipilih dalam kueri. Karena kueri ini tidak menggunakan kolom TimeGenerated , opsi Atur dalam kueri tidak tersedia. Untuk informasi selengkapnya tentang rentang waktu, lihat Cakupan kueri. Pilih 4 jam terakhir untuk Rentang Waktu. Pengaturan ini memastikan bahwa setiap rekaman dengan waktu penyerapan yang lebih besar dari TimeGenerated akan disertakan dalam hasilnya.
Menambahkan tindakan Urai JSON (opsional)
Output dari tindakan Jalankan kueri dan cantumkan hasil diformat dalam JSON. Anda dapat mengurai data ini dan memanipulasinya sebagai bagian dari persiapan untuk tindakan Buat .
Anda dapat memberikan skema JSON yang menjelaskan payload yang diharapkan diterima. Perancang tersebut menguraikan konten JSON dengan menggunakan skema ini dan menghasilkan token yang mudah digunakan yang mewakili properti dalam konten JSON Anda. Anda kemudian dapat dengan mudah mereferensikan dan menggunakan properti tersebut di seluruh alur kerja Aplikasi Logika Anda.
Anda bisa menggunakan sampel output dari langkah Jalankan kueri dan daftar hasil .
Pilih Jalankan Pemicu di pita Logic Apps. Lalu pilih Jalankan dan unduh dan simpan rekaman output. Untuk kueri sampel di batang sebelumnya, Anda bisa menggunakan contoh output berikut:
{ "TimeGenerated": "2020-09-29T23:11:02.578Z", "BlobTime": "2020-09-29T23:00:00Z", "OperationName": "Returns Storage Account SAS Token", "OperationNameValue": "MICROSOFT.RESOURCES/DEPLOYMENTS/WRITE", "Level": "Informational", "ActivityStatus": "Started", "ResourceGroup": "monitoring", "SubscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e", "Category": "Administrative", "EventSubmissionTimestamp": "2020-09-29T23:11:02Z", "ClientIpAddress": "192.168.1.100", "ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/monitoring/providers/microsoft.storage/storageaccounts/my-storage-account" }
Pilih + Langkah baru lalu pilih + Tambahkan tindakan. Di bawah Pilih operasi, masukkan json lalu pilih Uraikan JSON.
Pilih kotak Konten untuk menampilkan daftar nilai dari aktivitas sebelumnya. Pilih Isi dari tindakan Jalankan kueri dan cantumkan hasil. Output ini berasal dari kueri log.
Salin rekaman sampel yang disimpan sebelumnya. Pilih Gunakan contoh payload untuk menghasilkan skema dan tempel.
Menambahkan tindakan Tulis
Tindakan Tulis mengambil output JSON yang diurai dan membuat objek yang Anda perlukan untuk menyimpan dalam blob.
Pilih + Langkah baru, lalu pilih + Tambahkan tindakan. Di bawah Pilih operasi, masukkan buat. Lalu pilih tindakan Buat .
Pilih kotak Input untuk menampilkan daftar nilai dari aktivitas sebelumnya. Pilih Isi dari tindakan Urai JSON. Output yang diurai ini berasal dari kueri log.
Menambahkan tindakan Buat blob
Tindakan Buat blob menulis JSON yang disusun ke penyimpanan.
Pilih + Langkah baru, lalu pilih + Tambahkan tindakan. Di bawah Pilih operasi, masukkan blob. Lalu pilih tindakan Buat blob .
Masukkan nama untuk koneksi ke akun penyimpanan Anda di Nama Koneksi. Lalu pilih ikon folder di kotak Jalur folder untuk memilih kontainer di akun penyimpanan Anda. Pilih Nama blob untuk melihat daftar nilai dari aktivitas sebelumnya. Pilih Ekspresi dan masukkan ekspresi yang cocok dengan interval waktu Anda. Untuk kueri ini, yang dijalankan per jam, ekspresi berikut mengatur nama blob per jam sebelumnya:
subtractFromTime(formatDateTime(utcNow(),'yyyy-MM-ddTHH:00:00'), 1,'Hour')
Pilih kotak Konten blob untuk menampilkan daftar nilai dari aktivitas sebelumnya. Lalu pilih Output di bagian Buat .
Menguji alur kerja
Untuk menguji alur kerja, pilih Jalankan. Jika alur kerja memiliki kesalahan, alur kerja ditunjukkan pada langkah dengan masalah. Anda dapat melihat eksekusi dan menelusuri setiap langkah untuk melihat input dan output untuk menyelidiki kegagalan. Lihat Memecahkan masalah dan mendiagnosis kegagalan alur kerja di Azure Logic Apps, jika perlu.
Melihat log dalam penyimpanan
Masuk ke menu Akun penyimpanan di portal Microsoft Azure dan pilih akun penyimpanan Anda. Pilih petak peta Blob . Kemudian pilih kontainer yang Anda tentukan dalam tindakan Buat blob . Pilih salah satu blob lalu pilih Edit blob.
Templat Aplikasi Logika
Langkah Urai JSON opsional tidak disertakan dalam templat
{
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"Compose": {
"inputs": "@body('Run_query_and_list_results')",
"runAfter": {
"Run_query_and_list_results": [
"Succeeded"
]
},
"type": "Compose"
},
"Create_blob_(V2)": {
"inputs": {
"body": "@outputs('Compose')",
"headers": {
"ReadFileMetadataFromServer": true
},
"host": {
"connection": {
"name": "@parameters('$connections')['azureblob']['connectionId']"
}
},
"method": "post",
"path": "/v2/datasets/@{encodeURIComponent(encodeURIComponent('AccountNameFromSettings'))}/files",
"queries": {
"folderPath": "/logicappexport",
"name": "@{utcNow()}",
"queryParametersSingleEncoded": true
}
},
"runAfter": {
"Compose": [
"Succeeded"
]
},
"runtimeConfiguration": {
"contentTransfer": {
"transferMode": "Chunked"
}
},
"type": "ApiConnection"
},
"Run_query_and_list_results": {
"inputs": {
"body": "let dt = now();\nlet year = datetime_part('year', dt);\nlet month = datetime_part('month', dt);\nlet day = datetime_part('day', dt);\n let hour = datetime_part('hour', dt);\nlet startTime = make_datetime(year,month,day,hour,0)-1h;\nlet endTime = startTime + 1h - 1tick;\nAzureActivity\n| where ingestion_time() between(startTime .. endTime)\n| project \n TimeGenerated,\n BlobTime = startTime, \n OperationName ,\n OperationNameValue ,\n Level ,\n ActivityStatus ,\n ResourceGroup ,\n SubscriptionId ,\n Category ,\n EventSubmissionTimestamp ,\n ClientIpAddress = parse_json(HTTPRequest).clientIpAddress ,\n ResourceId = _ResourceId ",
"host": {
"connection": {
"name": "@parameters('$connections')['azuremonitorlogs']['connectionId']"
}
},
"method": "post",
"path": "/queryData",
"queries": {
"resourcegroups": "resource-group-name",
"resourcename": "workspace-name",
"resourcetype": "Log Analytics Workspace",
"subscriptions": "workspace-subscription-id",
"timerange": "Set in query"
}
},
"runAfter": {},
"type": "ApiConnection"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {
"$connections": {
"defaultValue": {},
"type": "Object"
}
},
"triggers": {
"Recurrence": {
"evaluatedRecurrence": {
"frequency": "Day",
"interval": 1
},
"recurrence": {
"frequency": "Day",
"interval": 1
},
"type": "Recurrence"
}
}
},
"parameters": {
"$connections": {
"value": {
"azureblob": {
"connectionId": "/subscriptions/logic-app-subscription-id/resourceGroups/logic-app-resource-group-name/providers/Microsoft.Web/connections/blob-connection-name",
"connectionName": "blob-connection-name",
"id": "/subscriptions/logic-app-subscription-id/providers/Microsoft.Web/locations/canadacentral/managedApis/azureblob"
},
"azuremonitorlogs": {
"connectionId": "/subscriptions/blob-connection-name/resourceGroups/logic-app-resource-group-name/providers/Microsoft.Web/connections/azure-monitor-logs-connection-name",
"connectionName": "azure-monitor-logs-connection-name",
"id": "/subscriptions/blob-connection-name/providers/Microsoft.Web/locations/canadacentral/managedApis/azuremonitorlogs"
}
}
}
}
}
Langkah berikutnya
- Pelajari lebih lanjut kueri log di Azure Monitor.
- Pelajari selengkapnya tentang Logic Apps.
- Pelajari lebih lanjut Power Automate.