Collecter des événements Syslog avec l’agent Azure Monitor

Attention

Cet article fait référence à CentOS, une distribution Linux proche de l’état EOL (End Of Life). Faites le point sur votre utilisation afin de vous organiser en conséquence. Pour plus d’informations, consultez les conseils d’aide relatifs à la fin de vie de CentOS.

Syslog est un protocole de journalisation des événements courant sur Linux. Vous pouvez utiliser le démon Syslog intégré aux appareils et appliances Linux pour collecter les événements locaux des types que vous spécifiez. Vous pouvez ensuite envoyer ces événements à un espace de travail Log Analytics. Les applications envoient les messages qui peuvent être stockés sur la machine locale ou remis à un collecteur Syslog.

Quand l’agent Azure Monitor pour Linux est installé, il configure le démon Syslog local pour transférer des messages à l’agent quand la collecte Syslog est activée dans les règles de collecte de données. L’agent Azure Monitor envoie ensuite les messages à un espace de travail Azure Monitor ou Log Analytics où un enregistrement Syslog correspondant est créé dans une table Syslog.

Diagramme montrant la collecte Syslog.

Diagramme montrant la communication entre le démon Syslog et l’agent Azure Monitor.

Les fonctionnalités suivantes sont prises en charge avec le collecteur Syslog :

  • Aucun
  • Kern
  • utilisateur
  • mail
  • daemon
  • auth
  • syslog
  • lpr
  • news
  • uucp
  • ftp
  • ntp
  • audit
  • alerte
  • mark
  • local0
  • local1
  • local2
  • local3
  • local4
  • local5
  • local6
  • local7

Pour certains types d’appareils qui n’autorisent pas l’installation locale de l’agent Azure Monitor, l’agent peut à la place être installé sur un redirecteur de journal dédié basé sur Linux. L’appareil d’origine doit être configuré pour envoyer des événements Syslog au démon Syslog à ce redirecteur au lieu du démon local. Pour plus d’informations, consultez le tutoriel Sentinel.

Configurer les messages Syslog

L’agent Azure Monitor pour Linux collecte seulement les événements avec les installations et les gravités spécifiés dans sa configuration. Vous pouvez configurer Syslog avec le portail Azure ou en gérant les fichiers de configuration sur vos agents Linux.

Configurer Syslog dans le portail Azure

Configurez Syslog à partir du menu Règles de collecte de données d’Azure Monitor. Cette configuration est remise au fichier de configuration sur chaque agent Linux.

  1. Sélectionnez Ajouter une source de données.
  2. Pour Type de source de données, sélectionnez Syslog Linux.

Vous pouvez collecter des événements Syslog avec un niveau de journalisation différent pour chaque installation. Par défaut, tous les types d’installation Syslog sont collectés. Par exemple, si vous ne voulez pas collecter des événements de type auth, sélectionnez AUCUN dans la zone de liste Niveau de journalisation minimal pour l’installation auth et enregistrez les modifications. Si vous devez modifier le niveau de journalisation par défaut pour les événements Syslog et collecter seulement les événements dont le niveau de journalisation commence par « NOTICE » ou une priorité supérieure, sélectionnez « LOG_NOTICE » dans la zone de liste « Niveau de journalisation minimal ».

Par défaut, toutes les modifications de configuration sont envoyées automatiquement à tous les agents configurés dans la règle de collecte de données.

Créer une règle de collecte de données

Créez une règle de collecte de données dans la même région que celle de votre espace de travail Log Analytics. Une règle de collecte de données est une ressource Azure qui vous permet de définir la façon dont les données doivent être gérées au fur et à mesure de leur ingestion dans l’espace de travail.

  1. Connectez-vous au portail Azure.

  2. Recherchez et ouvrez Monitor.

  3. Sous Paramètres, sélectionnez Règles de collecte de données.

  4. Sélectionnez Create (Créer).

    Capture d’écran du volet des règles de collecte de données avec l’option Créer sélectionnée.

Ajout de ressources

  1. Sélectionnez Ajouter des ressources.

  2. Utilisez les filtres pour trouver la machine virtuelle que vous voulez utiliser pour collecter les journaux.

    Capture d’écran de la page permettant de sélectionner l’étendue de la règle de collecte de données.

  3. Sélectionnez la machine virtuelle.

  4. Sélectionnez Appliquer.

  5. Sélectionnez Suivant : Collecter et livrer.

Ajouter une source de données

  1. Sélectionnez Ajouter une source de données.

  2. Pour Type de source de données, sélectionnez Syslog Linux.

    Capture d’écran de la page permettant de sélectionner le type de source de données et le niveau de journalisation minimal.

  3. Pour Niveau de journal minimal, conservez les valeurs par défaut LOG_DEBUG.

  4. Sélectionnez Suivant : Destination.

Ajouter une destination

  1. Sélectionnez Ajouter une destination.

    Capture d’écran de l’onglet Destination avec l’option Ajouter une destination sélectionnée.

  2. Saisissez les valeurs suivantes :

    Champ Valeur
    Type de destination Journaux Azure Monitor
    Abonnement Sélectionnez l’abonnement approprié
    Compte ou espace de noms Sélectionnez l’espace de travail Log Analytics approprié
  3. Sélectionnez Ajouter une source de données.

  4. Sélectionnez Suivant : Vérifier + créer.

Créer une règle

  1. Sélectionnez Create (Créer).
  2. Patientez 20 minutes avant de passer à la section suivante.

Si votre machine virtuelle n’a pas d’agent Azure Monitor installé, le déploiement de la règle de collecte de données déclenche l’installation de l’agent sur la machine virtuelle.

Configurer Syslog sur l’agent Linux

