Oracle Database Appliance上のMicronaut

Oracle Database Appliance上のMicronautに関するFAQです。

DropwizardとMicronautの置換により、Oracle Database Applianceリリース19.16でユーザーに表示される変更はありますか。

はい。既存のDropwizardベースのDCS構成JSONファイルは、MicronautベースのDCS構成YMLファイルおよびログバックXMLファイルに置き換えられます。psコマンドを実行してDCSプロセスをリストすると、MicronautベースのDCSアプリケーションの起動に使用されるjavaコマンドが異なるため、異なるJVMパラメータが表示されます。
たとえば、Dropwizardベースの出力は次のようになります:
java -Doracle.security.jps.config=/opt/oracle/dcs/agent/jps-config.xml -jar  /opt/oracle/dcs/bin/dcs-agent*.jar server /opt/oracle/dcs/conf/dcs-agent.json
Micronautベースの出力は次のようになります:
java -Doracle.security.jps.config=/opt/oracle/dcs/agent/jps-config.xml -Dlogback.configurationFile=/opt/oracle/dcs/conf/dcs-agent-logback.xml -Dmicronaut.config.files=/opt/oracle/dcs/conf/dcs-agent.yml -Dold.config.files=/opt/oracle/dcs/conf/dcs-agent.json -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl -jar /opt/oracle/dcs/bin/dcs-agent*.jar

DCSアプリケーションがOracle Database ApplianceのMicronautで実行されているかどうかを確認するにはどうすればよいですか。

DCSアプリケーションのログをチェックして、アプリケーションがMicronautとDropwizardのどちらを使用しているかを確認します。DCSアプリケーションの起動が完了すると、DCSアプリケーション・ログ・ファイルに次のMicronaut情報メッセージが表示されます:
---------------
2022-01-29 14:14:20,886 INFO [main] [] i.m.r.Micronaut: Startup completed in 1226ms. Server Running: https://<host>:<port>
---------------
Note: i.m.r.Micronaut means io.micronaut.runtime.Micronaut

前述のログ・メッセージから、DCSアプリケーションがDropwizardではなくMicronautで実行されていることは明らかです。

DropwizardベースのDCSアプリケーションでは、ログ・メッセージは次のようになります:
---------------
2022-01-27 03:08:49,398 INFO [main] [] o.e.j.s.AbstractConnector: Started application@67be1284{SSL, (ssl, http/1.1)}{0.0.0.0:<port>}
---------------
Note : Here, o.e.j.s.AbstractConnector means org.eclipse.jetty.server.AbstractConnector

Micronautに移動した後、ログ・メッセージ形式に変更はありますか。

いいえ。既存のログ・メッセージ形式がMicronautに引き継がれます。

Oracle Database Applianceリリース19.16以前のリリース間でロギング機能に違いはありますか。

はい。ロギング構成ファイルが変更されました。以前のロギング構成ファイルの変更は、アプリケーション固有のJSON構成ファイル(DCSエージェントの場合はdcs-agent.json、DCS管理の場合はdcs-admin.json、DCSコントローラの場合はdcs-controller.ymlなど)の一部でした。

Oracle Database Applianceリリース19.16以降では、ロギング構成の変更は、個別のアプリケーション固有のログバックXML構成ファイル(DCSエージェントの場合はdcs-agent-logback.xml、DCS管理の場合はdcs-admin-logback.xml、DCSコントローラの場合はdcs-controller-logback.xmlなど)にあります。ログ・メッセージのパターンおよびログ・ファイル名は変更されないことに注意してください。

Oracle Database Applianceリリース19.16以降では、ログ構成の動的リロードもサポートされています。ログ・レベルをINFOからDEBUGに変更するなど、DCSアプリケーション固有のログバックXMLファイルが変更されるたびに、新しい変更が自動検出されます。新しいロギング構成の変更は、DCSアプリケーションを再起動しなくても自動的に適用されます。この機能は、MicronautベースのOracle Database Applianceリリース19.16 DCSアプリケーションで導入され、Oracle Database Applianceリリース19.15以前のDropWizardベースのDCSアプリケーションでは使用できません。

