Průvodce odstraňováním potíží s Syslogem pro agenta služby Azure Monitor pro Linux
Upozornění
Tento článek odkazuje na CentOS, což je linuxová distribuce se stavem Konec životnosti (EOL). Zvažte své použití a plánování odpovídajícím způsobem. Další informace najdete v doprovodných materiálech CentOS End Of Life.
Přehled shromažďování Syslogu služby Azure Monitor pro Linux a podporovaných standardů RFC:
- Agent Azure Monitoru během procesu instalace nainstaluje výstupní konfiguraci pro proces démon syslog systému. Konfigurační soubor určuje způsob, jakým události proudí mezi procesem démon Syslogu a agentem služby Azure Monitor.
- Pro
rsyslog
(většina linuxových distribucí) je/etc/rsyslog.d/10-azuremonitoragent-omfwd.conf
konfigurační soubor . Prosyslog-ng
, konfigurační soubor je/etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf
. - Agent Služby Azure Monitor naslouchá portu TCP pro příjem událostí z
rsyslog
/syslog-ng
. Port pro tuto komunikaci je protokolován na/etc/opt/microsoft/azuremonitoragent/config-cache/syslog.port
adrese .Poznámka:
Před agentem Služby Azure Monitor verze 1.28 se k příjmu událostí z rsyslogu použil soket domény unixu místo portu TCP.
omfwd
Výstupní modul vrsyslog
nabídkách zařazování a opakování pro lepší spolehlivost. - Proces démon Syslog používá fronty, když je příjem agenta služby Azure Monitor zpožděný nebo když není dostupný agent služby Azure Monitor.
- Agent Azure Monitor ingestuje události Syslogu prostřednictvím dříve zmíněného soketu a filtruje je na základě kombinace zařízení nebo závažnosti z konfigurace pravidla shromažďování dat (DCR) v
/etc/opt/microsoft/azuremonitoragent/config-cache/configchunks/
. V řadiči domény se vyřadí jakýkolivfacility
neboseverity
není k dispozici. - Agent služby Azure Monitor se pokouší analyzovat události v souladu s RFC3164 a RFC5424. Také ví, jak analyzovat formáty zpráv uvedené na tomto webu.
- Agent Služby Azure Monitor identifikuje cílový koncový bod událostí Syslogu z konfigurace DCR a pokusí se události nahrát.
Poznámka:
Agent azure Monitor ve výchozím nastavení používá místní trvalost. Pokud se nepodaří nahrát všechny události přijaté z
rsyslog
nebosyslog-ng
jsou zařazené do/var/opt/microsoft/azuremonitoragent/events
fronty.
Problémy
Můžete se setkat s následujícími problémy.
Data Rsyslogu se nenahrají kvůli problému s plným místem na disku v agentovi služby Azure Monitor pro Linux
Následující části popisují problém.
Příznaky
Data syslogu se nenahrají: Při kontrole protokolů chyb na adrese /var/opt/microsoft/azuremonitoragent/log/mdsd.err
, zobrazí se položky o chybě při vkládání položky do místního trvalého úložiště... Na zařízení není žádné místo podobné následujícímu fragmentu kódu:
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
Příčina
Agent Azure Monitoru pro Linux události vyrovnávací paměti před /var/opt/microsoft/azuremonitoragent/events
příjmem dat. Ve výchozí instalaci agenta Azure Monitoru pro Linux tento adresář zabírá přibližně 650 MB místa na disku v nečinnosti. Velikost disku se zvýší, když je podtržením zatížení protokolování. Vyčistí se přibližně každých 60 sekund a sníží se zpět na přibližně 650 MB, když se zatížení vrátí do nečinnosti.
Potvrzení problému s plným diskem
Příkaz df
zobrazuje téměř žádné volné /dev/sda1
místo, jak je znázorněno v následujícím výstupu. Všimněte si, že byste měli prozkoumat řádkovou položku, která koreluje s adresářem protokolu (například /var/log
nebo /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
Pomocí příkazu můžete du
zkontrolovat disk a zjistit, které soubory způsobují, že se disk zaplní. Příklad:
cd /var/log
du -h syslog*
6.7G syslog
18G syslog.1
V některých případech du
nemusí hlásit žádné velké soubory ani adresáře. Je možné, že místo zabírá soubor označený jako (odstraněný). K tomuto problému může dojít, když se nějaký jiný proces pokusil odstranit soubor, ale proces se souborem je stále otevřený. Tyto soubory můžete zkontrolovat pomocí lsof
příkazu. V následujícím příkladu vidíme, že /var/log/syslog
je označený jako odstraněný, ale zabírá 3,6 GB místa na disku. Neodstranil se, protože proces s PID 1484 stále má otevřený soubor.
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)
Výchozí konfigurační protokoly Rsyslogu všechny zařízení do /var/log/
Na některých oblíbených distribucích (například Ubuntu 18.04 LTS) se rsyslog dodává s výchozím konfiguračním souborem (/etc/rsyslog.d/50-default.conf
), který protokoluje události téměř ze všech zařízení na disk ./var/log/syslog
Události Syslogu rodiny RedHat/CentOS jsou uloženy /var/log/
v jiném souboru: /var/log/messages
.
Agent služby Azure Monitor nespoléhá na protokolování událostí Syslogu /var/log/
. Místo toho nakonfiguruje službu rsyslog tak, aby předávala události přes port TCP přímo do azuremonitoragent
procesu služby (mdsd).
Oprava: Odebrání zařízení s vysokým objemem z /etc/rsyslog.d/50-default.conf
Pokud odesíláte velký svazek protokolů prostřednictvím rsyslogu a váš systém je nastavený tak, aby protokoloval události pro tato zařízení, zvažte úpravu výchozí konfigurace rsyslogu, aby se zabránilo protokolování a jejich uložení do /var/log/
. Události pro toto zařízení by se stále předávaly agentovi služby Azure Monitor, protože rsyslog používá jinou konfiguraci pro přeposílání./etc/rsyslog.d/10-azuremonitoragent-omfwd.conf
Chcete-li například odebrat
local4
události z protokolování/var/log/syslog
nebo/var/log/messages
změnit tento řádek/etc/rsyslog.d/50-default.conf
z tohoto fragmentu kódu:*.*;auth,authpriv.none -/var/log/syslog
Do tohoto fragmentu kódu (přidejte
local4.none;
):*.*;local4.none;auth,authpriv.none -/var/log/syslog
sudo systemctl restart rsyslog