Quand l’agent Azure Monitor est installé sur une machine Linux, il installe un fichier de configuration Syslog par défaut qui définit l’installation et la gravité des messages collectés si Syslog est activé dans une règle de collecte de données. Le fichier de configuration est différent selon le démon Syslog installé par le client.

Rsyslog

Sur de nombreuses distributions Linux, le démon rsyslogd est responsable de la consommation, du stockage et du routage des messages de journal envoyés en utilisant l’API Syslog Linux. L’agent Azure Monitor utilise le module de transfert TCP (omfwd) dans rsyslog pour transférer les messages de journal à l’agent Azure Monitor.

L’installation de l’agent Azure Monitor inclut des fichiers de configuration par défaut qui sont placés sous le répertoire suivant : /etc/opt/microsoft/azuremonitoragent/syslog/rsyslogconf/

Quand Syslog est ajouté à une règle de collecte de données, ces fichiers de configuration sont installés sous le répertoire système etc/rsyslog.d et rsyslog est redémarré automatiquement pour que les modifications prennent effet. Ces fichiers sont utilisés par rsyslog pour charger le module de sortie et transférer les événements au démon de l’agent Azure Monitor en utilisant des règles définies.

Son contenu par défaut est montré dans l’exemple suivant. Cet exemple collecte les messages Syslog envoyés depuis l’agent local pour toutes les fonctions avec tous les niveaux de journalisation.

$ cat /etc/rsyslog.d/10-azuremonitoragent-omfwd.conf
# Azure Monitor Agent configuration: forward logs to azuremonitoragent

template(name="AMA_RSYSLOG_TraditionalForwardFormat" type="string" string="<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg%")
# queue.workerThreads sets the maximum worker threads, it will scale back to 0 if there is no activity
# Forwarding all events through TCP port
*.* action(type="omfwd"
template="AMA_RSYSLOG_TraditionalForwardFormat"
queue.type="LinkedList"
queue.filename="omfwd-azuremonitoragent"
queue.maxFileSize="32m"
action.resumeRetryCount="-1"
action.resumeInterval="5"
action.reportSuspension="on"
action.reportSuspensionContinuation="on"
queue.size="25000"
queue.workerThreads="100"
queue.dequeueBatchSize="2048"
queue.saveonshutdown="on"
target="127.0.0.1" Port="28330" Protocol="tcp")

Sur certains systèmes hérités, tels que CentOS 7.3, nous avons rencontré des problèmes de mise en forme du journal rsyslog lorsqu’un format de transfert traditionnel est utilisé pour envoyer des événements Syslog à l’agent Azure Monitor. Pour ces systèmes, l’agent Azure Monitor place automatiquement un modèle de redirecteur hérité à la place :

template(name="AMA_RSYSLOG_TraditionalForwardFormat" type="string" string="%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg%\n")

Syslog-ng

Le fichier de configuration pour syslog-ng est installé dans /etc/opt/microsoft/azuremonitoragent/syslog/syslog-ngconf/azuremonitoragent-tcp.conf. Quand la collecte Syslog est ajoutée à une règle de collecte de données, ce fichier de configuration est installé sous le répertoire système /etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf, et syslog-ng est redémarré automatiquement pour que les modifications prennent effet.

Son contenu par défaut est montré dans l’exemple suivant. Cet exemple collecte les messages Syslog envoyés depuis l’agent local pour toutes les installations et tous les niveaux de gravité.

$ cat /etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf 
# Azure MDSD configuration: syslog forwarding config for mdsd agent
options {};

# during install time, we detect if s_src exist, if it does then we
# replace it by appropriate source name like in redhat 's_sys'
# Forwrding using tcp
destination d_azure_mdsd {
	network("127.0.0.1" 
	port(28330)
	log-fifo-size(25000));			
};

log {
	source(s_src); # will be automatically parsed from /etc/syslog-ng/syslog-ng.conf
	destination(d_azure_mdsd);
	flags(flow-control);
};

Notes

Azure Monitor prend en charge la collecte de messages envoyés par rsyslog ou syslog-ng, sachant que rsyslog est le démon par défaut. Le démon syslog par défaut sur la version 5 de Red Hat Enterprise Linux, CentOS et Oracle Linux (sysklog) n’est pas pris pas en charge pour la collecte des événements Syslog. Pour collecter des données Syslog avec cette version de ces distributions, le démon rsyslog doit être installé et configuré pour remplacer sysklog.

Si vous modifiez cette configuration Syslog, vous devez redémarrer le démon Syslog pour que les modifications prennent effet.

Prérequis

Ce dont vous avez besoin :

Propriétés d’enregistrement Syslog

Les enregistrements Syslog sont de type Syslog et ont les propriétés décrites dans le tableau suivant.

Propriété Description
Computer Ordinateur sur lequel l’événement a été collecté.
Facility Définit la partie du système qui a généré le message.
HostIP Adresse IP du système qui envoie le message.
HostName Nom du système qui envoie le message.
SeverityLevel Niveau de gravité de l’événement.
SyslogMessage Texte du message.
ProcessID ID du processus qui a généré le message.
EventTime Date et heure de génération de l’événement.

Requêtes de journaux avec des enregistrements Syslog

Le tableau suivant fournit plusieurs exemples de requêtes de journaux qui extraient des enregistrements Syslog.

Requête Description
syslog Tous les journaux Syslog
Syslog | where SeverityLevel == "error" Tous les enregistrements Syslog avec le niveau de gravité Erreur
Syslog | where Facility == "auth" Tous les enregistrements Syslog avec le type de fonction auth
Syslog | summarize AggregatedValue = count() by Facility Nombre d’enregistrements Syslog par installation

Étapes suivantes

Pour en savoir plus :