Mengumpulkan log dari teks atau file JSON dengan Agen Azure Monitor

Banyak aplikasi mencatat informasi ke teks atau file JSON alih-alih layanan pengelogan standar seperti log Peristiwa Windows atau Syslog. Artikel ini menjelaskan cara mengumpulkan data log dari teks dan file JSON pada komputer yang dipantau menggunakan Agen Azure Monitor dengan membuat aturan pengumpulan data (DCR).

Catatan

Penyerapan JSON dalam Pratinjau saat ini.

Prasyarat

Untuk menyelesaikan prosedur ini, Anda memerlukan:

  • Ruang kerja Log Analitik tempat Anda memiliki setidaknya hak kontributor.

  • Satu atau dua titik akhir pengumpulan data, tergantung pada apakah komputer virtual dan ruang kerja Analitik Log Anda berada di wilayah yang sama.

    Untuk informasi selengkapnya, lihat Cara menyiapkan titik akhir pengumpulan data berdasarkan penyebaran Anda.

  • Izin untuk membuat objek Aturan Pengumpulan Data di ruang kerja.

  • Teks JSON harus dimuat dalam satu baris untuk penyerapan yang tepat. Format isi JSON (file) tidak didukung.

  • Komputer Virtual, Virtual Machine Scale Set, server lokal dengan dukungan Arc, atau Agen Pemantauan Azure pada klien lokal Windows yang menulis log ke teks atau file JSON.

    Persyaratan file teks dan JSON dan praktik terbaik:

    • Simpan file di drive lokal komputer tempat Agen Azure Monitor berjalan dan di direktori yang sedang dipantau.
    • Lakukan delineate akhir rekaman dengan akhir baris.
    • Gunakan pengodean ASCII atau UTF-8. Format lain seperti UTF-16 tidak didukung.
    • Buat file log baru setiap hari sehingga Anda dapat menghapus file lama dengan mudah.
    • Bersihkan semua file log di direktori yang dipantau. Melacak banyak file log dapat meningkatkan penggunaan CPU agen dan Memori. Tunggu setidaknya 2 hari untuk memungkinkan cukup waktu untuk semua log diproses.
    • Jangan timpa file yang sudah ada dengan rekaman baru. Anda seharusnya hanya menambahkan rekaman baru ke akhir file. Penimpaan akan menyebabkan kehilangan data.
    • Jangan ganti nama file menjadi nama baru lalu buka file baru dengan nama yang sama. Ini dapat menyebabkan kehilangan data.
    • Jangan ganti nama atau salin file log besar yang cocok dengan pola pemindaian file ke direktori yang dipantau. Jika harus, jangan melebihi 50MB per menit.
    • Jangan ganti nama file yang cocok dengan pola pemindaian file dengan nama baru yang juga cocok dengan pola pemindaian file. Ini akan menyebabkan data duplikat diserap.

Membuat tabel kustom

Tabel yang dibuat dalam skrip memiliki dua kolom:

  • TimeGenerated (tanggalwaktu) [Diperlukan]
  • RawData (String) [Opsional jika skema tabel disediakan]
  • 'FilePath' (string) [Opsional]
  • YourOptionalColumn (String) [Opsional]

Skema tabel default untuk data log yang dikumpulkan dari file teks adalah 'TimeGenerated' dan 'RawData'. Menambahkan 'FilePath' ke salah satu tim bersifat opsional. Jika Anda mengetahui skema akhir atau sumber Anda adalah log JSON, Anda dapat menambahkan kolom akhir dalam skrip sebelum membuat tabel. Anda selalu dapat menambahkan kolom menggunakan UI tabel Analitik Log nanti.

Nama kolom dan atribut JSON Anda harus sama persis untuk mengurai secara otomatis ke dalam tabel. Kolom dan atribut JSON peka huruf besar/kecil. Misalnya Rawdata tidak akan mengumpulkan data peristiwa. Harus .RawData Penyerapan akan menghilangkan atribut JSON yang tidak memiliki kolom yang sesuai.

