Journalisation et traçage

En plus des traces à des fins de diagnostic, pour lesquelles plus d'informations sont disponibles dans le chapitre Dépannage, PcVue supporte également la journalisation et le traçage dans le but de surveiller l'activité.
La surveillance de l'activité est une facette importante du déploiement en production car elle permet de collecter des événements pertinents pour la gestion des alertes et des incidents, les investigations forensics et l'analyse post-mortem. La journalisation est généralement utilisée en conjonction avec le module Add-on Agent SNMP. Elle joue également un rôle majeur dans les activités de vérification et de conformité réglementaire.

Les fonctionnalités de journalisation et de traçage prennent en charge les types de cibles suivants :

  • Stockage des événements dans des fichiers journaux locaux et affichage avec le Log Monitor

  • Journaux d'événements Windows et affichage avec l'observateur d'événements Windows

  • Envoi d'événements pour collecte par des agrégateurs de logs externes, y compris les serveurs Syslog

Cette rubrique décrit comment personnaliser les paramètres de journalisation et de traçage par défaut, et comment configurer une cible Syslog.

La journalisation et le traçage dans PcVue sont basés sur le projet open source NLog.
NLog est une plate-forme de journalisation flexible, elle permet d'envoyer facilement des événements à plusieurs cibles, y compris des fichiers, des bases de données et des agrégateurs de logs. Plus d'informations sont disponibles sur https://github.com/NLog/NLog

Veuillez contacter votre revendeur si vos exigences vont au-delà des informations fournies dans cette rubrique et vous avez besoin d'aide pour personnaliser la journalisation et le traçage.

En raison de son impact potentiel sur l'infrastructure informatique, la configuration des cibles de journalisation et de traçage doit être effectuée conformément à la politique IT applicable et sous la supervision d'un administrateur système responsable.

Paramètres NLog par défaut

NLog est configuré en utilisant un fichier Xml appelé NLog.Common.config qui se trouve dans le dossier Bin du logiciel PcVue. Le fichier de configuration fourni par défaut dans le cadre de l'installation défini deux cibles locales, une sortie de type fichier appelé sv.log et l'Observateur d'événements Windows. FerméVoir le fichier

Copier

NLog.Common.config

<?xml version="1.0" encoding="utf-8" ?>
<nlog
    xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <!-- go to https://github.com/nlog/NLog/wiki/Configuration-file for more information -->

    <extensions>
        <add assemblyFile="NLogAI.dll"/>
    </extensions>

    <variable name="logFilesDir" value="${binDir}\Log Files" />
    <!--<variable name="logFilesDir" value="${binDir}\..\Logs" />-->
    <variable name="localDateTime" value="${date:format=yyyy/MM/ddTHH\:mm\:ss.fffzzz}" />
    <variable name="universalDateTime" value="${date:universalTime=true:
    format=yyyy/MM/ddTHH\:mm\:ss.fffZ}" />
    <variable name="sessionId" value="${processinfo:property=SessionId}" />
    <variable name="userName" value="${windows-identity:userName=true:domain=false}" />
    <variable name="userNameWithDomain" value="${windows-identity:userName=true:domain=true}" />
    <variable name="shortProcessName" value="${processname:fullName=false}" />
    <variable name="fullProcessName" value="${processname:fullName=true}" />

    <targets>
        <default-target-parameters xsi:type="File" encoding="utf-8" />
        <target
            name="sv.aiXml"
            xsi:type="File"
            fileName="${logFilesDir}\sv.log"
            archiveFileName="${logFilesDir}\sv-{#}.log"
            archiveAboveSize="52428800"
            archiveNumbering="Rolling"
            maxArchiveFiles="3"
            layout="${aiXmlEvent:indent=true:newLineOnAttributes=false:
            includeSourceInfo=false:includeCallSite=false:includeStackTrace=false}">
        </target>
    </targets>

    <targets>
        <target
            name="sv.EventLog"
            xsi:type="EventLog"
            log="Application"
            source="SV Applications"
            layout="[${logger}]${newline}${message}${newline}${newline}
            UserAccount: ${userNameWithDomain}${newline}SessionId: 
            ${sessionId}${newline}ProcessName: ${shortProcessName}
            ${newline}ProcessId: ${processid}${newline}ThreadId: ${threadid}">
        </target>
    </targets>

    <rules>
        <logger name="*" minlevel="Debug" writeTo="sv.aiXml" />
        <logger name="*" minlevel="Info" writeTo="sv.EventLog" />
    </rules>

    <include file="NLog.Syslog.config" ignoreErrors="true" />
    <include file="NLog.Custom.config" ignoreErrors="true" />

</nlog>

Fournir une description complète de chaque élément est au-delà du cadre de cette aide, mais la structure de base est la suivante. Les éléments suivants sont des éléments de premier niveau avec des cibles et des règles obligatoires dans n'importe quelle configuration :

  • targets - Définit les cibles / sorties pour les logs

  • rules- Définit quels composants émetteurs d'événements et niveaux de log sont actifs, et leurs cibles de sortie

  • extensions – Charge les extensions NLog depuis un fichier *.dll

  • include - Pour inclure un fichier de configuration externe

  • variable - Définit les variables de configuration et leurs valeurs. Par exemple
    <variable name="logFilesDir" value="${binDir}\Log Files" /> définit l'emplacement du dossier des fichiers journaux du logiciel PcVue

Chaque cible est représentée par un élément target. Il y a deux attributs obligatoires pour chaque target :

  • name - Le nom par lequel la target est connue dans le fichier de configuration

  • xsi:type - Le type de cible - par exemple Fichier ou Base de données

En plus de ces attributs, les targets acceptent d'autres attributs dépendant du type cible. Par exemple, pour la cible fichier :

  • fileName définit le nom effectif du fichier cible

  • archiveFileName, archiveAboveSize, archiveNumbering et maxArchiveFiles contrôlent la taille du fichier cible et comment il est archivé une fois cette taille atteinte

  • layout - Le contenu et la structure de la sortie

Et pour la cible d'observateur d'événements Windows :

  • source - La source des messages qui apparaîtront dans l'observateur d'événements Windows

  • layout - Le contenu et la structure de la sortie

Une description complète des éléments de configuration de NLog peut être trouvée sur https://github.com/nlog/NLog/wiki/Configuration-file

Niveaux de journalisation

Chaque entrée de journal a un niveau. Et chaque logger est configuré pour inclure ou ignorer certains niveaux. Une configuration commune permet de spécifier le niveau minimum où ce niveau et des niveaux plus élevés sont inclus. Par exemple, si le niveau minimum est Info, alors les niveaux Info, Warn, Error et Fatal sont journalisés, mais Debug et Trace sont ignorés.

Niveau de journalisation Description Exemple
Trace Niveau le plus verbeux. Utilisé pendant le développement de l'application pour le débogage  
Debug Evénements internes intéressants RunningAsService = false
Info Informations qui mettent en évidence la progression ou des événements de la vie de l'application Étapes de chargement de projet
Warn Avertissements concernant les problèmes de validation ou les échecs temporaires récupérables Impossible de trouver une clé de protection valide
Error Erreurs dans des cas où la fonctionnalité a échoué ou des exceptions ont été trappées Erreurs de chien de garde
Fatal Niveau critique. L'application est sur le point d'échouer La version de l'API Winsock est invalide

La cible sv.log et le Log Monitor

Les paramètres par défaut du fichier de configuration NLog incluent une cible de type fichier journal local qui génère un fichier nommé sv.log dans le dossier <InstallDir>\Bin\Log Files. Le fichier généré a une taille maximale de 50 Mo, après quoi il est automatiquement archivé et l'enregistrement recommence. Les fichiers d'archive sont nommés sv-n.log, où n est un nombre de 0 à 2 (sv-0.log est le plus récent).

Le contenu du fichier sv.log peut être consulté en temps réel en utilisant le Log Monitor. FerméVoir l'image

La cible journal des événements Windows et l'observateur d'événements Windows

Les paramètres par défaut du fichier de configuration NLog incluent une cible qui envoie des événements vers le journal des événements de Windows.
Le journal des événements Windows peut être consulté à l'aide de l'observateur d'événements Windows. FerméVoir l'image

Paramètres de la cible Syslog

L'implémentation PcVue de NLog inclut une cible Syslog qui permet d'envoyer des événements à un agrégateur Syslog. Syslog est défini par plusieurs RFC, et la configuration par défaut nécessite des réglages pour répondre aux besoins spécifiques des outils utilisés dans votre système. Brièvement, les RFC sont les suivantes, elles sont disponibles sur le site Web de l'IETF :

  • RFC 3164 - La spécification d'origine pour le format des messages

  • RFC 5424 - Spécification plus récente dont l'origine est la reconnaissance de Syslog en tant que standard

  • RFC 5425 - Support de Syslog sur TLS (transport layer security)

  • RFC 5426 - Support de Syslog sur UDP

  • RFC 6587 - Transmission de messages Syslog sur TCP

La cible Syslog est configurée en ajoutant un fichier nommé NLog.Targets.Syslog.config dans le dossier Bin. Pour voir un exemple de ce fichier, cliquez ici. FerméVoir le fichier

Copier

NLog.Syslog.config sample

