Définir une stratégie de rotation des logs dans Talend Identity and Access Management - 8.0

Version
8.0
Language
Français
Product
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Real-Time Big Data Platform
Module
Talend Identity and Access Management
Content
Administration et monitoring > Monitoring de logs

Définir une statégie de rotation des logs dans Talend Identity et Access Management

Les logs produits par Talend Identity et Access Management peuvent devenir très nombreux et volumineux. Vous pouvez définir une stratégie de rotation des logs pour archiver ou supprimer automatiquement les logs qui ne sont plus utiles.
Différents types de logs sont stockés dans le dossier $IAM_HOME/apache-tomcat/logs.
  • catalina.out : log global, enregistrant les événements globaux sur le serveur Apache Tomcat.
  • Logs du serveur Apache Tomcat :
    • catalina.<date>.log
    • localhost.<date>.log
    • manager.<date>.log
    • host-manager.<date>.log
    Selon le fichier de configuration de ces logs, $IAM_HOME/apache-tomcat/conf/logging.properties, seuls les logs des derniers 90 jours sont conservés.
  • Logs d'accès : localhost_access_log.txt
  • Applications Spring Boot :
    • idp.log
    • oidc.log
    • scim.log
    • sts.log
    • audit.log
    • sts-tac.log
    • audit-tac.log
  • Syncope :
    • core-connid.log
    • core.log
    • core-persistence.log
    • core-rest.log
    • console.log
    • enduser.log

Le log catalina.out, les logs du serveur Apache Tomcat et les logs d'accès sont des logs Apache Tomcat standards, indépendants des produits Talend. Si vous devez définir une stratégie de rotation pour ces logs, consultez la documentation tierce (en anglais) concernant ces logs, par exemple, logrotate pour le log catalina.out ou les logs d'accès.

Les sections suivantes présentent comment définir une stratégie de rotation des logs pour les logs Spring Boot et Syncope.

Rotation des logs Spring Boot

Créez les fichiers logback.xml pour configurer la manière dont les logs Spring Boot sont générés.

Pour plus d'informations concernant le système de log Spring Boot, consultez https://www.baeldung.com/spring-boot-logging (en anglais)

Procédure

  1. Dans $IAM_HOME/apache-tomcat/conf/iam.properties, ajoutez une ligne pour indiquer le chemin d'accès aux fichiers de configuration des logs Spring Boot.

    Exemple

    logging.config=classpath:logback.xml
  2. Créez un fichier logback.xml pour chacune des applications Talend associées :

    Exemple

    vim $IAM_HOME/apache-tomcat/webapps/(idp|oidc|scim|sts|sts-tac)/WEB-INF/classes/logback.xml
    Remarque : Notez que les fichiers logback.xml pour scim.log et sts-tac.log existent déjà.
    Le contenu de chaque fichier logback.xml doit ressembler à ceci :
    <configuration>
             <property name="LOG_PATTERN"
                       value="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(-%5p) [%t] %-40.40logger{39} : %m%n" 
             />
             <appender name="FILE"
                       class="ch.qos.logback.core.rolling.RollingFileAppender">
                   <file>${CATALINA_BASE:-.}/logs/<app>.log</file>
                   <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                      <fileNamePattern>${CATALINA_BASE:-.}/logs/<app>.%d{yyyy-MM-dd}.log</fileNamePattern>
                      <maxHistory>10</maxHistory>
                      <totalSizeCap>100 mb</totalSizeCap>
                   </rollingPolicy>
                   <encoder>
                      <pattern>${LOG_PATTERN}</pattern>
                   </encoder>
             </appender>
             <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
                   <encoder>
                      <pattern>${LOG_PATTERN}</pattern>
                   </encoder>
             </appender>
             <root level="INFO">
                   <appender-ref ref="FILE" />
                   <appender-ref ref="STDOUT" />
             </root>
    </configuration>
    Pour sts.log et sts-tac.log, vous pouvez ajouter l'appender relatif à l'audit dans les fichiers logback.xml associés. Le contenu doit ressembler à ceci :
    <configuration>
             <property name="LOG_PATTERN"
                       value="%d{yyyy-MM-dd HH:mm:ss.SSS} -%highlight(%5p) [%t] %-40.40logger{39} : %m%n" />
    <!-- %d [%t] %-5p %c %x - %m%n -->
             <appender name="FILE"
                       class="ch.qos.logback.core.rolling.RollingFileAppender">
                   <file>${CATALINA_BASE:-.}/logs/<app>.log</file>
                   <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                      <fileNamePattern>${CATALINA_BASE:-.}/logs/<app>.%d{yyyy-MM-dd}.log</fileNamePattern>
                      <maxHistory>10</maxHistory>
                      <totalSizeCap>100 mb</totalSizeCap>
                   </rollingPolicy>
                   <encoder>
                      <pattern>${LOG_PATTERN}</pattern>
                   </encoder>
             </appender>
             <appender name="AUDIT"
                       class="ch.qos.logback.core.rolling.RollingFileAppender">
                   <file>${CATALINA_BASE:-.}/logs/<app>/audit-tac.log</file>
                   <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                       <fileNamePattern>${CATALINA_BASE:-.}/logs/<app>/audit-tac.%d{yyyy-MMdd}.log</fileNamePattern>
                       <maxHistory>10</maxHistory>
                       <totalSizeCap>20 mb</totalSizeCap>
                   </rollingPolicy>
                   <encoder>
                       <pattern>${LOG_PATTERN}</pattern>
                   </encoder>
             </appender>
             <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
                   <encoder>
                       <pattern>${LOG_PATTERN}</pattern>
                   </encoder>
             </appender>
             <logger name="org.talend.identity.sts.event.map.MapEventLogger" level="DEBUG" additivity="false">
                   <appender-ref ref="AUDIT" />
             </logger>
             <root level="INFO">
                   <appender-ref ref="FILE" />
                   <appender-ref ref="STDOUT" />
             </root>
    </configuration>
    Dans l'exemple, le niveau de log est défini dans chaque fichier logback.xml, mais vous pouvez le modifier de manière globale en ajoutant la ligne suivante dans le fichier iam.properties :
    logging.level.root=DEBUG
    La valeur du paramètre peut être
    • TRACE
    • DEBUG
    • INFO
    • WARN
    • ERROR

