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.confkonfigurační soubor . Pro syslog-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.portadrese .

    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 v rsyslog 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ýkoliv facility nebo severity 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 nebo syslog-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/sda1mí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

  1. Chcete-li například odebrat local4 události z protokolování /var/log/syslog nebo /var/log/messageszmě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
    
  2. sudo systemctl restart rsyslog