我们在 vCenter 服务器上收到错误,提示日志磁盘空间不足。根据VMWare 知识库我们检查了哪些东西占用了空间。我们发现了大量名为“catalina_[DATE].log”的日志文件,大小为 11mb,可以追溯到近一年前。
我检查了日志的内容,每隔 10 分钟就会出现相同的错误消息:
2021-04-12T23:59:53.056Z WARN org.apache.catalina.users.MemoryUserDatabase 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.backgroundProcess(MemoryUserDatabase.java:700)
at org.apache.catalina.realm.UserDatabaseRealm.backgroundProcess(UserDatabaseRealm.java:160)
at org.apache.catalina.realm.CombinedRealm.backgroundProcess(CombinedRealm.java:308)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1145)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1381)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1353)
at java.lang.Thread.run(Thread.java:748)
VMWare 只是告诉我删除文件并扩大我的日志磁盘,我照做了。但它仍然困扰着我,不知道发生了什么,到目前为止,我还没有在网上找到任何与 vCenter 相关的东西。
有人知道这里发生了什么,以及如何解决此错误吗?我知道有很多方法可以忽略它,也许忽略它是安全的,但我只想知道错误本身是否可以修复。
答案1
正如消息所述,您的 Tomcat 安装缺少一个conf/tomcat-users.xml
文件。该文件包含 Tomcat 身份验证使用的组和用户。默认情况下,会定期监视和重新加载此文件。
因此您需要:
- 要么恢复文件默认内容,
- 或者,如果您根本不打算使用身份验证,请删除类型
<Resource>
和UserDatabase
所有类型的领域UserDatabaseRealm
(连同它LockoutRealm
嵌套在其中)来自您的server.xml
配置文件。
答案2
tomcat-users.xml 是一个默认配置文件,通常不使用,除非您在其控制台(常规命令行)上专门激活和管理 tomcat 访问创建用户。
在 redhat 服务器中,此文件的丢失通常是在升级 tomcat 时发生的,纠正此问题的最简单方法是从 tomcat 二进制文件中复制 tomcat-users.xml 并将其粘贴到您的安装位置(在您的情况下为 /usr/lib/vmware-sso/vmware-sts/conf/tomcat-users.xml)。
一旦文件被复制,您不需要做任何其他事情,它会在几秒钟后“重新加载”该文件,错误就会消失。
因此,只需在类似于此的位置(二进制文件)中查找文件并将其复制到 vCenter conf/ 文件夹中即可。如果您找到 vCenter 安装的备份文件夹并从中获取相同的文件,那就更好了:
[root@redhatlab apache-tomcat-9.0.45-src]# cd conf/
[root@redhatlab conf]# ll
total 232
-rw-r--r--. 1 root root 12873 Mar 30 10:29 catalina.policy
-rw-r--r--. 1 root root 7262 Mar 30 10:29 catalina.properties
-rw-r--r--. 1 root root 1400 Mar 30 10:29 context.xml
-rw-r--r--. 1 root root 1149 Mar 30 10:29 jaspic-providers.xml
-rw-r--r--. 1 root root 2313 Mar 30 10:29 jaspic-providers.xsd
-rw-r--r--. 1 root root 4144 Mar 30 10:29 logging.properties
-rw-r--r--. 1 root root 7588 Mar 30 10:29 server.xml
-rw-r--r--. 1 root root 2164 Mar 30 10:29 tomcat-users.xml
-rw-r--r--. 1 root root 2558 Mar 30 10:29 tomcat-users.xsd
-rw-r--r--. 1 root root 172359 Mar 30 10:29 web.xml
[root@redhatlab conf]# pwd
/root/apache-tomcat-9.0.45-src/conf
[root@redhatlab conf]#
干杯
答案3
问题显然是 vCenter 中的一个错误 - 我刚刚将所有实例更新到版本 7.0.0.10700,现在日志条目不再出现。 tomcat conf 文件仍然丢失,但看起来这个文件是不需要的,问题出在其他地方。