Cara term mudah untuk melakukan panggilan REST adalah dari baris perintah Azure Cloud PowerShell (CLI). Untuk membuka shell, buka portal Azure, tekan tombol Cloud Shell, dan pilih PowerShell. Jika ini pertama kalinya Anda menggunakan Azure Cloud PowerShell, Anda harus menelusuri wizard konfigurasi satu kali.

Salin dan tempel skrip ini ke PowerShell untuk membuat tabel di ruang kerja Anda:

$tableParams = @'
{
    "properties": {
        "schema": {
               "name": "{TableName}_CL",
               "columns": [
        {
                                "name": "TimeGenerated",
                                "type": "DateTime"
                        }, 
                       {
                                "name": "RawData",
                                "type": "String"
                       },
                       {
                                "name": "FilePath",
                                "type": "String"
                       },
                      {
                                "name": `"YourOptionalColumn",
                                "type": "String"
                     }
              ]
        }
    }
}
'@

Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{WorkspaceName}/tables/{TableName}_CL?api-version=2021-12-01-preview" -Method PUT -payload $tableParams

Anda akan menerima respons dan detail 200 tentang tabel yang baru saja Anda buat.

Membuat aturan pengumpulan data untuk teks atau file JSON

Aturan pengumpulan data mendefinisikan:

  • File log sumber mana yang dipindai Agen Azure Monitor untuk peristiwa baru.
  • Cara Azure Monitor mengubah peristiwa selama penyerapan.
  • Ruang kerja dan tabel Analitik Log tujuan tempat Azure Monitor mengirim data.

Anda dapat menentukan aturan pengumpulan data untuk mengirim data dari beberapa komputer ke beberapa ruang kerja Analitik Log, termasuk ruang kerja di wilayah atau penyewa yang berbeda. Buat aturan pengumpulan data di wilayah yang sama dengan ruang kerja Analitik Log Anda.

Catatan

Untuk mengirim data di seluruh penyewa, Anda harus terlebih dahulu mengaktifkan Azure Lighthouse.

Untuk mengurai file log JSON Anda secara otomatis ke dalam tabel kustom, ikuti langkah-langkah templat Resource Manager. Data teks dapat diubah menjadi kolom menggunakan transformasi waktu penyerapan.

Untuk membuat aturan pengumpulan data di portal Azure:

  1. Pada menu Monitor , pilih Aturan Pengumpulan Data.

  2. Pilih Buat untuk membuat aturan dan asosiasi pengumpulan data baru.

    Cuplikan layar yang memperlihatkan tombol Buat pada layar Aturan Pengumpulan Data.

  3. Masukkan Nama aturan dan tentukan langganan, Grup Sumber Daya, Wilayah, Jenis Platform, dan Titik akhir pengumpulan data:

    • Wilayah menentukan lokasi DCR akan dibuat. Komputer virtual dan asosiasinya dapat berada di setiap grup langganan atau sumber daya di penyewa.
    • Jenis Platform menentukan jenis sumber daya yang dapat diterapkan aturan ini. Opsi Kustom memungkinkan jenis Windows dan Linux.
    • Titik Akhir Pengumpulan Data menentukan titik akhir pengumpulan data tempat Agen Azure Monitor mengirim data yang dikumpulkan. Titik akhir pengumpulan data ini harus berada di wilayah yang sama dengan ruang kerja Analitik Log. Untuk informasi selengkapnya, lihat Cara menyiapkan titik akhir pengumpulan data berdasarkan penyebaran Anda.

    Cuplikan layar yang memperlihatkan tab Dasar dari layar Aturan Pengumpulan Data.

  4. Pada tab Sumber Daya :

    1. Pilih + Tambahkan sumber daya dan kaitkan sumber daya ke aturan pengumpulan data. Sumber daya dapat berupa komputer virtual, Virtual Machine Scale Sets, dan Azure Arc untuk server. portal Azure menginstal Agen Azure Monitor pada sumber daya yang belum menginstalnya.

      Penting

      Portal memungkinkan identitas terkelola yang ditetapkan sistem pada sumber daya target, bersama dengan identitas yang ditetapkan pengguna yang ada, jika ada. Untuk aplikasi yang ada, kecuali Anda menentukan identitas yang ditetapkan pengguna dalam permintaan, komputer default menggunakan identitas yang ditetapkan sistem sebagai gantinya.

    2. Pilih Aktifkan Titik Akhir Pengumpulan Data.

    3. Secara opsional, Anda dapat memilih titik akhir pengumpulan data untuk setiap komputer virtual yang terkait dengan aturan pengumpulan data. Sebagian besar waktu Anda hanya harus menggunakan default.

      Titik akhir pengumpulan data ini mengirim file konfigurasi ke komputer virtual dan harus berada di wilayah yang sama dengan komputer virtual. Untuk informasi selengkapnya, lihat Cara menyiapkan titik akhir pengumpulan data berdasarkan penyebaran Anda.

    Cuplikan layar yang memperlihatkan tab Sumber Daya dari layar Aturan Pengumpulan Data.

  5. Pada tab Kumpulkan dan kirim, klik Tambahkan sumber data untuk menambahkan sumber data dan set tujuan.

  6. Dari menu dropdown Jenis sumber data, pilih Log Teks Kustom atau Log JSON.

  7. Tentukan informasi berikut:

    • Pola File - Mengidentifikasi tempat file log berada di disk lokal. Anda dapat memasukkan beberapa pola file yang dipisahkan oleh koma (di Linux, AMA versi 1.26 atau yang lebih tinggi diperlukan untuk mengumpulkan dari daftar pola file yang dipisahkan koma).

      Contoh input yang valid:

      • 20220122-MyLog.txt
      • ProcessA_MyLog.txt
      • ErrorsOnly_MyLog.txt, WarningOnly_MyLog.txt

      Catatan

      Beberapa file log dengan jenis yang sama biasanya ada di direktori yang sama. Misalnya, komputer mungkin membuat file baru setiap hari untuk mencegah file log tumbuh terlalu besar. Untuk mengumpulkan data log dalam skenario ini, Anda dapat menggunakan kartubebas file. Gunakan format C:\directoryA\directoryB\*MyLog.txt untuk Windows dan /var/*.log untuk Linux. Tidak ada dukungan untuk kartubebas direktori.

    • Nama tabel - Nama tabel tujuan yang Anda buat di Ruang Kerja Analitik Log Anda. Untuk informasi selengkapnya, lihat Membuat tabel kustom.

    • Pemisah rekaman - Akan digunakan di masa mendatang untuk memungkinkan pemisah selain akhir baris yang saat ini didukung (/r/n).

    • Transformasi - Tambahkan transformasi waktu penyerapan atau biarkan sebagai sumber jika Anda tidak perlu mengubah data yang dikumpulkan.

  8. Pada tab Tujuan, tambahkan satu atau beberapa tujuan untuk sumber data. Anda dapat memilih beberapa tujuan dari jenis yang sama atau berbeda. Misalnya, Anda dapat memilih beberapa ruang kerja Analitik Log, yang juga dikenal sebagai multihoming.

    Cuplikan layar yang memperlihatkan tab tujuan dari layar Tambahkan sumber data untuk aturan pengumpulan data di portal Azure.

  9. Pilih Tinjau + buat untuk meninjau detail aturan pengumpulan data dan asosiasi dengan sekumpulan komputer virtual.

  10. Pilih Buat untuk membuat aturan pengumpulan data.

Catatan

Diperlukan waktu hingga 10 menit agar data dikirim ke tujuan setelah Anda membuat aturan pengumpulan data.

Kueri log sampel

Nama kolom yang digunakan di sini misalnya saja. Nama kolom untuk log Anda kemungkinan besar akan berbeda.

  • Hitung jumlah peristiwa menurut kode.

    MyApp_CL
    | summarize count() by code
    

Aturan pemberitahuan sampel

  • Buat aturan pemberitahuan pada setiap peristiwa kesalahan.

    MyApp_CL
    | where status == "Error"
    | summarize AggregatedValue = count() by Computer, bin(TimeGenerated, 15m)
    

Pecahkan masalah

Gunakan langkah-langkah berikut untuk memecahkan masalah pengumpulan log dari teks dan file JSON.

Periksa apakah Anda telah menyerap data ke tabel kustom Anda

Mulailah dengan memeriksa apakah ada rekaman yang telah diserap ke dalam tabel log kustom Anda dengan menjalankan kueri berikut di Analitik Log:

<YourCustomTable>_CL
| where TimeGenerated > ago(48h)
| order by TimeGenerated desc

Jika rekaman tidak dikembalikan, periksa bagian lain untuk kemungkinan penyebabnya. Kueri ini mencari entri dalam dua hari terakhir, tetapi Anda dapat mengubah untuk rentang waktu lain. Diperlukan waktu 5-7 menit agar data baru muncul di tabel Anda. Agen Azure Monitor hanya mengumpulkan data yang ditulis ke teks atau file JSON setelah Anda mengaitkan aturan pengumpulan data dengan komputer virtual.

Verifikasi bahwa Anda membuat tabel kustom

Anda harus membuat tabel log kustom di ruang kerja Analitik Log sebelum dapat mengirim data ke dalamnya.

Verifikasi bahwa agen berhasil mengirim heartbeat

Verifikasi bahwa agen Azure Monitor berkomunikasi dengan benar dengan menjalankan kueri berikut di Analitik Log untuk memeriksa apakah ada rekaman dalam tabel Heartbeat.

Heartbeat
| where TimeGenerated > ago(24h)
| where Computer has "<computer name>"
| project TimeGenerated, Category, Version
| order by TimeGenerated desc

Verifikasi bahwa Anda menentukan lokasi log yang benar dalam aturan pengumpulan data

Aturan pengumpulan data akan memiliki bagian yang mirip dengan berikut ini. Elemen filePatterns menentukan jalur ke file log untuk dikumpulkan dari komputer agen. Periksa komputer agen untuk memverifikasi bahwa ini benar.

"dataSources": [{
            "configuration": {
                "filePatterns": ["C:\\JavaLogs\\*.log"],
                "format": "text",
                "settings": {
                    "text": {
                        "recordStartTimestampFormat": "yyyy-MM-ddTHH:mm:ssK"
                    }
                }
            },
            "id": "myTabularLogDataSource",
            "kind": "logFile",
            "streams": [{
                    "stream": "Custom-TabularData-ABC"
                }
            ],
            "sendToChannels": ["gigl-dce-00000000000000000000000000000000"]
        }
    ]

Pola file ini harus sesuai dengan log pada komputer agen.

Cuplikan layar file log teks pada mesin agen.

Menggunakan Pemecah Masalah Agen Azure Monitor

Gunakan Pemecah Masalah Agen Azure Monitor untuk mencari masalah umum dan berbagi hasil dengan Microsoft.

Verifikasi bahwa log sedang diisi

Agen hanya akan mengumpulkan konten baru yang ditulis ke file log yang sedang dikumpulkan. Jika Anda bereksperimen dengan log koleksi dari teks atau file JSON, Anda dapat menggunakan skrip berikut untuk menghasilkan log sampel.

# This script writes a new log entry at the specified interval indefinitely.
# Usage:
# .\GenerateCustomLogs.ps1 [interval to sleep]
#
# Press Ctrl+C to terminate script.
#
# Example:
# .\ GenerateCustomLogs.ps1 5

param (
    [Parameter(Mandatory=$true)][int]$sleepSeconds
)

$logFolder = "c:\\JavaLogs"
if (!(Test-Path -Path $logFolder))
{
    mkdir $logFolder
}

$logFileName = "TestLog-$(Get-Date -format yyyyMMddhhmm).log"
do
{
    $count++
    $randomContent = New-Guid
    $logRecord = "$(Get-Date -format s)Z Record number $count with random content $randomContent"
    $logRecord | Out-File "$logFolder\\$logFileName" -Encoding utf8 -Append
    Start-Sleep $sleepSeconds
}
while ($true)

Langkah berikutnya

Pelajari lebih lanjut tentang: