WinAgentLog, un programme de transfert des messages Windows à un serveur Syslog

ram-0000

Bienvenue dans le guide de référence français du programme WinAgentLog. Ce document décrit comment installer, configurer et utiliser le programme WinAgentLog de transfert en temps réel des messages de log EventLog générés par les environnements Microsoft vers un concentrateur de log Syslog.

Votre avis et vos suggestions sur cet article m'intéressent ! Alors, après votre lecture, n'hésitez pas : Commentez ♪

- Titre : WinAgentLog, un programme de transfert des messages Windows à un serveur Syslog

- Auteur : ram-0000

- Parution : 20 décembre 2010

- Mise à jour : 7 janvier 2011

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2008-2011 ram-0000. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- 1. Introduction

- 1-1. Qu'est-ce que WinAgentLog ?

- 1-2. Fonctionnalités principales

- 1-3. Organisation de ce document

- 2. Le protocole Syslog

- 3. Le sous-système EventLog

- 4. Le programme WinAgentLog

- 5. Administrer WinAgentLog

- 5-1. Démarrage et arrêt du service

- 5-2. Utilisation de la base de registre

- 6. Configurer WinAgentLog

- 6-1. Exemple d'un fichier de configuration

- 6-2. Les types de valeurs

- 6-3. Le bloc de paramètres <EventLogList>

- 6-4. Le bloc de paramètres <EventLogList/EventLog>

- 6-5. Le bloc de paramètres <SyslogServerList>

- 6-6. Le bloc de paramètres <SyslogServerList/SyslogServer>

- 6-7. Le bloc de paramètres <Heartbeat>

- 7. Formater les messages générés par WinAgentLog

- 7-1. Supprimer les caractères indésirables

- 7-2. Appliquer un format

- 7-3. Tronquer et Traduire

- 8. Déboguer le service WinAgentLog

- 9. Conclusions

- 9-1. Environnement de développement et de test

- 9-2. Prochaines fonctionnalités

- 9-3. Remerciements

1 - Introduction

Pour les plus pressés d'entre vous, le programme d'installation est téléchargeable ici et la documentation anglaise est disponible ici.

1-1 - Qu'est-ce que WinAgentLog ?

L'objectif principal de WinAgentLog est de recueillir en temps réel les messages EventLog générés par le sous-système Windows EventLog et de les transmettre en utilisant le protocole Syslog à une machine distante.

WinAgentLog s'exécute comme un service Windows et nécessite très peu de configuration pour commencer à fonctionner.

Le programme WinAgentLog peut s'exécuter sur :

- serveur : Windows 2000, Windows 2003 ou Windows 2008 ;

- station de travail : Windows 2000, Windows XP, Windows Vista ou Windows Seven ;

- architecture matérielle : Intel x86 32 et 64 bits.

1-2 - Fonctionnalités principales

Les principales caractéristiques du service WinAgentLog sont :

- il peut fonctionner sur n'importe quelle version de Windows (Windows 2000, XP, 2003, Vista, Seven, 2008) ;

- la prise en charge des plateformes matérielles Intel x86 32 et 64 bits ;

- la prise en charge à la fois de l'ancienne API "Windows EventLog API" et de la nouvelle API "Windows API Event Logging" introduite avec Windows Vista ;

- les événements EventLog Windows sont transmis en temps réel au serveur Syslog ;

- WinAgentLog se souvient du dernier message EventLog qu'il a envoyé et peut redémarrer à partir de ce point ou bien à partir de la fin ;

- les changements dans le fichier de configuration sont automatiquement détectés ;

- le contenu des messages transmis au serveur Syslog est hautement configurable.

1-3 - Organisation de ce document

Ce document est organisé comme suit :

- les bases du protocole Syslog sont expliquées dans le chapitre 2 ;

- les bases du sous-système Microsoft EventLog sont expliquées dans le chapitre 3 ;

- l'installation du programme WinAgentLog est détaillée dans le chapitre 4 ;

- la gestion du service WinAgentLog est détaillée dans le chapitre 5 ;

- la configuration du service WinAgentLog est détaillée dans les chapitres 6, 7 et 8.

2 - Le protocole Syslog

Le protocole Syslog est un protocole très simple et très largement utilisé dans le monde Unix. Son but est de transporter par le réseau les messages de journalisation générés par une application vers un serveur hébergeant un serveur Syslog.

Un autre but est aussi d'assurer la fonction de concentration des journaux, un serveur Syslog intermédiaire pouvant retransférer les messages Syslog qu'il reçoit vers un autre serveur Syslog.

Pour plus d'information au sujet de ce protocole, se reporter au tutoriel Présentation du protocole Syslog.

3 - Le sous-système EventLog

La journalisation dans le monde Microsoft est réalisée par le sous-système EventLog. Ce sous-système est implémenté par le service Windows EventLog.

Microsoft propose deux API (Application Programming Interface) pour s'interfacer avec le sous-système EventLog :

- l'API Event Logging. Cette API est disponible depuis Windows 3.1 ;

- l'API Windows Event Log. Cette API est disponible depuis Windows Vista et Windows Server 2008 et elle doit, à terme, remplacer l'API Event Logging.

Pour plus d'information au sujet de ce sous-système et de son API, se reporter au tutoriel La journalisation dans le monde Microsoft, découvrez l'API EventLog.

4 - Le programme WinAgentLog

Le programme d'installation peut être téléchargé ici et la documentation anglaise est disponible ici.

Les systèmes d'exploitation suivants sont pris en charge pour installer et exécuter WinAgentLog :

- Microsoft Windows 2000 ;

- Microsoft Windows XP ;

- Microsoft Windows Vista ;

- Microsoft Windows Seven ;

- Microsoft Windows Server 2003 ;

- Microsoft Windows Server 2008.

Les deux plateformes matérielles Intel x86 32 bits ou 64 bits sont supportées.

5 - Administrer WinAgentLog

5-1 - Démarrage et arrêt du service

Il y a trois manières différentes pour démarrer et arrêter le service WinAgentLog :

- par le gestionnaire de services ;

- par la ligne de commande ;

- par le menu "Démarrer".

Par le gestionnaire de services

Il suffit de démarrer le gestionnaire de services. Vous pouvez démarrer et arrêter le service WinAgentLog de la même manière que les autres services.

Démarrage par le gestionnaire de services

Par la ligne de commande

Vous pouvez aussi démarrer et arrêter le service WinAgentLog par la ligne de commande :

- net start __WinAgentLog ;

- net stop __WinAgentLog.

Sur les machines avec Windows Vista, Seven et 2008, il faut que le shell de la ligne de commande soit exécuté avec des droits d'administrateur (clic droit sur l'icône, exécuter en tant qu'administrateur).

Par le menu "Démarrer"

Vous pouvez également démarrer et arrêter le service WinAgentLog par le programme lui-même :

- C:\Program Files\Phoenix Team\WinAgentLog\WinAgentLog.exe --start

- C:\Program Files\Phoenix Team\WinAgentLog\WinAgentLog.exe --stop

Démarrage par le menu Démarrer

Sur les machines avec Windows Vista, Seven et 2008, il faut que ces commandes soient exécutées avec des droits d'administrateur (clic droit sur l'icône, exécuter en tant qu'administrateur).

5-2 - Utilisation de la base de registre

Toutes les entrées de registre créées et utilisées par le service WinAgentLog sont situées sous la clé suivante :

HKEY_LOCAL_MACHINE\SOFTWARE\Team Phoenix\WinAgentLog

Les clés suivantes sont créées ou utilisées par le service WinAgentLog :

Nom

Description

Version

Cette clé contient la version du produit.

LastBookmark_<EventLog>

Cette clé contient des informations nécessaires pour que WinAgentLog se rappelle le dernier message EventLog qu'il vient d'envoyer. Il est utilisé lorsque le service est redémarré pour recommencer à lire à partir de cet événement. Il y a une clé pour chaque journal surveillé. Si la clé n'est pas présente pour un journal donné, le service commence à lire à partir de la fin.

Le service WinAgentLog ne crée pas d'autres entrées dans la base de registre.

6 - Configurer WinAgentLog

Les paramètres de configuration du service WinAgentLog sont stockés dans un fichier XML. Le nom du fichier de configuration est "WinAgentLog.conf.xml". Ce fichier se situe dans le dossier d'installation (C:\Program Files\Phoenix Team\WinAgentLog par défaut).

