Guide de résolution des problèmes Syslog pour l’agent Azure Monitor pour Linux
Attention
Cet article fait référence à CentOS, une distribution Linux ayant atteint l’état EOL (fin du service). Veuillez considérer votre utilisation et votre planification en conséquence. Pour plus d’informations, consultez l’aide relative à la fin de vie de CentOS.
Vue d’ensemble de la collection Syslog de l’agent Azure Monitor pour Linux et des normes RFC prises en charge :
- L’agent Azure Monitor installe une configuration de sortie pour le démon Syslog système pendant le processus d’installation. Le fichier config spécifie le flux des événements entre le démon Syslog et l’agent Azure Monitor.
- Pour
rsyslog
(la plupart des distributions Linux), le fichier config est/etc/rsyslog.d/10-azuremonitoragent-omfwd.conf
. Poursyslog-ng
, le fichier config est/etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf
. - L’agent Azure Monitor écoute un port TCP pour recevoir les événements de
rsyslog
/syslog-ng
. Le port de cette communication est journalisé à/etc/opt/microsoft/azuremonitoragent/config-cache/syslog.port
.Remarque
Avant l’agent Azure Monitor version 1.28, il a utilisé un socket de domaine Unix au lieu du port TCP pour recevoir des événements de rsyslog. Le module de sortie
omfwd
dansrsyslog
offre des mécanismes de mise en file d’attente et de nouvelle tentative pour améliorer la fiabilité. - Le démon Syslog utilise des files d’attente lorsque l’ingestion de l’agent Azure Monitor est retardée ou lorsque l’agent Azure Monitor n’est pas accessible.
- L’agent Azure Monitor ingère les événements Syslog via le socket mentionné précédemment et les filtre en fonction de la combinaison de facilités ou de gravité de la configuration de la règle de collecte de données (DCR) dans
/etc/opt/microsoft/azuremonitoragent/config-cache/configchunks/
. Toutfacility
ouseverity
non présent dans la règle DCR est supprimé. - L’agent Azure Monitor tente d’analyser les événements conformément aux documents RFC3164 et RFC5424. Il sait également comment analyser les formats de message répertoriés sur ce site web.
- L’agent Azure Monitor identifie le point de terminaison de destination des événements Syslog à partir de la configuration DCR et tente de charger les événements.
Notes
L’agent Azure Monitor utilise la persistance locale par défaut. Tous les événements reçus de
rsyslog
ousyslog-ng
sont mis en file d'attente dans/var/opt/microsoft/azuremonitoragent/events
si leur chargement échoue.
Problèmes
Vous risquez de rencontrer les problèmes suivants.
Les données rsyslog ne sont pas chargées en raison d’un problème d’espace disque complet sur l’Agent Azure Monitor pour Linux
Les sections suivantes décrivent le problème.
Symptôme
Les données Syslog ne se chargent pas – Lors de l’inspection des journaux des erreurs dans /var/opt/microsoft/azuremonitoragent/log/mdsd.err
, vous voyez des entrées de type Erreur lors de l’insertion de l’élément dans Magasin persistant local... Espace insuffisant sur l’appareil, comme dans l’extrait de code suivant :
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
Cause
L’agent Azure Monitor pour Linux met en mémoire tampon les événements dans /var/opt/microsoft/azuremonitoragent/events
avant l’ingestion. Pour une installation par défaut de l’agent Azure Monitor pour Linux, ce répertoire prend environ 650 Mo d’espace disque au moment de l’inactivité. La taille sur le disque augmente lorsque sa charge de journalisation est soutenue. Le répertoire est nettoyé environ toutes les 60 secondes et redescend à environ 650 Mo lorsque la charge redevient inactive.
Confirmer le problème de disque plein
La commande df
indique qu’il n’y a pratiquement plus d’espace disponible sur /dev/sda1
, comme indiqué dans la sortie suivante. Notez que vous devez examiner l’élément de ligne qui correspond au répertoire du journal (par exemple, /var/log
ou /var
ou /
).
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
Vous pouvez utiliser la commande du
pour inspecter le disque afin de déterminer les fichiers à l’origine de la saturation du disque. Par exemple :
cd /var/log
du -h syslog*
6.7G syslog
18G syslog.1
Dans certains cas, du
peut ne pas signaler de fichiers ou de répertoires volumineux. Il est possible qu’un fichier marqué comme (supprimé) occupe tout l’espace. Ce problème peut se produire quand un processus tente de supprimer un fichier, mais qu’un processus d’un fichier est encore ouvert. Vous pouvez utiliser la commande lsof
pour vérifier de tels fichiers. Dans l’exemple suivant, nous voyons que /var/log/syslog
est marqué comme supprimé, mais qu’il occupe 3,6 Go d’espace disque. Il n’a pas été supprimé, car un processus avec le PID 1484 a toujours le fichier ouvert.
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)
La configuration par défaut de rsyslog journalise toutes les installations dans /var/log/
Sur certaines distributions populaires (comme Ubuntu 18.04 LTS), rsyslog est fourni avec un fichier config par défaut (/etc/rsyslog.d/50-default.conf
) qui journalise les événements de la quasi-totalité des installations sur le disque à l’emplacement /var/log/syslog
. Les événements Syslog de la famille RedHat/CentOS sont stockés sous /var/log/
, mais dans un autre fichier : /var/log/messages
.
L’agent Azure Monitor ne s’appuie pas sur les événements Syslog journalisés dans /var/log/
. Au lieu de cela, il configure le service rsyslog pour qu’il transfère les événements sur un port TCP directement vers le processus de service azuremonitoragent
(mdsd).
Correctif : supprimer les facilities à volume élevé de /etc/rsyslog.d/50-default.conf
Si vous envoyez un volume de journal élevé via rsyslog et que votre système est configuré pour journaliser les événements pour ces installations, envisagez de modifier la configuration rsyslog par défaut pour éviter la journalisation et les stocker sous /var/log/
. Les événements de cette fonctionnalité sont toujours transférés vers l’agent Azure Monitor, car rsyslog utilise une configuration différente pour le transfert placé dans /etc/rsyslog.d/10-azuremonitoragent-omfwd.conf
.
Par exemple, pour supprimer la journalisation des événements
local4
dans/var/log/syslog
ou/var/log/messages
, remplacez cette ligne dans/etc/rsyslog.d/50-default.conf
de cet extrait de code :*.*;auth,authpriv.none -/var/log/syslog
À cet extrait de code (ajoutez
local4.none;
) :*.*;local4.none;auth,authpriv.none -/var/log/syslog
sudo systemctl restart rsyslog