MicronautベースのDCSアプリケーションで設定される構成パラメータはどこにありますか。

構成ファイルの場所は変わりませんが、Oracle Database Applianceリリース19.16以降ではファイル名が変更されます。

Oracle Database Applianceリリース19.15以前では、DCSアプリケーション固有のJSON構成ファイルには次の3つのセクションがありました:
  • サーバー・ポート、HTTPまたはHTTPS、MTLS有効かどうか、トラストストアおよびキーストアの証明書の詳細などのサーバー構成パラメータ。
  • ノードID、ノード・リスト、エミュレーション・モードなどのカスタム構成パラメータ。
  • ログ・ファイル名、ログ・ローテーション詳細、ログ・メッセージ形式、ログ・レベルなどのログ構成パラメータ。
Oracle Database Applianceリリース19.16以降のDCSアプリケーションでは、構成ファイルは2つのファイルに分割されます:
  • YML構成ファイルには、サーバー・ポート、HTTPまたはHTTPS、MTLSが有効かどうか、トラストストアおよびキーストアの証明書の詳細などの2つのセクションがあります。ノードID、ノード・リスト、エミュレーション・モードなどのカスタム構成パラメータ。
  • ログバックXML構成には、ロギング固有の構成変更(ログ・ファイル名、ログ・ローテーション詳細、ログ・メッセージ形式、ログ・レベルなどのログ構成パラメータ)のみが含まれています。
DCSアプリケーションにパッチを適用すると、JSONファイルのカスタム設定が状況に応じてXMLファイルおよびログバックYMLに移行されます。

表1-4

DCSアプリケーション DCSアプリケーション固有の構成ファイル(サーバー構成パラメータ+ログ構成パラメータ+カスタム構成パラメータ)。19.14より前のリリースではJSONを使用するのに対し、19.14以降ではDCSコントローラにYMLを使用することに注意してください DCSアプリケーション固有の構成ファイル(サーバー構成パラメータ+カスタム構成パラメータ)。リリース19.16以降ではYMLを使用することに注意してください DCSアプリケーション固有のロギング構成ファイル(ログ構成パラメータ)。リリース19.16以降では、アプリケーション固有のlogback.xmlを使用することに注意してください。
DCSエージェント dcs-agent.json dcs-agent.yml dcs-agent-logback.xml
DCS管理 dcs-admin.json dcs-admin.yml dcs-admin-logback.xml
DCSコントローラ dcs-controller.json (リリース19.13以前)

dcs-controller.yml (リリース19.14以降)

dcs-controller.yml dcs-controller-logback.xml

Oracle Database Applianceリリース19.16以降でのロギング構成ファイルの構造はどのようになっていますか。

DCSエージェント・ロギング構成ファイル(dcs-agent-logback.xml):
<configuration scan="true" scanPeriod="60 seconds">
   <property name="DCS_LOG_DIR" value="/opt/oracle/dcs/log" />
 
   <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
     <file>${DCS_LOG_DIR}/dcs-agent.log</file>
     <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
       <!-- rollover daily -->
       <fileNamePattern>${DCS_LOG_DIR}/dcs-agent-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
       <!-- each file should be at most 100MB, keep 10 days worth of history -->
       <maxFileSize>100MB</maxFileSize>
       <maxHistory>10</maxHistory>
     </rollingPolicy>
     <encoder>
       <pattern>%date{"yyyy-MM-dd HH:mm:ss,SSS"} %level [%thread] [%mdc] %logger{15}: %m%n%rEx</pattern>
     </encoder>
   </appender>
 
   <appender name="httpAccessLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
     <file>${DCS_LOG_DIR}/dcs-agent-requests.log</file>
     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
       <!-- rollover daily -->
       <fileNamePattern>${DCS_LOG_DIR}/dcs-agent-requests-%d{yyyy-MM-dd}.log
       </fileNamePattern>
       <maxFileSize>100MB</maxFileSize>
       <maxHistory>10</maxHistory>
     </rollingPolicy>
     <encoder>
       <charset>UTF-8</charset>
       <pattern>%msg%n</pattern>
     </encoder>
   </appender>
 
   <root level="INFO">
     <appender-ref ref="ROLLING" />
   </root>
 
   <logger name="HTTP_ACCESS_LOGGER" additivity="false" level="info">
     <appender-ref ref="httpAccessLogAppender" />
   </logger>
 
   <logger name="io.micronaut" level="INFO"/>
   <logger name="com.oracle.dcs.agent" level="DEBUG"/>
