vSphere client: Performance overview not working

Various things seem to cause this to fail.

The error reported within the Performance Overview pane of vSphere client is:

Perf Charts service experienced an internal error
Report application initialization is not completed successfully. Retry in 60 seconds.

In my case, using a separate SQL server, upon looking in the SQL Server “current” log there were lots of entries like the following:

Logon    Login failed for user 'RCMTECH\vcenter$'. Reason: Token-based server access validation failed with an infrastructure error. Check for previous errors. [CLIENT: 192.168.10.58]
 Logon    Error: 18456, Severity: 14, State: 11.

Something was trying to authenticate to the vCenter SQL server with the computer account (LocalSystem) of the vCenter server. That was never going to work.

Also, looking in the vCenter stats.log file there were lots of entries like this:

[2012-08-06 09:55:19,148 Thread-2  ERROR com.vmware.vim.common.lifecycle.InitializerExecutor] Initialization error; attempt 14222 will begin in 60 seconds...
java.util.concurrent.ExecutionException: java.lang.IllegalStateException: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Login failed for user 'RCMTECH\vcenter$'.)
 at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
 at java.util.concurrent.FutureTask.get(FutureTask.java:83)
 at com.vmware.vim.common.lifecycle.InitializerExecutor$MonitorCallback.run(Unknown Source)
 at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.IllegalStateException: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Login failed for user 'RCMTECH\vcenter$'.)
 at com.vmware.vim.common.lifecycle.InitializerExecutor$MonitorCallback$1.run(Unknown Source)
 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
 at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
 at java.util.concurrent.FutureTask.run(FutureTask.java:138)
 at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
 at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 ... 1 more
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Login failed for user 'RCMTECH\vcenter$'.)
 at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
 at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
 at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
 at com.vmware.vim.common.vim.VcDataSourceInitializer.init(Unknown Source)
 at com.vmware.vim.stats.webui.startup.StatsReportInitializer.createInitializers(Unknown Source)
 at com.vmware.vim.stats.webui.startup.StatsReportInitializer.init(Unknown Source)
 ... 9 more
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'RCMTECH\vcenter$'.
 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:196)
 at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:246)
 at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:83)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2532)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:1929)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:1917)
 at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4026)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1416)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1061)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:833)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:716)
 at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:841)
 at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
 at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
 at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
 at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
 ... 14 more

Checking the logon account being used by the vctomcat service (aka VMware VirtualCenter Management Webservices) showed that it was running as LocalSystem. I stopped the service, changed it to use the same Active Directory account as the vpxd service (VMware VirtualCenter Server), and upon starting it again the performance overview is now working and there are no more “login failed” messages in the SQL Server or stats.log logs.

This entry was posted in vSphere and tagged , , , , , , . Bookmark the permalink.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.