Share via


Syslog-probleemoplossingsgids voor Azure Monitor Agent voor Linux

Let op

Dit artikel verwijst naar CentOS, een Linux-distributie met de EOL-status (End Of Life). Overweeg uw gebruik en planning dienovereenkomstig. Zie de Richtlijnen voor het einde van de levensduur van CentOS voor meer informatie.

Overzicht van Azure Monitor Agent voor Linux Syslog-verzameling en ondersteunde RFC-standaarden:

  • Azure Monitor Agent installeert een uitvoerconfiguratie voor de syslog-daemon van het systeem tijdens het installatieproces. Het configuratiebestand geeft de manier aan waarop gebeurtenissen stromen tussen de Syslog-daemon en De Azure Monitor-agent.
  • Voor rsyslog (de meeste Linux-distributies) is /etc/rsyslog.d/10-azuremonitoragent-omfwd.confhet configuratiebestand. Voor syslog-ngis het configuratiebestand /etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf.
  • Azure Monitor Agent luistert naar een TCP-poort om gebeurtenissen van rsyslog / syslog-ngte ontvangen. De poort voor deze communicatie wordt geregistreerd bij /etc/opt/microsoft/azuremonitoragent/config-cache/syslog.port.

    Notitie

    Voordat Azure Monitor Agent versie 1.28 werd gebruikt, werd een Unix-domeinsocket gebruikt in plaats van tcp-poort om gebeurtenissen van rsyslog te ontvangen. omfwd de uitvoermodule in rsyslog biedt mechanismen voor spooling en opnieuw proberen voor verbeterde betrouwbaarheid.

  • De Syslog-daemon maakt gebruik van wachtrijen wanneer de opname van de Azure Monitor-agent is vertraagd of wanneer de Azure Monitor-agent niet bereikbaar is.
  • Azure Monitor Agent neemt Syslog-gebeurtenissen op via de eerder genoemde socket en filtert deze op basis van de combinatie van faciliteit of ernst van de DCR-configuratie (Data Collection Rule) in /etc/opt/microsoft/azuremonitoragent/config-cache/configchunks/. Een facility of severity meer aanwezig in de DCR wordt verwijderd.
  • De Azure Monitor-agent probeert gebeurtenissen te parseren in overeenstemming met RFC3164 en RFC5424. Het weet ook hoe de berichtindelingen op deze website moeten worden geparseerd.
  • Azure Monitor Agent identificeert het doeleindpunt voor Syslog-gebeurtenissen uit de DCR-configuratie en probeert de gebeurtenissen te uploaden.

    Notitie

    Azure Monitor Agent maakt standaard gebruik van lokale persistentie. Alle gebeurtenissen ontvangen van rsyslog of syslog-ng worden in /var/opt/microsoft/azuremonitoragent/events de wachtrij geplaatst als ze niet kunnen worden geüpload.

Problemen

Mogelijk ondervindt u de volgende problemen.

Rsyslog-gegevens worden niet geüpload vanwege een probleem met volledige schijfruimte in Azure Monitor Agent voor Linux

In de volgende secties wordt het probleem beschreven.

Symptoom

Syslog-gegevens worden niet geüpload: wanneer u de foutenlogboeken /var/opt/microsoft/azuremonitoragent/log/mdsd.errinspecteert, ziet u vermeldingen over fout tijdens het invoegen van item in lokale permanente opslag... Er is geen ruimte meer beschikbaar op het apparaat dat lijkt op het volgende fragment:

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

Oorzaak

Azure Monitor Agent voor Linux buffert gebeurtenissen /var/opt/microsoft/azuremonitoragent/events vóór opname. Bij een standaardinstallatie van Azure Monitor Agent voor Linux neemt deze map ~650 MB schijfruimte inactief. De grootte op de schijf neemt toe wanneer deze wordt belast met langdurige logboekregistratie. Het wordt ongeveer elke 60 seconden opgeschoond en vermindert terug naar ~650 MB wanneer de belasting weer inactief wordt.

Bevestig het probleem van een volledige schijf

De df opdracht toont bijna geen ruimte beschikbaar op /dev/sda1, zoals wordt weergegeven in de volgende uitvoer. Houd er rekening mee dat u het regelitem moet onderzoeken dat overeenkomt met de logboekmap (bijvoorbeeld /var/log of/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

U kunt de du opdracht gebruiken om de schijf te controleren om te bepalen welke bestanden ervoor zorgen dat de schijf vol is. Voorbeeld:

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

In sommige gevallen du kunt u mogelijk geen grote bestanden of mappen rapporteren. Het kan zijn dat een bestand dat is gemarkeerd als (verwijderd) de ruimte in beslag neemt. Dit probleem kan optreden wanneer een ander proces een bestand heeft verwijderd, maar er nog steeds een proces met het bestand is geopend. U kunt de lsof opdracht gebruiken om te controleren op dergelijke bestanden. In het volgende voorbeeld zien we dat /var/log/syslog deze is gemarkeerd als verwijderd, maar dat neemt 3,6 GB schijfruimte in beslag. Het is niet verwijderd omdat er nog steeds een proces met PID 1484 is geopend.

   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)

Standaardconfiguratie Rsyslog registreert alle faciliteiten in /var/log/

Op sommige populaire distributies (bijvoorbeeld Ubuntu 18.04 LTS) wordt rsyslog geleverd met een standaardconfiguratiebestand (/etc/rsyslog.d/50-default.conf), waarmee gebeurtenissen van bijna alle faciliteiten naar schijf worden geregistreerd./var/log/syslog Syslog-gebeurtenissen uit de RedHat-/CentOS-serie worden opgeslagen onder /var/log/ maar in een ander bestand: /var/log/messages.

Azure Monitor-agent is niet afhankelijk van Syslog-gebeurtenissen die worden geregistreerd bij /var/log/. In plaats daarvan configureert het de rsyslog-service om gebeurtenissen rechtstreeks via een TCP-poort door te sturen naar het azuremonitoragent serviceproces (mdsd).

Oplossing: Hoge volumefaciliteiten verwijderen uit /etc/rsyslog.d/50-default.conf

Als u een groot logboekvolume verzendt via rsyslog en uw systeem is ingesteld om gebeurtenissen voor deze faciliteiten te registreren, kunt u overwegen de standaardconfiguratie rsyslog te wijzigen om logboekregistratie te voorkomen en op te slaan onder /var/log/. De gebeurtenissen voor deze faciliteit worden nog steeds doorgestuurd naar De Azure Monitor-agent omdat rsyslog een andere configuratie gebruikt voor het doorsturen in /etc/rsyslog.d/10-azuremonitoragent-omfwd.conf.

  1. Als u bijvoorbeeld gebeurtenissen wilt verwijderen van local4 het aanmelden bij /var/log/syslog of /var/log/messages, wijzigt u deze regel /etc/rsyslog.d/50-default.conf uit dit fragment:

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

    Aan dit fragment (toevoegen local4.none;):

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