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.
Les fonctionnalités suivantes sont prises en charge avec le collecteur Syslog :
- Aucun
- Kern
- utilisateur
- 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.
- Sélectionnez Ajouter une source de données.
- 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.
Connectez-vous au portail Azure.
Recherchez et ouvrez Monitor.
Sous Paramètres, sélectionnez Règles de collecte de données.
Sélectionnez Create (Créer).
Ajout de ressources
Sélectionnez Ajouter des ressources.
Utilisez les filtres pour trouver la machine virtuelle que vous voulez utiliser pour collecter les journaux.
Sélectionnez la machine virtuelle.
Sélectionnez Appliquer.
Sélectionnez Suivant : Collecter et livrer.
Ajouter une source de données
Sélectionnez Ajouter une source de données.
Pour Type de source de données, sélectionnez Syslog Linux.
Pour Niveau de journal minimal, conservez les valeurs par défaut LOG_DEBUG.
Sélectionnez Suivant : Destination.
Ajouter une destination
Sélectionnez Ajouter une destination.
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é Sélectionnez Ajouter une source de données.
Sélectionnez Suivant : Vérifier + créer.
Créer une règle
- Sélectionnez Create (Créer).
- 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 :
- Un espace de travail Log Analytics dans lequel vous avez au moins des droits de contributeur.
- Un point de terminaison de collecte de données.
- Autorisations pour créer des objets de règle de collecte de données (DCR) dans l’espace de travail.
- Les messages Syslog doivent respecter les normes RFC (RFC5424 ou RFC3164)
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 :