[vCSA 6.7] catalina*.log , localhost_access_log* により /storage/log の容量が枯渇する

vCSA 6.7 を使用している際、/storage/log/vmware/sso 配下に catalina*.log ,
localhost_access_log*
が大量に生成され、/storage/log の容量を圧迫してしまう
事象の対処策について記載します。

なお、vCSA 7.0 を使用している場合に catalina*.log ,localhost_access_log*
が大量に生成される事象については以下記事を確認ください。

catalina*.log, localhost_access_log* への対処方法

vCSA 6.7 にて、ある一定のバージョンを使用している場合、catalina*.log
や localhost_access_log* は世代数の設定が行われておりませんので際限
なく増え続けていきます。

vCSA 6.7 での catalina*.log, localhost_access_log* への対処策としては
以下いずれかの対処が必要です。

・vCenter Server Appliance 6.7 U3p 以上へのアップデート
・vCenter Server Appliance 6.7 の設定ファイルを編集する。


それぞれ、上記対処策について解説していきます。

vCSA 6.7 U3p 以上へのアップデート

vCSA 6.7 U3p では以下リリースノートの既知問題が修正されており、それに
伴い catalina*.log, localhost_access_log* 世代数が 10 に設定されています。

・VMware vCenter Server 6.7 Update 3p リリース ノート
   https://docs.vmware.com/jp/VMware-vSphere/6.7/rn/vsphere-vcenter-server-67u3p-               release-notes.html
   -> vCenter Single Sign-On ログ ファイルで tomcat-users.xml に関するエラーが報告される
   -------
   /storage/log にある vCenter Single Sign-On ログ ファイル内に 
   java.io.FileNotFoundException tomcat-users.xml (No such file or directory) のような
   複数のエラーが多数記録されることがあります。その結果、/storage/log はほぼいっぱいになります。

   本リリースで、この問題は修正されました。
   -------

上記リリースノートに記載の既知問題により vCSA 6.7 U3p 以前のバージョンでは
/storage/log/vmware/sso 配下の catalina*.log に以下 WARNING のログが大量に
記録されてしまい、catalina*.log の容量が増加し続けるといった事象がありました。

25-Sep-2022 07:42:40.303 WARNING [main] org.apache.catalina.users.MemoryUserDatabase.open Failed to close [conf/tomcat-users.xml]
        java.io.FileNotFoundException: /usr/lib/vmware-sso/vmware-sts/conf/tomcat-users.xml (No such file or directory)
                at java.io.FileInputStream.open0(Native Method)
                at java.io.FileInputStream.open(FileInputStream.java:195)
                at java.io.FileInputStream.<init>(FileInputStream.java:138)
                at java.io.FileInputStream.<init>(FileInputStream.java:93)
                at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
                at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
                at org.apache.catalina.users.MemoryUserDatabase.open(MemoryUserDatabase.java:466)
                at org.apache.catalina.users.MemoryUserDatabaseFactory.getObjectInstance(MemoryUserDatabaseFactory.java:107)
                at org.apache.naming.factory.FactoryBase.getObjectInstance(FactoryBase.java:96)
                at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
                at org.apache.naming.NamingContext.lookup(NamingContext.java:839)
                at org.apache.naming.NamingContext.lookup(NamingContext.java:159)
                at org.apache.naming.NamingContextBindingsEnumeration.nextElementInternal(NamingContextBindingsEnumeration.java:117)
                at org.apache.naming.NamingContextBindingsEnumeration.next(NamingContextBindingsEnumeration.java:71)
                at org.apache.naming.NamingContextBindingsEnumeration.next(NamingContextBindingsEnumeration.java:34)
                at org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.createMBeans(GlobalResourcesLifecycleListener.java:132)
                at org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.createMBeans(GlobalResourcesLifecycleListener.java:106)
                at org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.lifecycleEvent(GlobalResourcesLifecycleListener.java:81)
                at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
                at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
                at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366)
                at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:759)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.startup.Catalina.start(Catalina.java:688)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:498)
                at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:343)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:498)
                at org.apache.commons.daemon.support.DaemonLoader.start(DaemonLoader.java:241)

vCSA 6.7 U3p 以上のバージョンでは上記既知問題の修正に加え、catalina*.log,
localhost_access_log* の世代数が 10 に設定されています。

そのため、catalina*.log, localhost_access_log* への対処を実施する場合には
vCSA 6.7 U3p 以上のバージョンへアップデートしてください。

vCSA 6.7 の設定ファイルを編集する

アップデートによる対処ではなく、設定ファイルの編集により対処する場合は以下
手順にて可能です。
なお、以下は VMware 社から公開された手順では無いので実施する際には十分に
 注意してください。
 vCSA 6.7 U3p 以上のバージョンであれば、以下に実施する手順全てが既に実施
 されていますので、アップデートにより対処いただくことを強く推奨します。

【手順1】
vCSA の Bash シェルへアクセスし、以下ファイルのバックアップを取得します。
(vCSA のオフラインスナップショットでも可能。)
/usr/lib/vmware-sso/vmware-sts/conf/server.xml
/usr/lib/vmware-sso/vmware-sts/conf/logging.properties
【手順2】
/usr/lib/vmware-sso/vmware-sts/conf/server.xml から以下 [GlobalNamingResources]
タグ、[Realm]タグ の全てを削除します。
<GlobalNamingResources>
    <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase" />
</GlobalNamingResources>
<Realm className="org.apache.catalina.realm.LockOutRealm">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" />
</Realm>

上記 [手順2] は上述で案内したリリースノートの既知問題に対する対処となります。

【手順3】
以下の各ファイルを編集し、catalina*.log, localhost_access_log* の世代数を設定します。

・/usr/lib/vmware-sso/vmware-sts/conf/server.xml の "Host" タグに [maxDays="10"] 
  を追記します。
<Host appBase="webapps" autoDeploy="true" deployOnStartup="true" deployXML="true" name="localhost" unpackWARs="true">
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log." suffix=".txt" maxDays="10" />
    <Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" />
</Host>

※上記は、2 行目の文末 [suffix=”.txt”] の後に [maxDays=”10″] を追記しています。

・/usr/lib/vmware-sso/vmware-sts/conf/logging.properties に以下の各行を追記します。

    1catalina.org.apache.juli.FileHandler.maxDays = 10
    2localhost.org.apache.juli.FileHandler.maxDays = 10   
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
1catalina.org.apache.juli.FileHandler.bufferSize = -1
1catalina.org.apache.juli.FileHandler.maxDays = 10

2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.
2localhost.org.apache.juli.FileHandler.bufferSize = -1
2localhost.org.apache.juli.FileHandler.maxDays = 10

※上記は、[1catalina.org.apache.juli.FileHandler.~] から始まる行と
[2localhost.org.apache.juli.FileHandler.~] から始まる行の最終行
に追加してます。

【手順3】
最後に、vmware-stsd サービスを再起動して設定は完了です。
service-control --stop vmware-stsd ; service-control --start vmware-stsd

まとめ

vCSA 6.7 で catalina*.log ,localhost_access_log* への対処策を実施する場合、
vCSA 6.7 U3p 以上のバージョンへのアップデートによる対処であれば、その他
の既知問題に対する修正も行われるため、アップデートにより対処することを推奨
します。

なお、catalina*.log ,localhost_access_log* を手動で削除する場合の手順は以下
KB 83070 の手順で実施可能です。

Troubleshooting vCenter Appliance /storage/log directory is 80% or more full
タイトルとURLをコピーしました