Memecahkan masalah syslog dengan Agen Azure Monitor di Linux

Gunakan artikel ini untuk mendiagnosis dan mengatasi masalah di mana peristiwa syslog pada VM Linux tidak dikumpulkan atau diteruskan ke ruang kerja Log Analytics oleh agen Azure Monitor.

Selama penginstalan, Azure Monitor Agent menginstal konfigurasi output untuk daemon syslog sistem. Konfigurasi ini menentukan cara meneruskan peristiwa dari daemon ke Agen Azure Monitor. Anda dapat menemukannya di:

  • /etc/rsyslog.d/10-azuremonitoragent-omfwd.conf untuk rsyslog (sebagian besar distribusi Linux)
  • /etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf untuk syslog-ng

Azure Monitor Agent mendengarkan port TCP (dicatat di /etc/opt/microsoft/azuremonitoragent/config-cache/syslog.port) untuk menerima peristiwa dari rsyslog atau syslog-ng. Ini memfilter peristiwa ini berdasarkan nilai fasilitas atau tingkat keparahan yang ditentukan dalam aturan pengumpulan data (DCR) yang terletak di /etc/opt/microsoft/azuremonitoragent/config-cache/configchunks/. Agen menghilangkan peristiwa yang tidak cocok dengan konfigurasi DCR.

Catatan

Sebelum versi 1.28, Azure Monitor Agent menggunakan soket domain Unix alih-alih port TCP untuk menerima peristiwa dari rsyslog. Modul omfwd output di rsyslog menawarkan mekanisme penyimpanan sementara dan percobaan ulang guna meningkatkan keandalan.

Azure Monitor Agent mengurai pesan syslog masuk sesuai dengan RFC3164 dan RFC5424 dan juga mendukung format ter. Ini menentukan titik akhir tujuan untuk setiap peristiwa dari DCR dan mencoba mengunggah peristiwa yang sesuai.

Catatan

  • Jika Agen Azure Monitor tidak dapat dijangkau atau mengalami penundaan, daemon syslog menampung peristiwa dengan menggunakan antrean internalnya.
  • Jika Agen Azure Monitor gagal mengunggah peristiwa yang diterimanya dari rsyslog atau syslog-ng, agen tersebut mengantrekannya di /var/opt/microsoft/azuremonitoragent/events dengan menggunakan mekanisme persistensi lokalnya.

Mendiagnosis kegagalan unggahan syslog

Jika Agen Azure Monitor berhasil menerima peristiwa syslog dari rsyslog atau syslog-ng, tetapi data tidak muncul di ruang kerja Log Analytics, penyebab paling umum terkait dengan konektivitas, konfigurasi, atau autentikasi - bukan penggunaan disk lokal.

Penyebab umumnya meliputi:

  • Aturan Pengumpulan Data (DCR) tidak terkait dengan komputer
    Jika Anda tidak mengaitkan DCR (atau jika Anda mengaitkan DCR yang salah), agen Azure Monitor tidak tahu ke mana harus mengirim data.

  • DCR tidak menyertakan sumber data syslog atau fasilitas/tingkat keparahan tidak cocok
    Dalam hal ini, Azure Monitor Agent menghilangkan peristiwa setelah menerimanya.

  • Mesin tidak dapat mencapai titik akhir penyerapan Azure Monitor
    Kondisi ini umumnya disebabkan oleh:

    • Pembatasan firewall keluar
    • Kesalahan konfigurasi proksi
    • Tag layanan yang hilang atau titik akhir yang diperlukan di jaringan terbatas
  • Konfigurasi TLS atau proksi mencegah koneksi keluar
    Jika proksi diperlukan dan tidak dikonfigurasi untuk agen Azure Monitor, upaya pengunggahan gagal.

  • Identitas terkelola atau kredensial Azure yang digunakan oleh agen tidak dapat mengautentikasi
    Kondisi ini dapat terjadi jika ekstensi agen tidak dikonfigurasi secara benar.

Untuk memecahkan masalah pengunggahan dan konektivitas, lihat panduan berikut:

Jika agen Azure Monitor menerima peristiwa syslog tetapi tidak dapat mengunggahnya, biasanya mencatat kesalahan yang terkait dengan konektivitas atau autentikasi di:

/var/opt/microsoft/azuremonitoragent/log/mdsd.err

Data Rsyslog tidak diunggah karena ruang disk penuh

Gejala

Data Syslog tidak diunggah: Saat Anda memeriksa log kesalahan di /var/opt/microsoft/azuremonitoragent/log/mdsd.err, Anda melihat entri tentang Kesalahan saat menyisipkan item ke Penyimpanan persisten lokal ... Tidak ada ruang tersisa pada perangkat ... mirip dengan cuplikan berikut:

2021-11-23T18:15:10.9712760Z: Error while inserting item to Local persistent store syslog.error: IO error: No space left on device: While appending to file: /var/opt/microsoft/azuremonitoragent/events/syslog.error/000555.log: No space left on device

Penyebab

Azure Monitor Agent untuk Linux melakukan buffer peristiwa ke /var/opt/microsoft/azuremonitoragent/events sebelum penyerapan. Pada Azure Monitor Agent default untuk penginstalan Linux, direktori ini membutuhkan sekitar 650 MB ruang disk saat diam. Ukuran pada disk meningkat ketika berada di bawah beban pengelogan berkelanjutan. Ini dibersihkan setiap sekitar 60 detik dan dikurangi kembali menjadi sekitar 650 MB ketika beban kembali diam.

Mengonfirmasi masalah disk penuh

df Perintah menunjukkan hampir tidak ada ruang yang tersedia di /dev/sda1, seperti yang ditunjukkan dalam output berikut. Anda harus memeriksa item baris yang berkorelasi dengan direktori log (misalnya, /var/log, /var, atau /).

df -h
Filesystem Size  Used Avail Use% Mounted on
udev        63G     0   63G   0% /dev
tmpfs       13G  720K   13G   1% /run
/dev/sda1   29G   29G  481M  99% /
tmpfs       63G     0   63G   0% /dev/shm
tmpfs      5.0M     0  5.0M   0% /run/lock
tmpfs       63G     0   63G   0% /sys/fs/cgroup
/dev/sda15 105M  4.4M  100M   5% /boot/efi
/dev/sdb1  251G   61M  239G   1% /mnt
tmpfs       13G     0   13G   0% /run/user/1000

Anda dapat menggunakan du perintah untuk memeriksa disk untuk menentukan file mana yang menyebabkan disk penuh. Contohnya:

cd /var/log
du -h syslog*
6.7G    syslog
18G     syslog.1

Dalam beberapa kasus, du mungkin tidak melaporkan file atau direktori besar apa pun. Ada kemungkinan bahwa file yang ditandai sebagai (dihapus) mengambil ruang. Situasi ini dapat terjadi ketika satu proses mencoba menghapus file, tetapi proses yang berbeda masih membuka file.

Anda dapat menggunakan perintah untuk memeriksa file tersebut lsof . Dalam contoh berikut, Anda melihat bahwa /var/log/syslog ditandai sebagai dihapus tetapi membutuhkan ruang disk 3,6 GB. Ini tidak dihapus karena proses dengan PID 1484 masih membuka file.

sudo lsof +L1
COMMAND   PID   USER   FD   TYPE DEVICE   SIZE/OFF NLINK  NODE NAME
none      849   root  txt    REG    0,1       8632     0 16764 / (deleted)
rsyslogd 1484 syslog   14w   REG    8,1 3601566564     0 35280 /var/log/syslog (deleted)

Konfigurasi default Rsyslog mencatat semua fasilitas ke /var/log/

Pada beberapa distro populer, seperti Ubuntu 18.04 LTS, rsyslog dikirim dengan file konfigurasi default (/etc/rsyslog.d/50-default.conf). Konfigurasi ini mencatat peristiwa dari hampir semua fasilitas ke disk di /var/log/syslog. Peristiwa Syslog keluarga RedHat disimpan di bawah /var/log/ tetapi dalam file yang berbeda: /var/log/messages.

Agent Azure Monitor tidak bergantung pada pencatatan peristiwa Syslog ke /var/log/. Sebaliknya, layanan rsyslog dikonfigurasi untuk meneruskan kejadian melalui port TCP secara langsung ke proses layanan azuremonitoragent (mdsd).

Menghapus fasilitas volume tinggi dari konfigurasi default rsyslog

Jika Anda mengirim volume log tinggi melalui rsyslog dan sistem Anda disiapkan untuk mencatat peristiwa untuk fasilitas ini, pertimbangkan untuk memodifikasi konfigurasi rsyslog default untuk menghindari pengelogan dan menyimpannya di bawah /var/log/. Peristiwa untuk fasilitas ini masih diteruskan ke Azure Monitor Agent karena rsyslog menggunakan konfigurasi yang berbeda untuk penerusan di /etc/rsyslog.d/10-azuremonitoragent-omfwd.conf.

  1. Untuk menghapus local4 peristiwa agar tidak dicatat di /var/log/syslog atau /var/log/messages, ubah baris ini di /etc/rsyslog.d/50-default.conf dari cuplikan ini:

    *.*;auth,authpriv.none          -/var/log/syslog
    

    Ke cuplikan ini (tambahkan local4.none;):

    *.*;local4.none;auth,authpriv.none          -/var/log/syslog
    
  2. sudo systemctl restart rsyslog

Langkah berikutnya

Jika langkah-langkah dalam artikel ini tidak mengatasi masalah Anda, lihat: