Delen via


Syslog-probleemoplossingsgids voor Azure Monitor Agent voor Linux

Azure Monitor Agent installeert een uitvoerconfiguratie voor de Syslog-daemon van het systeem tijdens de installatie. Deze configuratie definieert hoe gebeurtenissen worden doorgestuurd van de daemon naar De Azure Monitor-agent en zich bevinden op:

  • /etc/rsyslog.d/10-azuremonitoragent-omfwd.conf voor rsyslog (de meeste Linux-distributies)
  • /etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf voor syslog-ng

De Azure Monitor-agent luistert op een TCP-poort (aangemeld bij /etc/opt/microsoft/azuremonitoragent/config-cache/syslog.port) om gebeurtenissen te ontvangen van rsyslog of syslog-ng. Deze gebeurtenissen worden gefilterd op basis van faciliteits- of ernstwaarden die zijn gedefinieerd in de gegevensverzamelingsregel (DCR) die zich in /etc/opt/microsoft/azuremonitoragent/config-cache/configchunks/ bevindt. Gebeurtenissen die niet overeenkomen met de DCR-configuratie, worden verwijderd.

Notitie

Vóór versie 1.28 heeft Azure Monitor Agent een Unix-domeinsocket gebruikt in plaats van een TCP-poort om gebeurtenissen van rsyslog te ontvangen. De omfwd uitvoermodule in rsyslog biedt mechanismen voor spooling en opnieuw proberen voor verbeterde betrouwbaarheid.

De Azure Monitor-agent parseert binnenkomende Syslog-berichten op basis van RFC3164 en RFC5424 en ondersteunt ook andere indelingen. Het bepaalt het doeleindpunt voor elke gebeurtenis uit de DCR en probeert ze dienovereenkomstig te uploaden.

Notitie

  • Als de Azure Monitor-agent onbereikbaar is of vertragingen ondervindt, buffert de Syslog-daemon gebeurtenissen met behulp van de interne wachtrijen.

  • Als de Azure Monitor-agent geen gebeurtenissen uploadt die zijn ontvangen van rsyslog of syslog-ng, wordt deze in de wachtrij geplaatst met /var/opt/microsoft/azuremonitoragent/events behulp van het lokale persistentiemechanisme.

Problemen

U kunt de volgende problemen ondervinden:

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

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 over op het apparaat... vergelijkbaar met 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 vóór /var/opt/microsoft/azuremonitoragent/events 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 volle schijf.

De df opdracht toont bijna geen ruimte beschikbaar op /dev/sda1, zoals wordt weergegeven in de volgende uitvoer. U moet het regelitem 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 rapporteert du mogelijk geen grote bestanden of mappen. Het is mogelijk dat een bestand dat is gemarkeerd als (verwijderd) de ruimte inneemt. Dit kan gebeuren wanneer een proces probeert een bestand te verwijderen, maar een ander proces nog steeds het bestand heeft 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 van de RedHat-familie 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 van het loggen bij local4 of /var/log/syslog of /var/log/messages wilt verwijderen, wijzigt u deze regel in /etc/rsyslog.d/50-default.conf uit dit fragment:

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

    Aan dit fragment: voeg local4.none; toe.

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