Menganalisis penggunaan di ruang kerja Analitik Log
Biaya Azure Monitor dapat bervariasi secara signifikan berdasarkan volume data yang dikumpulkan di ruang kerja Analitik Log Anda. Volume ini dipengaruhi oleh serangkaian solusi menggunakan ruang kerja dan jumlah data yang dikumpulkan oleh masing-masing. Artikel ini menyediakan panduan tentang menganalisis data yang Anda kumpulkan untuk membantu mengontrol biaya penyerapan data Anda. Ini membantu Anda menentukan penyebab penggunaan yang lebih tinggi dari yang diharapkan dan juga untuk memprediksi biaya Saat Anda memantau sumber daya tambahan dan mengonfigurasi fitur Azure Monitor yang berbeda.
Penyebab penggunaan yang lebih tinggi dari yang diharapkan
Setiap ruang kerja Analitik Log dibebankan sebagai layanan terpisah dan berkontribusi pada tagihan untuk langganan Azure Anda. Jumlah penyerapan data bisa sangat besar, tergantung faktor-faktor berikut:
- Sekumpulan wawasan dan layanan diaktifkan dan konfigurasinya
- Jumlah dan jenis sumber daya yang dipantau
- Volume data yang dikumpulkan dari setiap sumber daya yang dipantau
Peningkatan tak terduga dalam salah satu faktor ini dapat mengakibatkan peningkatan biaya untuk retensi data. Sisa artikel ini menyediakan metode untuk mendeteksi situasi seperti itu dan kemudian menganalisis data yang dikumpulkan untuk mengidentifikasi dan mengurangi sumber peningkatan penggunaan.
Analisis penggunaan di Azure Monitor
Anda harus memulai analisis dengan alat yang ada di Azure Monitor. Ini tidak memerlukan konfigurasi dan sering kali dapat memberikan informasi yang Anda butuhkan dengan upaya minimal. Jika Anda memerlukan analisis yang lebih dalam ke dalam data yang dikumpulkan daripada fitur Azure Monitor yang ada, Anda menggunakan salah satu kueri log berikut di Analitik Log.
Log Analytics Workspace Insights
Ruang Kerja Analitik Log Insights memberi Anda pemahaman cepat tentang data di ruang kerja Anda termasuk yang berikut ini:
- Tabel data menelan volume data paling banyak di tabel utama
- Sumber daya teratas yang berkontribusi data
- Tren penyerapan data
Lihat tab Penggunaan untuk perincian penyerapan menurut solusi dan tabel. Ini dapat membantu Anda dengan cepat mengidentifikasi tabel yang berkontribusi pada sebagian besar volume data Anda. Ini juga menunjukkan tren pengumpulan data dari waktu ke waktu untuk menentukan apakah pengumpulan data terus meningkat dari waktu ke waktu atau tiba-tiba meningkat sebagai respons terhadap perubahan konfigurasi tertentu.
Pilih Kueri Tambahan untuk kueri bawaan yang membantu Anda lebih memahami pola data Anda.
Penggunaan dan Perkiraan Biaya
Bagan Penyerapan data per solusi di halaman Penggunaan dan Estimasi Biaya untuk setiap ruang kerja menunjukkan total volume data yang dikirim dan berapa banyak yang dikirim oleh setiap solusi selama 31 hari sebelumnya. Ini membantu Anda menentukan tren seperti apakah ada peningkatan dari penggunaan data keseluruhan atau penggunaan oleh solusi tertentu.
Log kueri
Anda dapat menggunakan kueri log di Analitik Log jika Anda memerlukan analisis yang lebih dalam ke dalam data yang dikumpulkan. Setiap tabel di ruang kerja Analitik Log memiliki kolom standar berikut yang dapat membantu Anda menganalisis data yang dapat ditagih.
- _IsBillable mengidentifikasi catatan yang dikenakan biaya penyerapan. Gunakan kolom ini untuk memfilter data yang tidak dapat ditagih.
- _BilledSize menyediakan ukuran dalam byte rekaman.
Volume data menurut solusi
Analisis jumlah data yang dapat ditagih yang dikumpulkan oleh layanan atau solusi tertentu. Kueri ini menggunakan tabel Penggunaan yang mengumpulkan data penggunaan untuk setiap tabel di ruang kerja.
Catatan
Klausa dengan TimeGenerated hanya untuk memastikan bahwa pengalaman kueri di portal Microsoft Azure melihat kembali melampaui 24 jam default. Saat menggunakan tipe data Penggunaan, StartTime dan EndTime mewakili wadah waktu tempat hasil disajikan.
Volume data yang dapat ditagih berdasarkan solusi selama sebulan terakhir
Usage
| where TimeGenerated > ago(32d)
| where StartTime >= startofday(ago(31d)) and EndTime < startofday(now())
| where IsBillable == true
| summarize BillableDataGB = sum(Quantity) / 1000. by bin(StartTime, 1d), Solution
| render columnchart
Volume data yang dapat ditagih berdasarkan jenis selama sebulan terakhir
Usage
| where TimeGenerated > ago(32d)
| where StartTime >= startofday(ago(31d)) and EndTime < startofday(now())
| where IsBillable == true
| summarize BillableDataGB = sum(Quantity) / 1000. by bin(StartTime, 1d), DataType
| render columnchart
Volume data yang dapat ditagih berdasarkan solusi dan jenis selama sebulan terakhir
Usage
| where TimeGenerated > ago(32d)
| where StartTime >= startofday(ago(31d)) and EndTime < startofday(now())
| where IsBillable == true
| summarize BillableDataGB = sum(Quantity) / 1000 by Solution, DataType
| sort by Solution asc, DataType asc
Volume data yang dapat ditagih untuk peristiwa tertentu Jika Anda menemukan bahwa jenis data tertentu mengumpulkan data yang berlebihan, Anda mungkin ingin menganalisis data dalam tabel tersebut untuk menentukan rekaman tertentu yang meningkat. Contoh ini memfilter ID peristiwa tertentu dalam Event tabel lalu menyediakan hitungan untuk setiap ID. Anda dapat mengubah kueri ini menggunakan kolom dari tabel lain.
Event
| where TimeGenerated > startofday(ago(31d)) and TimeGenerated < startofday(now())
| where EventID == 5145 or EventID == 5156
| where _IsBillable == true
| summarize count(), Bytes=sum(_BilledSize) by EventID, bin(TimeGenerated, 1d)
Volume data menurut komputer
Analisis jumlah data yang dapat ditagih yang dikumpulkan dari mesin virtual atau sekumpulan mesin virtual. Tabel Penggunaan tidak menyertakan informasi tentang data yang dikumpulkan dari mesin virtual, sehingga kueri ini menggunakan operator temukan untuk mencari semua tabel yang menyertakan nama komputer. Jenis Penggunaan dihilangkan karena ini hanya untuk analitik tren data.
Peringatan
Gunakan kueri temukan secukupnya karena pemindaian di seluruh tipe data memerlukan banyak sumber daya untuk dieksekusi. Jika Anda tidak memerlukan hasil per langganan, grup sumber daya, atau nama sumber daya, gunakan tabel Penggunaan seperti dalam kueri di atas.
Volume data yang dapat ditagih berdasarkan komputer
find where TimeGenerated > ago(24h) project _BilledSize, _IsBillable, Computer, Type
| where _IsBillable == true and Type != "Usage"
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| summarize BillableDataBytes = sum(_BilledSize) by computerName
| sort by BillableDataBytes desc nulls last
Jumlah peristiwa yang dapat ditagih berdasarkan komputer
find where TimeGenerated > ago(24h) project _IsBillable, Computer
| where _IsBillable == true and Type != "Usage"
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| summarize eventCount = count() by computerName
| sort by eventCount desc nulls last
Volume data menurut sumber daya, grup sumber daya, atau langganan Azure
Analisis jumlah data yang dapat ditagih yang dikumpulkan dari sumber daya atau sekumpulan sumber daya tertentu. Kueri ini menggunakan kolom _ResourceId dan _SubscriptionId untuk data dari sumber daya yang dihosting di Azure.
Peringatan
Gunakan kueri temukan secukupnya karena pemindaian di seluruh tipe data memerlukan banyak sumber daya untuk dieksekusi. Jika Anda tidak memerlukan hasil per langganan, grup sumber daya, atau nama sumber daya, gunakan tabel Penggunaan seperti dalam kueri di atas.
Volume data yang dapat ditagih berdasarkan ID sumber daya
find where TimeGenerated > ago(24h) project _ResourceId, _BilledSize, _IsBillable
| where _IsBillable == true
| summarize BillableDataBytes = sum(_BilledSize) by _ResourceId
| sort by BillableDataBytes nulls last
Volume data yang dapat ditagih menurut grup sumber daya
find where TimeGenerated > ago(24h) project _ResourceId, _BilledSize, _IsBillable
| where _IsBillable == true
| summarize BillableDataBytes = sum(_BilledSize) by _ResourceId
| extend resourceGroup = tostring(split(_ResourceId, "/")[4] )
| summarize BillableDataBytes = sum(BillableDataBytes) by resourceGroup
| sort by BillableDataBytes nulls last
Ini mungkin berguna untuk mengurai _ResourceId :
| parse tolower(_ResourceId) with "/subscriptions/" subscriptionId "/resourcegroups/"
resourceGroup "/providers/" provider "/" resourceType "/" resourceName
Volume data yang dapat ditagih berdasarkan langganan
find where TimeGenerated > ago(24h) project _BilledSize, _IsBillable, _SubscriptionId
| where _IsBillable == true
| summarize BillableDataBytes = sum(_BilledSize) by _SubscriptionId
| sort by BillableDataBytes nulls last
Melakukan kueri untuk tipe data umum
Jika Anda menemukan bahwa Anda memiliki data yang dapat ditagih berlebihan untuk jenis data tertentu, maka Anda mungkin perlu melakukan kueri untuk menganalisis data dalam tabel tersebut. Kueri berikut ini menyediakan sampel untuk beberapa jenis data umum:
Solusi keamanan
SecurityEvent
| summarize AggregatedValue = count() by EventID
Solusi Manajemen Log
Usage
| where Solution == "LogManagement" and iff(isnotnull(toint(IsBillable)), IsBillable == true, IsBillable == "true") == true
| summarize AggregatedValue = count() by DataType
Tipe data Perf
Perf
| summarize AggregatedValue = count() by CounterPath
Perf
| summarize AggregatedValue = count() by CounterName
Tipe data Peristiwa
Event
| summarize AggregatedValue = count() by EventID
Event
| summarize AggregatedValue = count() by EventLog, EventLevelName
Tipe data Syslog
Syslog
| summarize AggregatedValue = count() by Facility, SeverityLevel
Syslog
| summarize AggregatedValue = count() by ProcessName
Tipe data AzureDiagnostics
AzureDiagnostics
| summarize AggregatedValue = count() by ResourceProvider, ResourceId
Data application insights
Ada dua pendekatan untuk menyelidiki jumlah data yang dikumpulkan untuk Application Insights, tergantung pada apakah Anda memiliki aplikasi klasik atau berbasis ruang kerja. Gunakan properti _BilledSize yang tersedia pada setiap peristiwa yang diserap untuk sumber daya berbasis ruang kerja dan klasik. Anda juga dapat menggunakan informasi agregat dalam tabel systemEvents untuk sumber daya klasik.
Catatan
Kueri di bagian ini akan berfungsi untuk sumber daya Application Insights berbasis ruang kerja dan klasik sejak kompatibilitas mundur memungkinkan Anda untuk terus menggunakan nama tabel warisan. Untuk sumber daya berbasis ruang kerja, buka Log dari menu ruang kerja Analitik Log. Untuk sumber daya klasik, buka Log dari menu Insights Aplikasi.
Operasi menghasilkan volume data terbanyak dalam 30 hari terakhir (berbasis ruang kerja atau klasik)
dependencies
| where timestamp >= startofday(ago(30d))
| summarize sum(_BilledSize) by operation_Name
| render barchart
Volume data yang diserap dalam 24 jam terakhir (klasik)
systemEvents
| where timestamp >= ago(24h)
| where type == "Billing"
| extend BillingTelemetryType = tostring(dimensions["BillingTelemetryType"])
| extend BillingTelemetrySizeInBytes = todouble(measurements["BillingTelemetrySize"])
| summarize sum(BillingTelemetrySizeInBytes)
Volume data menurut jenis yang diserap dalam 24 jam terakhir (klasik)
systemEvents
| where timestamp >= startofday(ago(30d))
| where type == "Billing"
| extend BillingTelemetryType = tostring(dimensions["BillingTelemetryType"])
| extend BillingTelemetrySizeInBytes = todouble(measurements["BillingTelemetrySize"])
| summarize sum(BillingTelemetrySizeInBytes) by BillingTelemetryType, bin(timestamp, 1d)
| render barchart
Jumlah jenis peristiwa yang diserap dalam 24 jam terakhir (klasik)
systemEvents
| where timestamp >= startofday(ago(30d))
| where type == "Billing"
| extend BillingTelemetryType = tostring(dimensions["BillingTelemetryType"])
| summarize count() by BillingTelemetryType, bin(timestamp, 1d)
| render barchart
Tren volume data untuk sumberdaya berdasarkan ruang kerja
Untuk melihat tren volume data untuk sumber daya Application Insights berbasis ruang kerja, gunakan kueri yang menyertakan semua tabel Application insights. Kueri berikut menggunakan nama tabel khusus untuk sumber daya berbasis ruang kerja.
Tren volume data untuk semua sumber daya Application Insights di ruang kerja selama seminggu terakhir
union (AppAvailabilityResults),
(AppBrowserTimings),
(AppDependencies),
(AppExceptions),
(AppEvents),
(AppMetrics),
(AppPageViews),
(AppPerformanceCounters),
(AppRequests),
(AppSystemEvents),
(AppTraces)
| where TimeGenerated >= startofday(ago(7d)) and TimeGenerated < startofday(now())
| summarize sum(_BilledSize) by _ResourceId, bin(TimeGenerated, 1d)
| render areachart
Tren volume data untuk sumber daya Application Insights tertentu di ruang kerja selama seminggu terakhir
union (AppAvailabilityResults),
(AppBrowserTimings),
(AppDependencies),
(AppExceptions),
(AppEvents),
(AppMetrics),
(AppPageViews),
(AppPerformanceCounters),
(AppRequests),
(AppSystemEvents),
(AppTraces)
| where TimeGenerated >= startofday(ago(7d)) and TimeGenerated < startofday(now())
| where _ResourceId contains "<myAppInsightsResourceName>"
| summarize sum(_BilledSize) by Type, bin(TimeGenerated, 1d)
| render areachart
Memahami node yang mengirim data
Jika Anda tidak memiliki data yang berlebihan dari sumber tertentu, Anda mungkin memiliki jumlah agen berlebihan yang mengirim data.
Peringatan
Gunakan kueri temukan secukupnya karena pemindaian di seluruh tipe data memerlukan banyak sumber daya untuk dieksekusi. Jika Anda tidak memerlukan hasil per langganan, grup sumber daya, atau nama sumber daya, gunakan tabel Penggunaan seperti dalam kueri di atas.
Jumlah simpul agen yang mengirim heartbeat setiap hari dalam sebulan terakhir
Heartbeat
| where TimeGenerated > startofday(ago(31d))
| summarize nodes = dcount(Computer) by bin(TimeGenerated, 1d)
| render timechart
Jumlah simpul yang mengirim data apa pun dalam 24 jam terakhir
find where TimeGenerated > ago(24h) project Computer
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| summarize nodes = dcount(computerName)
Volume data yang dikirim oleh setiap simpul dalam 24 jam terakhir
find where TimeGenerated > ago(24h) project _BilledSize, Computer
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| summarize TotalVolumeBytes=sum(_BilledSize) by computerName
Node yang ditagih oleh tingkat harga warisan Per Node
Tingkat harga warisan Per Simpul menagih untuk simpul dengan granularitas per jam dan juga tidak menghitung simpul,hal tersebut hanya mengirim serangkaian jenis data keamanan. Untuk mendapatkan daftar komputer yang akan ditagih sebagai simpul jika ruang kerja berada di tingkat harga warisan Per Simpul, cari simpul yang mengirim jenis data yang ditagih beberapa tipe data gratis. Pada kasus ini, gunakan bidang paling kiri dari nama domain yang sepenuhnya memenuhi syarat.
Kueri berikut mengembalikan jumlah komputer dengan data yang ditagih per jam. Jumlah unit pada tagihan Anda berada dalam satuan simpul bulan, yang diwakili oleh billableNodeMonthsPerDay dalam kueri. Jika ruang kerja memiliki solusi Manajemen Pembaruan terinstal, tambahkan tipe data Update dan UpdateSummary ke daftar pada klausa where.
find where TimeGenerated >= startofday(ago(7d)) and TimeGenerated < startofday(now()) project Computer, _IsBillable, Type, TimeGenerated
| where Type !in ("SecurityAlert", "SecurityBaseline", "SecurityBaselineSummary", "SecurityDetection", "SecurityEvent", "WindowsFirewall", "MaliciousIPCommunication", "LinuxAuditLog", "SysmonEvent", "ProtectionStatus", "WindowsEvent")
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| where _IsBillable == true
| summarize billableNodesPerHour=dcount(computerName) by bin(TimeGenerated, 1h)
| summarize billableNodesPerDay = sum(billableNodesPerHour)/24., billableNodeMonthsPerDay = sum(billableNodesPerHour)/24./31. by day=bin(TimeGenerated, 1d)
| sort by day asc
Catatan
Ada beberapa kompleksitas tambahan dalam algoritma penagihan aktual ketika penargetan solusi yang digunakan tidak diwakili dalam kueri di atas.
Jumlah node Keamanan dan Automasi
Jumlah simpul keamanan yang berbeda
union
(
Heartbeat
| where (Solutions has 'security' or Solutions has 'antimalware' or Solutions has 'securitycenter')
| project Computer
),
(
ProtectionStatus
| where Computer !in (Heartbeat | project Computer)
| project Computer
)
| distinct Computer
| project lowComputer = tolower(Computer)
| distinct lowComputer
| count
Jumlah simpul Automation yang berbeda
ConfigurationData
| where (ConfigDataType == "WindowsServices" or ConfigDataType == "Software" or ConfigDataType =="Daemons")
| extend lowComputer = tolower(Computer) | summarize by lowComputer
| join (
Heartbeat
| where SCAgentChannel == "Direct"
| extend lowComputer = tolower(Computer) | summarize by lowComputer, ComputerEnvironment
) on lowComputer
| summarize count() by ComputerEnvironment | sort by ComputerEnvironment asc
Data yang terlambat tiba
Jika Anda mengamati penyerapan data tinggi yang dilaporkan menggunakan catatan Usage, namun Anda tidak mengamati hasil yang sama yang dijumlahkan _BilledSize langsung pada jenis data, ada kemungkinan bahwa Anda memiliki data yang terlambat tiba. Ini adalah ketika data diserap dengan tanda waktu lama.
Misalnya, agen mungkin memiliki masalah konektivitas dan mengirim data akumulasi setelah tersambung kembali. Atau host mungkin memiliki waktu yang salah. Ini dapat menghasilkan perbedaan yang jelas antara data yang diserap yang dilaporkan oleh tipe data Penggunaan, dan kueri yang menjumlahkan _BilledSize di atas data mentah untuk hari tertentu yang ditentukan oleh TimeGenerated, sebagai cap waktu ketika peristiwa dihasilkan.
Untuk mendiagnosis masalah data yang terlambat tiba, gunakan kolom _TimeReceived selain kolom TimeGenerated. _TimeReceived adalah waktu ketika rekaman diterima oleh titik penyerapan Azure Monitor di cloud Azure.
Contoh berikut adalah sebagai respons terhadap volume data yang diserap tinggi dari data W3CIISLog pada 2 Mei 2021 untuk mengidentifikasi tanda waktu pada data yang diserap ini. where TimeGenerated > datetime(1970-01-01) pernyataan muncul hanya untuk memberikan petunjuk ke antarmuka pengguna Analitik Log untuk melihat semua data.
W3CIISLog
| where TimeGenerated > datetime(1970-01-01)
| where _TimeReceived >= datetime(2021-05-02) and _TimeReceived < datetime(2021-05-03)
| where _IsBillable == true
| summarize BillableDataMB = sum(_BilledSize)/1.E6 by bin(TimeGenerated, 1d)
| sort by TimeGenerated asc
Langkah berikutnya
- Lihat Detail harga Log Azure Monitor untuk detail tentang bagaimana biaya dihitung untuk data di ruang kerja Analitik Log dan opsi konfigurasi yang berbeda untuk mengurangi biaya Anda.
- Lihat Biaya dan penggunaan Azure Monitor untuk deskripsi berbagai jenis biaya Azure Monitor dan cara menganalisisnya di tagihan Azure Anda.
- Lihat Praktik terbaik Azure Monitor - Manajemen biaya untuk praktik terbaik dalam mengonfigurasi dan mengelola Azure Monitor guna meminimalkan biaya Anda.
- Lihat Transformasi waktu penyerapan di Log Azure Monitor (pratinjau) untuk detail tentang menggunakan transformasi waktu penyerapan untuk mengurangi jumlah data yang Anda kumpulkan di ruang kerja Analitik Log dengan memfilter rekaman dan kolom yang tidak diinginkan.