Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menjelaskan cara menerapkan transformasi data dalam wawasan Kontainer. Transformasi di Azure Monitor memungkinkan Anda memodifikasi atau memfilter data sebelum diserap di ruang kerja Analitik Log Anda. Mereka memungkinkan Anda melakukan tindakan seperti memfilter data yang dikumpulkan dari kluster Anda untuk menghemat biaya atau memproses data masuk untuk membantu kueri data Anda.
Penting
Artikel Mengonfigurasi pengumpulan log di Container Insights dan Memfilter pengumpulan log di Container Insights menjelaskan pengaturan konfigurasi standar untuk mengonfigurasi dan memfilter pengumpulan data untuk Container Insights. Anda harus melakukan konfigurasi yang diperlukan menggunakan fitur-fitur ini sebelum menggunakan transformasi. Gunakan transformasi untuk melakukan pemfilteran atau konfigurasi data lain yang tidak dapat Anda lakukan dengan pengaturan konfigurasi standar.
Aturan pengumpulan data
Transformasi diterapkan dalam aturan pengumpulan data (DCR) yang digunakan untuk mengonfigurasi pengumpulan data di Azure Monitor. Mengonfigurasi pengumpulan data menggunakan DCR menjelaskan DCR yang dibuat secara otomatis saat Anda mengaktifkan *Container insights* pada kluster. Untuk membuat transformasi, Anda harus melakukan salah satu tindakan berikut:
- Kluster baru. Gunakan templat ARM yang ada untuk memasukkan kluster AKS ke dalam wawasan Kontainer. Ubah DCR dalam templat tersebut dengan konfigurasi yang diperlukan, termasuk transformasi yang mirip dengan salah satu sampel di bawah ini.
- DCR yang sudah ada. Setelah kluster di-onboard ke Container Insights dan pengumpulan data telah dikonfigurasi, edit DCR-nya untuk menyertakan transformasi menggunakan salah satu metode dalam Mengedit Aturan Pengumpulan Data.
Catatan
Saat ini ada antarmuka pengguna minimal untuk mengedit DCR, yang diperlukan untuk menambahkan transformasi. Dalam kebanyakan kasus, Anda perlu mengedit DCR secara manual. Artikel ini menjelaskan struktur DCR yang akan diterapkan. Lihat Membuat dan mengedit aturan pengumpulan data (DCR) di Azure Monitor untuk panduan tentang cara menerapkan struktur tersebut.
Sumber data
Bagian Sumber data DCR menentukan berbagai jenis data masuk yang akan diproses DCR. Untuk wawasan kontainer, ini adalah ekstensi wawasan kontainer, yang mencakup satu atau lebih yang telah ditentukan sebelumnya dan dimulai dengan awalan streams
.
Daftar aliran wawasan kontainer dalam DCR bergantung pada prasetel Biaya yang Anda pilih untuk kluster. Jika Anda mengumpulkan semua tabel, DCR akan menggunakan aliran Microsoft-ContainerInsights-Group-Default
, yang merupakan aliran grup yang menyertakan semua aliran yang tercantum dalam Stream values. Anda harus mengubahnya menjadi aliran individual jika Anda akan menggunakan transformasi. Pengaturan prasetel biaya lainnya sudah akan menggunakan aliran individual.
Sampel di bawah ini menunjukkan Microsoft-ContainerInsights-Group-Default
stream.
Lihat Sampel DCR untuk contoh yang menggunakan stream individu.
"dataSources": {
"extensions": [
{
"streams": [
"Microsoft-ContainerInsights-Group-Default"
],
"name": "ContainerInsightsExtension",
"extensionName": "ContainerInsights",
"extensionSettings": {
"dataCollectionSettings": {
"interval": "1m",
"namespaceFilteringMode": "Off",
"namespaces": null,
"enableContainerLogV2": true
}
}
}
]
}
Aliran data
Bagian Aliran data DCR mencocokkan aliran dengan tujuan yang ditentukan di bagian destinations
DCR. Nama tabel tidak harus ditentukan untuk aliran yang diketahui jika data dikirim ke tabel default. Aliran yang tidak memerlukan transformasi dapat dikelompokkan bersama dalam satu entri yang hanya mencakup tujuan ruang kerja. Masing-masing akan dikirim ke tabel defaultnya.
Buat entri terpisah untuk aliran yang memerlukan transformasi. Ini harus mencakup tujuan ruang kerja dan properti transformKql
. Jika Anda mengirim data ke tabel alternatif, maka Anda perlu menyertakan outputStream
properti yang menentukan nama tabel tujuan.
Sampel di bawah ini menunjukkan bagian dataFlows
untuk satu aliran dengan transformasi.
Lihat Sampel DCR untuk beberapa aliran data dalam satu DCR.
"dataFlows": [
{
"streams": [
"Microsoft-ContainerLogV2"
],
"destinations": [
"ciworkspace"
],
"transformKql": "source | where PodNamespace == 'kube-system'"
}
]
Sampel DCR
Penyaringan data
Contoh pertama memfilter data dari ContainerLogV2
berdasarkan kolom LogLevel
. Hanya rekaman dengan LogLevel
atau error
critical
yang akan dikumpulkan karena ini adalah entri yang mungkin Anda gunakan untuk memperingatkan dan mengidentifikasi masalah dalam kluster. Mengumpulkan dan menyimpan tingkat lain seperti info
dan debug
menghasilkan biaya tanpa nilai yang signifikan.
Anda bisa mengambil rekaman ini menggunakan kueri log berikut.
ContainerLogV2 | where LogLevel in ('error', 'critical')
Logika ini diperlihatkan dalam diagram berikut.
Dalam transformasi, nama source
tabel digunakan untuk mewakili data masuk. Berikut ini adalah kueri yang dimodifikasi untuk digunakan dalam transformasi.
source | where LogLevel in ('error', 'critical')
Sampel berikut menunjukkan transformasi ini ditambahkan ke DCR Container Insights. Perhatikan bahwa aliran data terpisah digunakan untuk Microsoft-ContainerLogV2
karena ini adalah satu-satunya aliran masuk yang harus diaplikasikan transformasi. Aliran data terpisah digunakan untuk aliran lain.
{
"properties": {
"location": "eastus2",
"kind": "Linux",
"dataSources": {
"syslog": [],
"extensions": [
{
"streams": [
"Microsoft-ContainerLogV2",
"Microsoft-KubeEvents",
"Microsoft-KubePodInventory"
],
"extensionName": "ContainerInsights",
"extensionSettings": {
"dataCollectionSettings": {
"interval": "1m",
"namespaceFilteringMode": "Off",
"enableContainerLogV2": true
}
},
"name": "ContainerInsightsExtension"
}
]
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group/providers/microsoft.operationalinsights/workspaces/my-workspace",
"workspaceId": "00000000-0000-0000-0000-000000000000",
"name": "ciworkspace"
}
]
},
"dataFlows": [
{
"streams": [
"Microsoft-KubeEvents",
"Microsoft-KubePodInventory"
],
"destinations": [
"ciworkspace"
],
},
{
"streams": [
"Microsoft-ContainerLogV2"
],
"destinations": [
"ciworkspace"
],
"transformKql": "source | where LogLevel in ('error', 'critical')"
}
],
},
}
Mengirim data ke tabel yang berbeda
Dalam contoh di atas, hanya rekaman yang memiliki LogLevel
bernilai error
atau critical
yang dikumpulkan. Strategi alternatif alih-alih tidak mengumpulkan rekaman ini sama sekali adalah mengonfigurasi ContainerLogV2 untuk log Dasar dan mengirim rekaman ini ke tabel alternatif.
Untuk strategi ini, diperlukan dua transformasi. Transformasi pertama mengirimkan rekaman dengan LogLevel
atau error
critical
ke tabel kustom bernama ContainerLogV2_CL
. Transformasi kedua mengirimkan rekaman lain ke standar ContainerLogV2
. Kueri untuk masing-masing ditunjukkan di bawah ini menggunakan source
untuk data masuk seperti yang dijelaskan dalam contoh sebelumnya.
# Return error and critical logs
source | where LogLevel in ('error', 'critical')
# Return logs that aren't error or critical
source | where LogLevel !in ('error', 'critical')
Logika ini diperlihatkan dalam diagram berikut.
Penting
Sebelum menginstal DCR dalam sampel ini, Anda harus membuat tabel baru dengan skema ContainerLogV2
yang sama dengan . Beri nama ContainerLogV2_CL
. Konfigurasikan ContainerLogV2 untuk log dasar.
Sampel berikut menunjukkan transformasi ini ditambahkan ke DCR Container Insights. Ada dua aliran data untuk Microsoft-ContainerLogV2
dalam DCR ini, satu untuk setiap transformasi. Yang pertama dikirim ke tabel default yang tidak perlu Anda tentukan nama tabelnya. Yang kedua memerlukan outputStream
properti untuk menentukan tabel tujuan.
{
"properties": {
"location": "eastus2",
"kind": "Linux",
"dataSources": {
"syslog": [],
"extensions": [
{
"streams": [
"Microsoft-ContainerLogV2",
"Microsoft-KubeEvents",
"Microsoft-KubePodInventory"
],
"extensionName": "ContainerInsights",
"extensionSettings": {
"dataCollectionSettings": {
"interval": "1m",
"namespaceFilteringMode": "Off",
"enableContainerLogV2": true
}
},
"name": "ContainerInsightsExtension"
}
]
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group/providers/microsoft.operationalinsights/workspaces/my-workspace",
"workspaceId": "00000000-0000-0000-0000-000000000000",
"name": "ciworkspace"
}
]
},
"dataFlows": [
{
"streams": [
"Microsoft-KubeEvents",
"Microsoft-KubePodInventory"
],
"destinations": [
"ciworkspace"
],
},
{
"streams": [
"Microsoft-ContainerLogV2"
],
"destinations": [
"ciworkspace"
],
"transformKql": "source | where LogLevel !in ('error', 'critical')"
},
{
"streams": [
"Microsoft-ContainerLogV2"
],
"destinations": [
"ciworkspace"
],
"transformKql": "source | where LogLevel in ('error','critical')",
"outputStream": "Custom-ContainerLogV2_CL"
}
],
},
}
Langkah berikutnya
- Baca selengkapnya tentang transformasi dan aturan pengumpulan data di Azure Monitor.