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.
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
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 :
<?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 : 2 commentaires.
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 : 2 commentaires.
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.