</configuration>
DCS管理ロギング構成ファイル(dcs-admin-logback.xml):
<configuration scan="true" scanPeriod="60 seconds">
   <property name="DCS_LOG_DIR" value="/opt/oracle/dcs/log" />
 
   <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
     <file>${DCS_LOG_DIR}/dcs-admin.log</file>
     <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
       <!-- rollover daily -->
       <fileNamePattern>${DCS_LOG_DIR}/dcs-admin-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
       <!-- each file should be at most 100MB, keep 10 days worth of history -->
       <maxFileSize>100MB</maxFileSize>
       <maxHistory>10</maxHistory>
     </rollingPolicy>
     <encoder>
       <pattern>%date{"yyyy-MM-dd HH:mm:ss,SSS"} %level [%thread] [%mdc] %logger{15}: %m%n%rEx</pattern>
     </encoder>
   </appender>
 
   <appender name="httpAccessLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
     <file>${DCS_LOG_DIR}/dcs-admin-requests.log</file>
     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
       <!-- rollover daily -->
       <fileNamePattern>${DCS_LOG_DIR}/dcs-admin-requests-%d{yyyy-MM-dd}.log
       </fileNamePattern>
       <maxFileSize>100MB</maxFileSize>
       <maxHistory>10</maxHistory>
     </rollingPolicy>
     <encoder>
       <charset>UTF-8</charset>
       <pattern>%msg%n</pattern>
     </encoder>
   </appender>
 
   <root level="INFO">
     <appender-ref ref="ROLLING" />
   </root>
 
   <logger name="HTTP_ACCESS_LOGGER" additivity="false" level="info">
     <appender-ref ref="httpAccessLogAppender" />
   </logger>
 
   <logger name="io.micronaut" level="INFO"/>
   <logger name="com.oracle.dcs.admin" level="DEBUG"/>
</configuration>
DCSコントローラ・ロギング構成ファイル(dcs-controller-logback.xml):
<configuration scan="true" scanPeriod="60 seconds">
   <property name="DCS_LOG_DIR" value="/opt/oracle/dcs/log" />
 
   <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
     <file>${DCS_LOG_DIR}/dcs-controller.log</file>
     <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
       <!-- rollover daily -->
       <fileNamePattern>${DCS_LOG_DIR}/dcs-controller-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
       <!-- each file should be at most 100MB, keep 10 days worth of history -->
       <maxFileSize>100MB</maxFileSize>
       <maxHistory>10</maxHistory>
     </rollingPolicy>
     <filter class="com.oracle.oda.controller.CORSLogFilter" />
     <encoder>
       <pattern>%date{"yyyy-MM-dd HH:mm:ss,SSS"} %level [%thread] [%mdc] %logger{15}: %m%n%rEx</pattern>
     </encoder>
   </appender>
 
   <appender name="httpAccessLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
     <file>${DCS_LOG_DIR}/dcs-controller-requests.log</file>
     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
       <!-- rollover daily -->
       <fileNamePattern>${DCS_LOG_DIR}/dcs-controller-requests-%d{yyyy-MM-dd}.log
       </fileNamePattern>
       <maxFileSize>100MB</maxFileSize>
       <maxHistory>10</maxHistory>
     </rollingPolicy>
     <encoder>
       <charset>UTF-8</charset>
       <pattern>%msg%n</pattern>
     </encoder>
   </appender>
 
   <root level="INFO">
     <appender-ref ref="ROLLING" />
   </root>
 
   <logger name="HTTP_ACCESS_LOGGER" additivity="false" level="info">
     <appender-ref ref="httpAccessLogAppender" />
   </logger>
 
   <logger name="io.micronaut" level="INFO"/>
   <logger name="com.oracle.oda.controller" level="DEBUG"/>
</configuration>