Udostępnij za pośrednictwem


Przewodnik rozwiązywania problemów z dziennikami systemowym dla agenta usługi Azure Monitor dla systemu Linux

Uwaga

W tym artykule odwołuje się do systemu CentOS — dystrybucji systemu Linux, która jest stanem End Of Life (EOL). Rozważ odpowiednie użycie i planowanie. Aby uzyskać więcej informacji, zobacz wskazówki dotyczące zakończenia życia systemu CentOS.

Omówienie zbierania dzienników syslogu usługi Azure Monitor dla systemu Linux i obsługiwanych standardów RFC:

  • Agent usługi Azure Monitor instaluje konfigurację wyjściową demona dziennika systemowego podczas procesu instalacji. Plik konfiguracji określa sposób przepływu zdarzeń między demonem dziennika systemowego i agentem usługi Azure Monitor.
  • W przypadku rsyslog (większości dystrybucji systemu Linux) plik konfiguracji to /etc/rsyslog.d/10-azuremonitoragent-omfwd.conf. W przypadku syslog-ngprogramu plik konfiguracji to /etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf.
  • Agent usługi Azure Monitor nasłuchuje portu TCP w celu odbierania zdarzeń z rsyslog / syslog-ngprogramu . Port dla tej komunikacji jest rejestrowany pod adresem /etc/opt/microsoft/azuremonitoragent/config-cache/syslog.port.

    Uwaga

    Przed użyciem agenta usługi Azure Monitor w wersji 1.28 użyto gniazda domeny systemu Unix zamiast portu TCP do odbierania zdarzeń z serwera rsyslog. omfwd moduł wyjściowy w programie rsyslog oferuje buforowanie i ponawianie prób w celu zwiększenia niezawodności.

  • Demon dziennika systemowego używa kolejek, gdy pozyskiwanie agenta usługi Azure Monitor jest opóźnione lub gdy agent usługi Azure Monitor nie jest osiągalny.
  • Agent usługi Azure Monitor pozyskuje zdarzenia dziennika systemowego za pośrednictwem wcześniej wymienionego gniazda i filtruje je na podstawie kombinacji infrastruktury lub ważności z konfiguracji reguły zbierania danych (DCR) w programie /etc/opt/microsoft/azuremonitoragent/config-cache/configchunks/. Żadne facility lub severity nie obecne w kontrolerze domeny jest porzucane.
  • Agent usługi Azure Monitor próbuje przeanalizować zdarzenia zgodnie z RFC3164 i RFC5424. Wie również, jak analizować formaty komunikatów wymienione w tej witrynie internetowej.
  • Agent usługi Azure Monitor identyfikuje docelowy punkt końcowy dla zdarzeń dziennika systemowego z konfiguracji kontrolera domeny i próbuje przekazać zdarzenia.

    Uwaga

    Agent usługi Azure Monitor domyślnie używa lokalnej trwałości. Wszystkie zdarzenia odebrane z lub rsyslog syslog-ng są umieszczone w kolejce, /var/opt/microsoft/azuremonitoragent/events jeśli nie zostaną przekazane.

Problemy

Mogą wystąpić następujące problemy.

Dane rsyslog nie są przekazywane z powodu problemu z pełnym miejscem na dysku w agencie usługi Azure Monitor dla systemu Linux

W następnych sekcjach opisano problem.

Objaw

Dane dziennika systemowego nie są przekazywane: podczas inspekcji dzienników błędów w /var/opt/microsoft/azuremonitoragent/log/mdsd.errlokalizacji są wyświetlane wpisy o błędzie podczas wstawiania elementu do lokalnego magazynu trwałego... Brak miejsca pozostawionego na urządzeniu podobnego do następującego fragmentu kodu:

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

Przyczyna

Agent usługi Azure Monitor dla systemu Linux buforuje zdarzenia przed /var/opt/microsoft/azuremonitoragent/events pozyskiwaniem. W domyślnej instalacji agenta usługi Azure Monitor dla systemu Linux ten katalog zajmuje około 650 MB miejsca na dysku w stanie bezczynności. Rozmiar dysku zwiększa się, gdy jest on obciążony trwałym rejestrowaniem. Jest on czyszczony co około 60 sekund i zmniejsza się z powrotem do ok. 650 MB, gdy obciążenie powraca do bezczynności.

Potwierdzanie problemu z pełnym dyskiem

Polecenie df pokazuje prawie brak dostępnego miejsca w elemecie /dev/sda1, jak pokazano w poniższych danych wyjściowych. Należy sprawdzić element wiersza, który jest skorelowany z katalogiem dziennika (na przykład /var/log lub /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

Możesz użyć du polecenia , aby sprawdzić dysk, aby określić, które pliki powodują, że dysk jest pełny. Na przykład:

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

W niektórych przypadkach du może nie zgłaszać żadnych dużych plików ani katalogów. Może być możliwe, że plik oznaczony jako (usunięty) zajmuje miejsce. Ten problem może wystąpić, gdy inny proces próbował usunąć plik, ale proces z plikiem jest nadal otwarty. Możesz użyć lsof polecenia , aby sprawdzić, czy nie ma takich plików. W poniższym przykładzie widzimy, że /var/log/syslog jest on oznaczony jako usunięty, ale zajmuje 3,6 GB miejsca na dysku. Nie został usunięty, ponieważ proces z piD 1484 nadal ma otwarty plik.

   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)

Domyślna konfiguracja rsyslog rejestruje wszystkie obiekty do /var/log/

W niektórych popularnych dystrybucjach (na przykład Ubuntu 18.04 LTS) program rsyslog jest dostarczany z domyślnym plikiem konfiguracji (/etc/rsyslog.d/50-default.conf), który rejestruje zdarzenia z niemal wszystkich obiektów do dysku w lokalizacji /var/log/syslog. Zdarzenia syslog rodziny RedHat/CentOS są przechowywane w folderze /var/log/ , ale w innym pliku: /var/log/messages.

Agent usługi Azure Monitor nie polega na rejestrowaniu zdarzeń dziennika systemowego w usłudze /var/log/. Zamiast tego konfiguruje usługę rsyslog do przekazywania zdarzeń za pośrednictwem portu TCP bezpośrednio do azuremonitoragent procesu usługi (mdsd).

Poprawka: Usuń obiekty o dużej ilości z /etc/rsyslog.d/50-default.conf

Jeśli wysyłasz duży wolumin dziennika za pośrednictwem narzędzia rsyslog, a system jest skonfigurowany do rejestrowania zdarzeń dla tych obiektów, rozważ zmodyfikowanie domyślnej konfiguracji rsyslog, aby uniknąć rejestrowania i przechowywania ich w obszarze /var/log/. Zdarzenia dotyczące tego obiektu nadal będą przekazywane do agenta usługi Azure Monitor, ponieważ narzędzie rsyslog używa innej konfiguracji do przekazywania umieszczonego w /etc/rsyslog.d/10-azuremonitoragent-omfwd.confprogramie .

  1. Aby na przykład usunąć local4 zdarzenia z rejestrowania w /var/log/syslog lokalizacji lub /var/log/messages, zmień ten wiersz z /etc/rsyslog.d/50-default.conf tego fragmentu kodu:

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

    Do tego fragmentu kodu (dodaj local4.none;):

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