Talend Identity and Access Managementでログのローテーション戦略を定義 - 8.0

Version
8.0
Language
日本語
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
管理と監視 > ログの監視

Talend Identity and Access Managementでログのローテーション戦略を定義する方法

Talend Identity and Access Managementによって生成されるログは、サイズも量も大きく増加することがあります。ログローテーション戦略を定義して、無用なログを自動的にアーカイブまたは削除できます。
$IAM_HOME/apache-tomcat/logsにはさまざまなタイプのログが保管されます。
  • catalina.out: これはTomcatサーバーでのグローバルイベントを記録するグローバルログです。
  • Tomcatサーバーログ:
    • catalina.<date>.log
    • localhost.<date>.log
    • manager.<date>.log
    • host-manager.<date>.log
    これらのログの設定ファイル($IAM_HOME/apache-tomcat/conf/logging.properties)に従って、過去90日間のログのみが保持されます。
  • アクセスログ: localhost_access_log.txt
  • 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

catalina.outログ、Tomcatサーバーログ、アクセスログはすべて標準Tomログで、Talend製品かから独立しています。これらのログのローテーション戦略を定義する必要がある場合は、それらのログに関するサードパーティドキュメンテーション(たとえば、catalina.outまたはアクセスログの場合はlogrotate)をご覧ください。

次のセクションでは、Spring BootログおよびSyncopeログのログローテーション戦略を定義する方法について説明します。

Spring Bootログローテーション

logback.xmlファイルを作成して、Spring Bootログがどうやって生成されるかを設定します。

Spring Bootロギングシステムの詳細は、https://www.baeldung.com/spring-boot-loggingをご覧ください。

手順

  1. $IAM_HOME/apache-tomcat/conf/iam.propertiesに、Spring Bootログの設定ファイルへのパスを示す新しい行を追加します。

    logging.config=classpath:logback.xml
  2. 関連する各Talendアプリケーションのlogback.xmlファイルを作成します。

    vim $IAM_HOME/apache-tomcat/webapps/(idp|oidc|scim|sts|sts-tac)/WEB-INF/classes/logback.xml
    注: scim.logsts-tac.loglogback.xmlファイルは既に存在しています。
    logback.xmlファイルのコンテンツは以下のように表示されるはずです:
    <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>
    sts.logsts-tac.logは、それらのlogback.xmlファイルに監査に関連するアペンダーを追加できます。これで、コンテンツは以下のように表示されるはずです:
    <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>
    例では、ログレベルが各logback.xmlファイルで定義されていますが、iam.propertiesファイルに次の行を追加すると、ログレベルをグローバルに変更できます。
    logging.level.root=DEBUG
    パラメーターの値は以下のいずれかです:
    • TRACE
    • DEBUG
    • INFO
    • WARN
    • ERROR

Syncopeログローテーション

$IAM_HOME/apache-tomcat/webapps/<app>/WEB-INF/classes/log4j2.xmlでローテーションポリシーを定義します。

このSyncopeログローテーションアペンダーに関する詳細は、Apacheドキュメンテーション(https://logging.apache.org/log4j/2.x/manual/appenders.html)をご覧ください。

手順

  1. $IAM_HOME/apache-tomcat/webapps/<app>/WEB-INF/classes/log4j2.xmlを開いて、ログローテーション戦略の定義に使用されるアペンダーを見つけます。このアペンダーは次のように表示されることがあります:

    <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>
    このデフォルト設定は、ローテーションが毎日行われて、合計ファイルサイズが250 MBに制限されていることを意味します。
  2. 自動クリーンアップポリシーを追加する必要がある場合は、RollingRandomAccessFileアペンダーにローラー戦略を追加します。例:

    <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>
    
    注: Syncopeアプリケーションでは、Log4J 2を使用して、そのログレベルを管理します。これらのレベルは以下のようです:
    • OFF
    • FATAL
    • ERROR
    • WARN
    • INFO
    • DEBUG
    • TRACE
    • ALL
    これらのレベルに関する詳細は、Apache Log4Jからのドキュメンテーション(Apache Log4J 2カスタムロギングレベル)をご覧ください。