Перейти к основному содержанию

Log Disk Exhaustion в vCenter 7

VMware

vCenter 7 показывает ошибку: Log Disk Exhaustion on vcenter. Данная ошибка сопровождается предупреждениями от запущенных служб, например: PostgreSQL Service Health Alarm. Полечим.

vcenter

Более подробной информации об ошибке в vCenter не отображается. Из названия понятно, что ошибка связана с нехваткой места на диске для логов.

vcenter

Если зайти в vCenter Server Management интерфейс VAMI, то можно узнать немного подробностей:

File system /storage/log is low on storage space. Increase the size of disk /storage/log.

Виден путь к директории, где нет места: /storage/log.

vcenter

Примечательно, что в vCenter отображаются не все ошибки служб. Перейдём в раздел Services.

vcenter

Служба VMware Postgres сообщает об ошибке:

Filesystem holding service vmware-vpostgres error logs is running low on available space.

vcenter

Служба VMware vTSDB Service тоже сообщает об ошибке:

Filesystem holding service vtsdb error logs is running low on available space.

Это служба Timescale DB, которая тесно связана с PostgreSQL.

Причина ошибки ясна, будем разбираться куда подевалось место в /storage/log. Включаем на vCenter SSH.

vcenter

Коннектимся к vCenter по SSH под пользователем root.

vcenter

Работаем под рутом, для этого используем команду:

shell

Посмотрим на диски:

df -h

vcenter

Видим что в /storage/log место утилизировано на 100%. Вычисляем самую толстую директорию:

du -h --max-depth=1

vcenter

Или:

du -a /storage/log | sort -n -r | head -n 20

vcenter

Файл /storage/log/vmware/vmware-sps/sps-runtime.log.stderr занял почти всё место на диске.

vcenter

Посмотрим что внутри:

tail -n 1000 /storage/log/vmware/vmware-sps/sps-runtime.log.stderr

vcenter

Внутри всё место забито ошибкой:

