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.conf
het configuratiebestand. Voorsyslog-ng
is het configuratiebestand/etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf
. - Azure Monitor Agent luistert naar een TCP-poort om gebeurtenissen van
rsyslog
/syslog-ng
te 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 inrsyslog
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/
. Eenfacility
ofseverity
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
ofsyslog-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.err
inspecteert, 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
.
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
sudo systemctl restart rsyslog