Rotation des logs Syncope

Définissez la stratégie de rotation dans $IAM_HOME/apache-tomcat/webapps/<app>/WEB-INF/classes/log4j2.xml.

Pour plus d'informations concernant cet appender de rotation des logs Syncope, consultez la documentation Apache (en anglais) : https://logging.apache.org/log4j/2.x/manual/appenders.html

Procédure

  1. Ouvrez le fichier $IAM_HOME/apache-tomcat/webapps/<app>/WEB-INF/classes/log4j2.xml et trouvez l'appender utilisé pour définir la stratégie de rotation des logs. Cet appender peut ressembler à ceci :

    Exemple

    <appenders>
        <RollingRandomAccessFile name="main" fileName="${sys:catalina.base}/logs/enduser.log"
                                 filePattern="${sys:catalina.base}/logs/enduser-%d{yyyy-MM-dd}.log.gz"
                                 immediateFlush="false" append="true">
             <PatternLayout>
                <pattern>%d{HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern>
             </PatternLayout>
             <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="250 MB"/>
             </Policies>
        </RollingRandomAccessFile>
    </appenders>
    Cette configuration par défaut signifie que la rotation s'effectue chaque jour et que la taille totale du fichier est limitée à 250 Mo.
  2. Si vous avez besoin d'ajouter une politique de nettoyage automatique, ajoutez une stratégie de rouleau (roller) à l'appender RollingRandomAccessFile. Par exemple :

    Exemple

    <appenders>
        <RollingRandomAccessFile name="main" fileName="${sys:catalina.base}/logs/enduser.log"
                                 filePattern="${sys:catalina.base}/logs/enduser-%d{yyyy-MM-dd}.log.gz"
                                 immediateFlush="false" append="true">
             <PatternLayout>
                <pattern>%d{HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern>
             </PatternLayout>
             <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="250 MB"/>
             </Policies>
             <DefaultRolloverStrategy max="100">
               <Delete basePath="${baseDir}" maxDepth="2">
                  <IfFileName glob="*/app-*.log.gz">
                     <IfLastModified age="30d">
                       <IfAny>
                        <IfAccumulatedFileSize exceeds="100 GB" />
                        <IfAccumulatedFileCount exceeds="10" />
                       </IfAny>
                     </IfLastModified>
                  </IfFileName>
                </Delete>
             </DefaultRolloverStrategy>
        </RollingRandomAccessFile>
    </appenders>
    
    Remarque : L'application Syncope utilise Log4j 2 pour gérer les niveaux de log. Ces niveaux peuvent être
    • OFF
    • FATAL
    • ERROR
    • WARN
    • INFO
    • DEBUG
    • TRACE
    • Tout
    Pour plus d'informations concernant ces niveaux, consultez la documentation Apache Log4j (en anglais) : Apache Log4J 2 custom logging levels.