org.bouncycastle.jsse.provider.ProvTlsClient notifyAlertRaised
INFO: Client raised fatal(2) certificate_unknown(46) alert: Failed to read record
org.bouncycastle.tls.TlsFatalAlert: certificate_unknown(46)
  • Jul 28, 2021 3:49:16 PM org.bouncycastle.jsse.provider.ProvTlsClient notifyAlertRaised
    INFO: Client raised fatal(2) certificate_unknown(46) alert: Failed to read record
    org.bouncycastle.tls.TlsFatalAlert: certificate_unknown(46)
            at org.bouncycastle.jsse.provider.ProvSSLSocketDirect.checkServerTrusted(Unknown Source)
            at org.bouncycastle.jsse.provider.ProvTlsClient$1.notifyServerCertificate(Unknown Source)
            at org.bouncycastle.tls.TlsUtils.processServerCertificate(Unknown Source)
            at org.bouncycastle.tls.TlsClientProtocol.handleServerCertificate(Unknown Source)
            at org.bouncycastle.tls.TlsClientProtocol.handleHandshakeMessage(Unknown Source)
            at org.bouncycastle.tls.TlsProtocol.processHandshakeQueue(Unknown Source)
            at org.bouncycastle.tls.TlsProtocol.processRecord(Unknown Source)
            at org.bouncycastle.tls.RecordStream.readRecord(Unknown Source)
            at org.bouncycastle.tls.TlsProtocol.safeReadRecord(Unknown Source)
            at org.bouncycastle.tls.TlsProtocol.blockForHandshake(Unknown Source)
            at org.bouncycastle.tls.TlsClientProtocol.connect(Unknown Source)
            at org.bouncycastle.jsse.provider.ProvSSLSocketDirect.startHandshake(Unknown Source)
            at org.bouncycastle.jsse.provider.ProvSSLSocketDirect.handshakeIfNecessary(Unknown Source)
            at org.bouncycastle.jsse.provider.ProvSSLSocketDirect$AppDataOutput.write(Unknown Source)
            at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
            at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
            at org.apache.commons.httpclient.ChunkedOutputStream.flush(ChunkedOutputStream.java:191)
            at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:103)
            at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:225)
            at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:276)
            at org.apache.axiom.util.stax.wrapper.XMLStreamWriterWrapper.flush(XMLStreamWriterWrapper.java:50)
            at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:184)
            at org.apache.axis2.databinding.utils.writer.MTOMAwareXMLSerializer.flush(MTOMAwareXMLSerializer.java:79)
            at org.apache.axis2.databinding.ADBDataSource.serialize(ADBDataSource.java:94)
            at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:691)
            at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:965)
            at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:283)
            at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:245)
            at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:193)
            at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:79)
            at org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:84)
            at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
            at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
            at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
            at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
            at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
            at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
            at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
            at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:542)
            at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:199)
            at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76)
            at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400)
            at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225)
            at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435)
            at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
            at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
            at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
            at com.vmware.vim.vasa._1_5.VasaServiceStub.getAlarms(VasaServiceStub.java:3334)
            at com.vmware.vim.sms.client.stub.VasaServiceStubImplV2.getAlarms(VasaServiceStubImplV2.java:509)
            at com.vmware.vim.sms.client.VasaClientImpl.getAlarms(VasaClientImpl.java:406)
            at sun.reflect.GeneratedMethodAccessor345.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:498)
            at com.vmware.vim.sms.client.VasaClientMethodInvoker.invokeMethod(VasaClientMethodInvoker.java:48)
            at com.vmware.vim.sms.client.VasaClientMethodInvoker.invoke(VasaClientMethodInvoker.java:35)
            at com.vmware.vim.sms.client.VasaClientHandler.invoke(VasaClientHandler.java:27)
            at com.sun.proxy.$Proxy111.getAlarms(Unknown Source)
            at com.vmware.vim.sms.provider.vasa.alarm.AlarmDispatcher.pollAlarms(AlarmDispatcher.java:89)
            at com.vmware.vim.sms.provider.vasa.alarm.AlarmManagerImpl$AlarmPollerTask.run(AlarmManagerImpl.java:114)
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
            at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
            at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
            at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
            at java.lang.Thread.run(Thread.java:748)
    Caused by: java.security.cert.CertificateException: Unable to construct a valid chain
            at org.bouncycastle.jsse.provider.ProvX509TrustManager.validateChain(Unknown Source)
            at org.bouncycastle.jsse.provider.ProvX509TrustManager.checkTrusted(Unknown Source)
            at org.bouncycastle.jsse.provider.ProvX509TrustManager.checkServerTrusted(Unknown Source)
            at org.bouncycastle.jsse.provider.ExportX509TrustManager_7.checkServerTrusted(Unknown Source)
            at com.vmware.vim.sms.util.CustomSslSocketFactory$CustomTrustManager.checkServerTrusted(CustomSslSocketFactory.java:110)
            at com.vmware.vim.sms.util.CustomSslSocketFactory$CompositeTrustManager.checkServerTrusted(CustomSslSocketFactory.java:370)
            at org.bouncycastle.jsse.provider.ImportX509TrustManager_5.checkServerTrusted(Unknown Source)
            ... 66 more
    Caused by: java.security.cert.CertPathBuilderException: Unable to find certificate chain.
            at org.bouncycastle.jcajce.provider.PKIXCertPathBuilderSpi.engineBuild(Unknown Source)
            at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
            at org.bouncycastle.jsse.provider.ProvX509TrustManager.buildCertPath(Unknown Source)
            ... 73 more

vCenter не доверяет сертификатам некоторых гипервизоров. Это может быть связано с параметром vpxd.certmgmt.mode. Можно установить его значение в vmca, тогда сертификатами хостов будет рулить vCenter. Собственно, это и так значение по умолчанию, но вы могли это значение изменить и управлять сертификатами хостов вручную. Тогда вам нужно разбираться с сертификатами самим.

У меня проблема была связана с тем, что в vCenter был подключен гипервизор от другого vCenter. Естественно, сертификат не распознавался.

vcenter

Мы немного отвлеклись от темы. Освободим место, почистив файл:

cat /dev/null > /storage/log/vmware/vmware-sps/sps-runtime.log.stderr

vcenter

Место освободилось.

Следует помнить, что файл /storage/log/vmware/vmware-sps/sps-runtime.log.stderr будет продолжать расти, пока вы не устраните причину ошибки.

 

Похожие материалы

Установка и настройка vSphere Replication 8.2.0

vSphere Replication 8.2.0 позволяет создавать резервные копии виртуальных машин в vCenter. В случае сбоя системный администратор может запустить реплицированную копию виртуалки. Копия отстаёт по времени от основной машины, это отставание можно регулировать в настройках от 5 минут до 24 часов. Установим и настроим.