<?xml version="1.0" encoding="utf-8" ?>
<nlog
  xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
  xmlns:sl="http://www.nlog-project.org/schemas/NLog.Targets.Syslog.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <!-- go to https://github.com/luigiberrettini/NLog.Targets.Syslog for more information -->

  <extensions>
    <add assemblyFile="NLog.Targets.Syslog.dll"/>
  </extensions>

  <targets>
    <target name="sv.Syslog" xsi:type="sl:Syslog">
      <sl:layout xsi:type="SimpleLayout" text="${message}${exception:format=ToString,StackTrace}" />
      <sl:enforcement>
        <sl:splitOnNewLine>false</sl:splitOnNewLine>
        <sl:transliterate>false</sl:transliterate>
        <sl:replaceInvalidCharacters>false</sl:replaceInvalidCharacters>
        <sl:truncateFieldsToMaxLength>true</sl:truncateFieldsToMaxLength>
        <sl:truncateMessageTo>1024</sl:truncateMessageTo>
      </sl:enforcement>
      <sl:messageCreation>
        <!-- facility name: Local0, Local1, Local2, Local3, Local4, Local5, Local6 or Local7 -->
        <sl:facility>Local4</sl:facility>
        <sl:perLogLevelSeverity>
          <sl:fatal>Critical</sl:fatal>
          <sl:error>Error</sl:error>
          <sl:warn>Warning</sl:warn>
          <sl:info>Notice</sl:info>
          <sl:debug>Informational</sl:debug>
          <sl:trace>Debug</sl:trace>
        </sl:perLogLevelSeverity>
        <!-- rfc: Rfc3164 or Rfc5424 -->
        <sl:rfc>Rfc5424</sl:rfc>
        <!-- settings related to RFC 3164 -->
        <sl:rfc3164 hostname="${machinename}" tag="${logger}: ">
          <sl:outputPri>true</sl:outputPri>
          <sl:outputHeader>true</sl:outputHeader>
        </sl:rfc3164>
        <!-- settings related to RFC 5424 -->
        <sl:rfc5424 hostname="${machinename}" appName="${logger}" procId="${processid}" msgId="-">
          <sl:disableBom>false</sl:disableBom>
        </sl:rfc5424>
      </sl:messageCreation>
      <sl:messageSend>
        <!-- protocol: UDP or TCP -->
        <sl:protocol>UDP</sl:protocol>
        <!-- settings related to UDP -->
        <sl:udp>
          <sl:server>127.0.0.1</sl:server>
          <sl:port>514</sl:port>
        </sl:udp>
        <!-- settings related to TCP -->
        <sl:tcp>
          <sl:server>127.0.0.1</sl:server>
          <sl:port>1468</sl:port>
          <!-- framing: nonTransparent or octetCounting -->
          <sl:framing>octetCounting</sl:framing>
          <!-- settings related to TLS -->
          <sl:tls>
            <sl:enabled>false</sl:enabled>
            <sl:useClientCertificates>false</sl:useClientCertificates>
            <sl:certificateStoreLocation></sl:certificateStoreLocation>
            <sl:certificateStoreName></sl:certificateStoreName>
            <sl:certificateFilterType></sl:certificateFilterType>
            <sl:certificateFilterValue></sl:certificateFilterValue>
          </sl:tls>
        </sl:tcp>
      </sl:messageSend>
    </target>
  </targets>

  <rules>
    <logger name="*" minlevel="Info" writeTo="sv.Syslog" />
  </rules>

</nlog>

Ce fichier d'exemple inclut la configuration pour les RFC 3164 et RFC 5424, les protocoles TCP et UDP, et TLS. Si vous utilisez cet exemple comme base pour votre configuration, assurez-vous que vous définissez correctement le paramètre rfc.

Fournir une description complète de chaque élément n'entre pas dans le cadre de cette aide, mais la structure de base est la suivante :

  • enforcement - Paramètres liés à l'application des règles sur les messages. La longueur maximale d'un message est définie par les RFC supportées et le paramètre TruncateMessageTo doit être défini en conséquence.

  • messageCreation - Paramètres liés à la création des messages dans le format défini par la RFC 3164 ou la RFC 5424.

  • messageSend - Paramètres liés à la façon dont les messages sont envoyés. Cela inclut le protocole utilisé, soit TCP soit UDP, l'adresse et le port du serveur et les paramètres de sécurité de la couche de transport.

Une description complète des éléments de configuration de NLog peut être trouvée sur https://github.com/luigiberrettini/NLog.Targets.Syslog

Bien que les composants de base NLog et Syslog fournis avec les packages d'installation sont tenus à jour régulièrement, certains éléments de configuration décrits sur les pages GitHub données ici comme références peuvent n'être applicables qu'à une version des composants qui n'est pas encore fournie avec PcVue.

Lors de l'utilisation du TCP, le paramètre appelé framing, défini dans la RFC 6587 (octetCounting vs nonTransparent), doit souvent être ajusté pour répondre aux attentes du récepteur Syslog. Reportez-vous à la documentation de l'agrégateur Syslog que vous utilisez.