Lorsque des modifications sont apportées dans ce fichier de configuration, le service WinAgentLog le détecte automatiquement et redémarre pour prendre en compte les nouvelles valeurs.

Si le fichier de configuration n'a pas une syntaxe XML valide, le service WinAgentLog sera incapable de l'analyser et s'arrêtera automatiquement. Il est possible de vérifier la validité de la syntaxe du fichier de configuration en l'affichant avec une visionneuse XML (Internet Explorer par exemple).

6-1 - Exemple d'un fichier de configuration

Le fichier de configuration suivant est celui installé par défaut par le programme d'installation :

Fichier de configuration par défaut

<?xml version="1.0" encoding="UTF-16"?>
<Config>

<EventLogList  DefaultStartFromLastSend="Yes"
DefaultDateFormat="%d/%m/%Y %H:%M:%S"
DefaultFormat="$MESSAGE"
DefaultFacility="16"
DefaultSeverityError="3"
DefaultSeverityWarning="4"
DefaultSeverityInformation="6"
DefaultSeverityAuditSuccess="7"
DefaultSeverityAuditFailure="5">

<EventLog Name="System" Enabled="Yes" Facility="16"/>
<EventLog Name="Application" Enabled="Yes" Facility="17"/>
<EventLog Name="Security" Enabled="Yes" Facility="18"/>

</EventLogList>

<SyslogServerList DefaultPort="514" DefaultProtocol="udp" DefaultMaxLength="1514" DefaultEndOfMessage="">

<SyslogServer Name="127.0.0.1" Enabled="Yes"/>

</SyslogServerList>

<Heartbeat Enabled="Yes" TimeoutMs="60000" Message="WinAgentLog Heartbeat" Facility="23" Severity="6"/>

</Config>

6-2 - Les types de valeurs

Les types des différentes valeurs qui peuvent être trouvés dans le fichier de configuration peuvent être parmi l'un des suivants : String, Integer, Boolean.

- Un paramètre de type String peut être vide ou peut avoir n'importe quelle longueur arbitraire de caractères.

- Un paramètre de type Integer est un nombre entier. Il ne peut contenir que des caractères numériques et le signe plus (+) ou moins (-).

- Un paramètre de type Boolean ne peut prendre que deux valeurs: "Yes" ou "No".

6-3 - Le bloc de paramètres <EventLogList>

Ce bloc contient les paramètres utilisés pour définir le comportement de la fonctionnalité "EventLogList".

XML

Nom

Type et rôle

Informations complémentaires

Attribut

DefaultStartFromLastSend

Cet attribut est une valeur de type Boolean qui définit si le service WinAgentLog doit se rappeler ou non du dernier numéro de message EventLog généré.

