Felsökningsguide för Syslog för Azure Monitor Agent för Linux

Varning

Den här artikeln refererar till CentOS, en Linux-distribution som har statusen End Of Life (EOL). Överväg att använda och planera i enlighet med detta. Mer information finns i CentOS End Of Life-vägledningen.

Översikt över Azure Monitor Agent för Linux Syslog-samling och RFC-standarder som stöds:

  • Azure Monitor Agent installerar en utdatakonfiguration för systemets Syslog-daemon under installationsprocessen. Konfigurationsfilen anger hur händelser flödar mellan Syslog-daemon och Azure Monitor Agent.
  • För rsyslog (de flesta Linux-distributioner) är /etc/rsyslog.d/10-azuremonitoragent-omfwd.confkonfigurationsfilen . För syslog-ngär /etc/syslog-ng/conf.d/azuremonitoragent-tcp.confkonfigurationsfilen .
  • Azure Monitor-agenten lyssnar på en TCP-port för att ta emot händelser från rsyslog / syslog-ng. Porten för den här kommunikationen loggas på /etc/opt/microsoft/azuremonitoragent/config-cache/syslog.port.

    Kommentar

    Före Azure Monitor Agent version 1.28 använde den en Unix-domänsocket i stället för TCP-port för att ta emot händelser från rsyslog. omfwd utdatamodul i rsyslog erbjuder mekanismer för poolning och återförsök för bättre tillförlitlighet.

  • Syslog-daemonen använder köer när Azure Monitor Agent-inmatning fördröjs eller när Azure Monitor-agenten inte kan nås.
  • Azure Monitor Agent matar in Syslog-händelser via den tidigare nämnda socketen och filtrerar dem baserat på en kombination av anläggning eller allvarlighetsgrad från konfigurationen av datainsamlingsregeln (DCR) i /etc/opt/microsoft/azuremonitoragent/config-cache/configchunks/. Alla facility eller severity som inte finns i DCR tas bort.
  • Azure Monitor Agent försöker parsa händelser i enlighet med RFC3164 och RFC5424. Den vet också hur du parsar de meddelandeformat som anges på den här webbplatsen.
  • Azure Monitor Agent identifierar målslutpunkten för Syslog-händelser från DCR-konfigurationen och försöker ladda upp händelserna.

    Kommentar

    Azure Monitor-agenten använder lokal beständighet som standard. Alla händelser som tas emot från rsyslog eller syslog-ng placeras i /var/opt/microsoft/azuremonitoragent/events kö om de inte kan laddas upp.

Problem

Du kan stöta på följande problem.

Rsyslog-data laddas inte upp på grund av ett fullständigt diskutrymmesproblem i Azure Monitor-agenten för Linux

I nästa avsnitt beskrivs problemet.

Symptom

Syslog-data laddas inte upp: När du inspekterar felloggarna på /var/opt/microsoft/azuremonitoragent/log/mdsd.errvisas poster om Fel vid infogning av objekt i lokalt beständigt lager... Det finns inget utrymme kvar på enheten som liknar följande kodfragment:

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

Orsak

Azure Monitor-agenten för Linux buffrar händelser till /var/opt/microsoft/azuremonitoragent/events före inmatning. I en standardinstallation av Azure Monitor Agent för Linux tar den här katalogen cirka 650 MB diskutrymme vid inaktivitet. Storleken på disken ökar när den är under kontinuerlig loggningsbelastning. Den rensas ungefär var 60:e sekund och minskar till ~650 MB när belastningen återgår till inaktiv.

Bekräfta problemet med en fullständig disk

Kommandot df visar nästan inget tillgängligt utrymme på /dev/sda1, vilket visas i följande utdata. Observera att du bör undersöka det radobjekt som korrelerar med loggkatalogen (till exempel /var/log eller /var /).

   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

Du kan använda du kommandot för att kontrollera disken för att avgöra vilka filer som gör att disken blir full. Till exempel:

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

I vissa fall du kanske du inte rapporterar några stora filer eller kataloger. Det kan vara möjligt att en fil markerad som (borttagen) tar upp utrymmet. Det här problemet kan inträffa när någon annan process har försökt ta bort en fil, men en process med filen är fortfarande öppen. Du kan använda lsof kommandot för att söka efter sådana filer. I följande exempel ser vi att /var/log/syslog det är markerat som borttaget, men det tar upp 3,6 GB diskutrymme. Den har inte tagits bort eftersom en process med PID 1484 fortfarande har filen öppen.

   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)

Rsyslog standardkonfiguration loggar alla anläggningar till /var/log/

På några populära distributioner (till exempel Ubuntu 18.04 LTS) levereras rsyslog med en standardkonfigurationsfil (/etc/rsyslog.d/50-default.conf), som loggar händelser från nästan alla anläggningar till disk på /var/log/syslog. RedHat/CentOS-familjen Syslog-händelser lagras under /var/log/ men i en annan fil: /var/log/messages.

Azure Monitor-agenten förlitar sig inte på syslog-händelser som loggas till /var/log/. I stället konfigureras rsyslog-tjänsten för att vidarebefordra händelser via en TCP-port direkt till azuremonitoragent tjänstprocessen (mdsd).

Korrigering: Ta bort högvolymanläggningar från /etc/rsyslog.d/50-default.conf

Om du skickar en hög loggvolym via rsyslog och systemet har konfigurerats för att logga händelser för dessa anläggningar kan du överväga att ändra standardkonfigurationen för rsyslog för att undvika loggning och lagra dem under /var/log/. Händelserna för den här anläggningen vidarebefordras fortfarande till Azure Monitor Agent eftersom rsyslog använder en annan konfiguration för vidarebefordran som placeras i /etc/rsyslog.d/10-azuremonitoragent-omfwd.conf.

  1. Om du till exempel vill ta bort local4 händelser från att loggas på /var/log/syslog eller /var/log/messagesändrar du den här raden i /etc/rsyslog.d/50-default.conf från det här kodfragmentet:

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

    I det här kodfragmentet (lägg till local4.none;):

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