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 przypadkusyslog-ng
programu 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-ng
programu . 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 programiersyslog
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/
. Żadnefacility
lubseverity
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.err
lokalizacji 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.conf
programie .
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
sudo systemctl restart rsyslog