S'il vaut "Yes", le service WinAgentLog recommence à lire à partir du dernier message EventLog généré. S'il vaut "No", il recommence à lire à partir de la fin de l'emplacement EventLog. Si cette valeur n'est pas définie dans le fichier de configuration, sa valeur "codée en dur" dans le code est fixée à "No" (recommence à lire à partir de la fin de l'emplacement EventLog).

Attribut

DefaultDateFormat

Cet attribut est une valeur de type String qui définit le format de la date et l'heure à utiliser lors de la transmission des messages EventLog. Le code du programme utilise la fonction _tcsftime(). Tout format valide comme décrit dans la page MSDN peut être utilisé.

Si cette valeur n'est pas définie dans le fichier de configuration, sa valeur "codée en dur" dans le code est fixée à "%d/%m/%Y%H:%M:%S" (date et heure au format français).

Attribut

DefaultFormat

Cet attribut est une valeur de type String qui définit le format d'un message Syslog généré par WinAgentLog service lors de la transmission d'un message EventLog. Pour plus d'informations sur le formatage des messages, voir le chapitre suivant.

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur "codée en dur" dans le code est fixée à "$MESSAGE".

Attribut

DefaultFacility

Cet attribut est une valeur de type Integer qui définit la fonctionnalité Syslog utilisée par WinAgentLog lors de la transmission d'un message EventLog.

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur "codée en dur" dans le code est fixée à "16" (fonctionnalité Syslog local 0).

Attribut

DefaultSeverityError

Cet attribut est une valeur de type Integer qui définit la sévérité Syslog utilisée par WinAgentLog lors de la transmission d'un message EventLog "Error".

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur "codée en dur" dans le code est fixée à "3" (sévérité Syslog error).

Attribut

DefaultSeverityWarning

Cet attribut est une valeur de type Integer qui définit la sévérité Syslog utilisée par WinAgentLog lors de la transmission d'un message EventLog "Warning".

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur "codée en dur" dans le code est fixée à "4" (sévérité Syslog warning).

Attribut

DefaultSeverityInformation

Cet attribut est une valeur de type Integer qui définit la sévérité Syslog utilisée par WinAgentLog lors de la transmission d'un message EventLog "Information".

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur "codée en dur" dans le code est fixée à "6" (sévérité Syslog informationnal).

Attribut

DefaultSeverityAuditSuccess

Cet attribut est une valeur de type Integer qui définit la sévérité Syslog utilisée par WinAgentLog lors de la transmission d'un message EventLog "Audit Success".

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur "codée en dur" dans le code est fixée à "7" (sévérité Syslog debug).

Attribut

DefaultSeverityAuditFailure

Cet attribut est une valeur de type Integer qui définit la sévérité Syslog utilisée par WinAgentLog lors de la transmission d'un message EventLog "Audit Failure".

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur "codée en dur" dans le code est fixée à "5" (sévérité Syslog notice).

Répertoire

EventLog

Le service WinAgentLog est capable de surveiller plusieurs emplacements EventLog simultanément. Il suffit pour cela de définir plusieurs blocs "<EventLogList/EventLog>", un pour chaque emplacement EventLog que vous souhaitez surveiller.

6-4 - Le bloc de paramètres <EventLogList/EventLog>

Ce bloc contient les paramètres utilisés pour définir le comportement de WinAgentLog pour un EventLog particulier.

XML

Nom

Type et rôle

Informations complémentaires

Attribut

Name

Cet attribut est une valeur de type String qui définit le nom de l'emplacement EventLog à surveiller. Vous pouvez utiliser le programme EventViewer pour connaître la liste de l'emplacement EventLog gérée par votre système.

Parmi ces emplacements EventLog, on trouve entre autres : Application, System, Security. Si cet attribut n'est pas défini, le bloc EventLog courant est ignoré.

Attribut

Enabled

Cet attribut est une valeur de type Boolean qui définit si le service WinAgentLog doit surveiller ou non l'emplacement EventLog courant.

Si cet attribut n'est pas défini ou ne vaut pas "Yes", le bloc EventLog courant est ignoré.

Attribut

StartFromLastSend

Cet attribut est une valeur de type Boolean qui définit si le service WinAgentLog doit se rappeler ou non du dernier message EventLog généré.

S'il vaut "Yes", le service WinAgentLog recommence à lire à partir du dernier message EventLog généré. S'il vaut "No", il recommence à lire à partir de la fin de l'emplacement EventLog. Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur est celle définie pour l'attribut "DefaultStartFromLastSend".

Attribut

DateFormat

Cet attribut est une valeur de type String qui définit le format de la date et l'heure à utiliser lors de la transmission des messages EventLog. Le code du programme utilise la fonction _tcsftime(). Tout format valide comme décrit dans la page MSDN peut être utilisé.

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur est celle définie pour l'attribut "DefaultDateFormat".

Attribut

Format

Cet attribut est une valeur de type String qui définit le format d'un message Syslog généré par WinAgentLog service lors de la transmission d'un message EventLog. Pour plus d'informations sur le formatage des messages, voir le chapitre suivant.

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur est celle définie pour l'attribut "DefaultFormat".

Attribut

Facility

Cet attribut est une valeur de type Integer qui définit la fonctionnalité Syslog utilisée par WinAgentLog lors de la transmission d'un message EventLog.

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur est celle définie pour l'attribut "DefaultFacility".

Attribut

SeverityError

Cet attribut est une valeur de type Integer qui définit la sévérité Syslog utilisée par WinAgentLog lors de la transmission d'un message EventLog "Error".

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur est celle définie pour l'attribut "DefaultSeverityError".

Attribut

SeverityWarning

Cet attribut est une valeur de type Integer qui définit la sévérité Syslog utilisée par WinAgentLog lors de la transmission d'un message EventLog "Warning".

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur est celle définie pour l'attribut "DefaultSeverityWarning".

Attribut

SeverityInformation

Cet attribut est une valeur de type Integer qui définit la sévérité Syslog utilisée par WinAgentLog lors de la transmission d'un message EventLog "Information".

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur est celle définie pour l'attribut "DefaultSeverityInformation".

Attribut

SeverityAuditSuccess

Cet attribut est une valeur de type Integer qui définit la sévérité Syslog utilisée par WinAgentLog lors de la transmission d'un message EventLog "Audit Success".

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur est celle définie pour l'attribut "DefaultSeverityAuditSuccess".

Attribut

SeverityAuditFailure

Cet attribut est une valeur de type Integer qui définit la sévérité Syslog utilisée par WinAgentLog lors de la transmission d'un message EventLog "Audit Failure".

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur est celle définie pour l'attribut "DefaultSeverityAuditFailure".

6-5 - Le bloc de paramètres <SyslogServerList>

Ce bloc contient les paramètres utilisés pour définir le comportement de la fonctionnalité "SyslogServerList".

XML

Nom

Type et rôle

Informations complémentaires

Attribut

DefaultPort

Cet attribut est une valeur de type Integer qui définit le port de destination utilisé par le serveur Syslog distant.

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur "codée en dur" dans le code est fixée à "514" (port par défaut du protocole Syslog).

Attribut

DefaultProtocol

Cet attribut est une valeur de type String qui définit la couche de protocole utilisée par le serveur Syslog distant. La seule valeur supportée pour l'instant est "udp".

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur "codée en dur" dans le code est fixée à "udp" (couche par défaut du protocole Syslog).

Attribut

DefaultMaxLength

Cet attribut est une valeur de type Integer qui définit la longueur maximale d'un message Syslog. Soyez prudent avec cette valeur car le RFC 3164 (RFC Syslog) indique clairement que la longueur maximale d'une trame Syslog doit être inférieure à 1024.

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur "codée en dur" dans le code est fixée à "1024".

Attribut

DefaultEndOfMessage

Cet attribut est une valeur de type String qui définit les caractères spéciaux qui peuvent être ajoutés à la fin de chaque message Syslog. Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur "codée en dur" dans le code est fixée à "" (chaîne vide).

Les seules valeurs supportées sont :
"" : cette séquence vide n'ajoutera rien à la fin du message Syslog.
"CR" : cela va ajouter un code de retour chariot (valeur ASCII \r ou 0x0d) à la fin du message Syslog.
"LF" : cela va ajouter un code de saut de ligne (valeur ASCII \n ou 0x0a) à la fin du message Syslog.
"CRLF" : cela va ajouter un code de retour chariot suivi d'un code de saut de ligne (valeurs ASCII \r\n ou 0x0d 0x0a) à la fin du message Syslog.

Répertoire

SyslogServer

Le service WinAgentLog est en mesure de transmettre les messages EventLog simultanément à plusieurs serveurs Syslog. Il suffit pour cela de définir plusieurs blocs "<ServerList/Server>", un pour chaque serveur Syslog.

6-6 - Le bloc de paramètres <SyslogServerList/SyslogServer>

Ce bloc contient les paramètres utilisés pour définir le comportement de WinAgentLog pour un serveur Syslog particulier.

XML

Nom

Type et rôle

Informations complémentaires

Attribut

Name

Cet attribut est une valeur de type String qui définit le nom ou l'adresse IP du serveur Syslog distant.

Si cet attribut n'est pas défini, le bloc SyslogServer courant est ignoré.

Attribut

Enabled

Cet attribut est une de type Boolean ("Yes" ou "No") qui définit si le bloc SyslogServer courant doit être ignoré.

Si cet attribut n'est pas défini ou ne vaut pas "Yes", le bloc EventLog courant est ignoré.

Attribut

Port

Cet attribut est une valeur de type Integer qui définit le port de destination utilisé par le serveur Syslog distant.

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur est celle définie pour l'attribut "DefaultPort".

Attribut

Protocol

Cet attribut est une valeur de type String qui définit la couche de protocole utilisée par le serveur Syslog distant. La seule valeur supportée pour l'instant est "udp".

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur est celle définie pour l'attribut "DefaultProtocol".

Attribut

MaxLength

Cet attribut est une valeur de type Integer qui définit la longueur maximale d'un message Syslog. Soyez prudent avec cette valeur car le RFC 3164 (RFC Syslog) indique clairement que la longueur maximale d'une trame Syslog doit être inférieure à 1024.

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur est celle définie pour l'attribut "DefaultMaxLength".

Attribut

EndOfMessage

Cet attribut est une valeur de type String qui définit les caractères spéciaux qui peuvent être ajoutés à la fin de chaque message Syslog. Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur est celle définie pour l'attribut "DefaultEndOfMessage".

Les seules valeurs supportées sont :
"" : cette séquence vide n'ajoutera rien à la fin du message Syslog.
"CR" : cela va ajouter un code de retour chariot (valeur ASCII \r ou 0x0d) à la fin du message Syslog.
"LF" : cela va ajouter un code de saut de ligne (valeur ASCII \n ou 0x0a) à la fin du message Syslog.
"CRLF" : cela va ajouter un code de retour chariot suivi d'un code de saut de ligne (valeurs ASCII \r\n ou 0x0d 0x0a) à la fin du message Syslog.

6-7 - Le bloc de paramètres <Heartbeat>

Ce bloc contient les paramètres utilisés pour définir le comportement de la fonctionnalité WinAgentLog heartbeat.

XML

Nom

Type et rôle

Informations complémentaires

Attribut

TimeoutMs

Cet attribut est une valeur de type Integer qui définit le délai en millisecondes entre deux messages heartbeat.

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur "codée en dur" dans le code est fixée à "60000" (un message heartbeat toutes les minutes).

Attribut

Enabled

Cet attribut est une valeur de type Boolean qui définit si la fonctionnalité heartbeat de WinAgentLog est activée ou non.

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur "codée en dur" dans le code est fixée à "Yes" (envoi de messages heartbeat).

Attribut

Facility

Cet attribut est une valeur de type Integer qui définit la fonctionnalité Syslog utilisée par les messages heartbeat.

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur "codée en dur" dans le code est fixée à "23" (fonctionnalité Syslog local 7).

Attribut

Severity

Cet attribut est une valeur de type Integer qui définit la sévérité Syslog utilisée par les messages heartbeat.

Si cet attribut n'est pas défini dans le fichier de configuration, sa valeur "codée en dur" dans le code est fixée à "6" (sévérité Syslog Information).

7 - Formater les messages générés par WinAgentLog

Préparer un message Syslog et l'envoyer vers un serveur Syslog se fait en trois étapes :

- suppression des caractères indésirables ;

- application d'un format ;

- troncature et traduction.

7-1 - Supprimer les caractères indésirables

La première chose qui est modifiée dans un message EventLog, c'est la gestion de certains caractères non imprimables. Tous les retours chariot, les sauts de ligne ou les tabulations sont remplacés :

- tout caractère retour chariot (code ASCII CR ou valeur ASCII 0x0d) est remplacé par la chaîne "\r" ;

- tout caractère saut de ligne (code ASCII LF ou valeur ASCII 0x0a) est remplacé par la chaîne "\n" ;

- tout caractère tabulation (code ASCII TAB ou valeur ASCII 0x09) est remplacé par la chaîne "\t".

7-2 - Appliquer un format

Lors du transfert d'un message EventLog à un serveur Syslog, il est possible de définir quelles informations seront écrites dans le message. Ceci est fait en spécifiant un format de message avec des valeurs particulières. Le format du message à utiliser est spécifié par les attributs "Format" ou "DefaultFormat" dans le fichier de configuration.

Lors de la création du message, le service WinAgentLog remplacera certaines valeurs particulières par leurs vraies valeurs que l'on trouve dans le message EventLog.

Le tableau suivant montre les valeurs spéciales existantes et la valeur qu'elles représentent :

Valeur spéciale

Remplacée par

$PROVIDER

Remplacé par le nom de la source du message EventLog.

$EVENTID_LOW

Remplacé par le poids faible de l'identifiant du message EventLog.

$EVENTID_HIGH

Remplacé par le poids fort de l'identifiant du message EventLog.

$EVENTID_FULL

Remplacé par l'identifiant du message EventLog.

$LEVEL_ID

Remplacé par le nombre représentant la sévérité du message EventLog.

$LEVEL_STR

Remplacé par la chaîne de caractères représentant la sévérité du message EventLog.

$RECORD_NUMBER

Remplacé par le numéro d'enregistrement dans la base de données des messages EventLog.

$PROCESS_ID

Remplacé par l'identifiant du processus qui a généré le message EventLog.

$THREAD_ID

Remplacé par l'identifiant du thread qui a généré le message EventLog.

$CHANNEL

Remplacé par le nom du journal dans lequel est stocké le message EventLog.

$COMPUTER

Remplacé par le nom de la machine sur laquelle a été généré le message EventLog.

$MESSAGE

Remplacé par le texte complet du message EventLog.

$MSG_ID

Remplacé par le numéro de message EventLog. Ce numéro est généré par WinAgentLog, il commence à 0 et est incrémenté pour chaque nouveau message EventLog.

$FACILITY_ID

Remplacé par la valeur de la fonctionnalité Syslog utilisée pour ce message EventLog.

$FACILITY_STR

Remplacé par le texte de la fonctionnalité Syslog utilisée pour ce message EventLog.

$SEVERITY_ID

Remplacé par la valeur de la sévérité Syslog utilisée pour ce message EventLog.

$SEVERITY_STR

Remplacé par le texte de la sévérité Syslog utilisée pour ce message EventLog.

$TIME_CREATED

Remplacé par la date de création du message EventLog. Le format de la date est spécifié par les attributs "DateFormat"ou "DefaultDateFormat" dans le fichier de configuration.

$USER_SID

Remplacé par le SID (Security Identifier) de l'utilisateur qui a généré cet événement EventLog. Cette information peut ne pas être disponible si elle n'a pas de sens dans le contexte de l'événement.

$USER_NAME

Remplacé par le nom réel de l'utilisateur qui a généré cet événement EventLog. Cette information peut ne pas être disponible si elle n'a pas de sens dans le contexte de l'événement.

Par exemple, avec le format de message suivant :

Format: "MSG_ID='$MSG_ID',
RECORD_NUMBER='$RECORD_NUMBER',
TIME_CREATED='$TIME_CREATED',
FACILITY_ID='$FACILITY_ID',
FACILITY_STR='$FACILITY_STR',
SEVERITY_ID='$SEVERITY_ID',
SEVERITY_STR='$SEVERITY_STR',
COMPUTER='$COMPUTER',
CHANNEL='$CHANNEL',
PROVIDER='$PROVIDER',
EVENTID_LOW='$EVENTID_LOW',
EVENTID_HIGH='$EVENTID_HIGH',
EVENTID_FULL='$EVENTID_FULL',
LEVEL_ID='$LEVEL_ID',
LEVEL_STR='$LEVEL_STR',
PROCESS_ID='$PROCESS_ID',
THREAD_ID='$THREAD_ID',
USER_SID='$USER_SID',
USER_NAME='$USER_NAME',
MESSAGE='$MESSAGE'"

Les messages suivants peuvent être générés :

Message 1: "Dec 22 17:18:20 192.168.1.100
MSG_ID='8',
RECORD_NUMBER='98529',
TIME_CREATED='22/12/2010 16:18:19',
FACILITY_ID='16',
FACILITY_STR='local 0',
SEVERITY_ID='6',
SEVERITY_STR='Information',
COMPUTER='lumiere',
CHANNEL='System',
PROVIDER='Service Control Manager',
EVENTID_LOW='7036',
EVENTID_HIGH='16384',
EVENTID_FULL='1073748860',
LEVEL_ID='4',
LEVEL_STR='Information',
PROCESS_ID='784',
THREAD_ID='392',
USER_SID='',
USER_NAME='',
MESSAGE='Le service Service de rapport d'erreurs Windows est entré dans l'état : arrêté.'"

Message 2: "Dec 22 17:20:42 192.168.1.100
MSG_ID='12',
RECORD_NUMBER='98530',
TIME_CREATED='22/12/2010 16:20:41',
FACILITY_ID='16',
FACILITY_STR='local 0',
SEVERITY_ID='6',
SEVERITY_STR='Information',
COMPUTER='lumiere',
CHANNEL='System',
PROVIDER='Microsoft-Windows-Winlogon',
EVENTID_LOW='7001',
EVENTID_HIGH='0',
EVENTID_FULL='7001',
LEVEL_ID='4',
LEVEL_STR='Information',
PROCESS_ID='3348',
THREAD_ID='3104',
USER_SID='S-1-5-18',
USER_NAME='AUTORITE NT\Système',
MESSAGE='Notification d'ouverture de session utilisateur pour le Programme d'amélioration de l'expérience utilisateur'"

7-3 - Tronquer et Traduire

La troisième étape consiste à tronquer la longueur du message à la valeur spécifiée par l'attribut "MaxLength" ou "DefaultMaxLength".

Et enfin, le message est traduit en utilisant le jeu de caractères UTF-8 avant de le transférer vers le serveur Syslog.

8 - Déboguer le service WinAgentLog

Le service WinAgentLog génère des messages de trace pour aider au débogage en cas de problème ou de bogue. Le programme utilise la bibliothèque WinLog.

- Ce fichier de débogage est toujours nommé "WinLog_WinAgentLog.log" et son emplacement par défaut est "c:\".

- La variable d'environnement "WINLOG_FEATURE_LEVEL" peut être réglée afin de définir quel niveau log sera écrit dans le fichier journal. S'il est réglé sur 0, seul un petit nombre de messages de trace est généré. S'il est défini à 4 294 967 295, tous les messages de trace possibles sont écrits dans le fichier journal. Vous pouvez positionner n'importe lequel des 32 bits du nombre pour autoriser les niveaux 1 à 32, le niveau 0 est toujours activé.

- La variable d'environnement "WINLOG_FILE_FOLDER" peut être réglée pour changer le dossier où générer les fichiers log. S'il elle n'est pas définie, la valeur par défaut est "c:\".

- La variable d'environnement "WINLOG_FILE_SIZEMAX" peut être réglée pour définir la taille maximale en octets d'un fichier journal avant de le faire tourner. Si elle n'est pas définie, la valeur par défaut est 1 000 000 d'octets.

- La variable d'environnement "WINLOG_FILE_HISTORYSIZE" peut être positionnée pour définir le nombre maximum de fichiers journaux. Si elle n'est pas définie, la valeur par défaut est de 10 fichiers.

- Si la variable d'environnement "WINLOG_FILE_ENABLED" est réglée sur 0, la fonction de débogage est totalement invalidée.

9 - Conclusions

Cette présentation du programme EventLog est maintenant terminée, n'hésitez par à commenter dans la discussion prévue à cet effet : Commentez .

9-1 - Environnement de développement et de test

Ce programme est développé dans l'environnement suivant :

- système d'exploitation Windows 7 Professional ;

- Visual Studio 2005 Professional ;

- langage C++ ;

- boost version 1.44 ;

- Inno Setup pour la réalisation du programme d'installation.

Le programme "WinAgentLog" a été testé et fonctionne dans les environnements suivants :

- Windows 2000 32 bits ;

- Windows XP 32 bits ;

- Windows Seven 64 bits ;

- Windows 2003 32 bits ;

- Windows 2003 64 bits ;

- Windows 2008 64 bits.

Le programme "WinAgentLog" n'a été testé dans les environnements suivants :

- Windows Vista 32 bits ;

- Windows Vista 64 bits ;

- Windows Seven 32 bits ;

- Windows 2008 32 bits.

Le programme "WinAgentLog" ne fonctionne pas (et ne fonctionnera jamais) dans les environnements suivants :

- Windows NT 4.0, Windows NT 3.51, Windows NT 3.5 ;

- Windows Me, 98, 95 ;

- Windows 3.11, 3.1, 3.0.

Si le programme WinAgentLog ne fonctionne pas dans votre environnement, n'hésitez pas à le signaler dans la discussion prévue à cet effet : Commentez .

9-2 - Prochaines fonctionnalités

Les prochaines fonctionnalités prévues sont :

- support des protocoles TCP et SSL pour les communications Syslog ;

- utilisation d'une codepage configurable lors de l'envoi des messages Syslog ;

- ajout de la rétention de logs pour les connexions TCP et SSH lorsque la connexion TCP ou SSH est cassée ou non ouverte ;

- ajout d'une limitation configurable de la bande passante sortante pour les messages Syslog.

9-3 - Remerciements

Je tiens à remercier jacques_jean pour l'aide qu'il m'a apportée lors de la relecture ce document.