vCenter Server's file based backup to FTP server failed due to "Internal error. See logs for details. https://***/appliance/support-bundle". There is no useful logs in any files in /var/log/vmware/applmgmt/ .
vCenter Server 7.0
vCenter Server 8.0
The remote directory contains a directory whose name is undecodable by utf8.
As this isn't a product bug, there are two possible workarounds.
1. Remove the directory whose name is undecodable by utf8.
2. Create a dummy directory under the backup target remote directory.
For example, a backup to directory A would fail because A contains an utf-8 undecodable directory, whereas a backup to directory B would succeed because B doesn't contain that directory.
A --
|- B
|- <utf8 undecodable Directory>
There are several reasons why vCenter Server file-based backup might fail with an "Internal error". This article provides one possible scenario for this error.
In some cases where a file-based backup failed due to an internal error, we couldn't find any useful logs in /var/log/vmware/applmgmt/. In these cases, a detailed error can be seen when we reproduce a backup failure using appliance shell.
# After a backup failure from appliance shell, we could see error code from terminal output.
Command> com.vmware.appliance.recovery.backup.job.create --locationType FTP --location ftp://XXXXXXXX:/backup --locationUser XXX --locationPassword
Enter locationPassword:
Error in executing command: 8002
# After a backup failure from appliance shell, errors are logged in /var/log/vmware/applmgmt/applmgmt_vmonsvc.stderr.
vCenter Server 7.0
Traceback (most recent call last):
File "/usr/lib/python3.7/site-packages/twisted/internet/defer.py", line 654, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/usr/lib/applmgmt/transport/py/vmware/vherd/transport/xmlrpc.py", line 223, in authorization_cb
result = defer.maybeDeferred(func, *args)
File "/usr/lib/python3.7/site-packages/twisted/internet/defer.py", line 151, in maybeDeferred
result = f(*args, **kw)
File "/usr/lib/applmgmt/base/py/vmware/vherd/base/pint.py", line 982, in run
ret = defer.maybeDeferred(method, self, *realArgs)
--- <exception caught here> ---
File "/usr/lib/python3.7/site-packages/twisted/internet/defer.py", line 654, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/usr/lib/applmgmt/transport/py/vmware/vherd/transport/xmlrpc.py", line 233, in unauthorized_cb
failure.trap(authorization.AuthorizationError)
File "/usr/lib/python3.7/site-packages/twisted/python/failure.py", line 460, in trap
self.raiseException()
File "/usr/lib/python3.7/site-packages/twisted/python/failure.py", line 488, in raiseException
raise self.value.with_traceback(self.tb)
File "/usr/lib/python3.7/site-packages/twisted/internet/defer.py", line 654, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/usr/lib/applmgmt/transport/py/vmware/vherd/transport/xmlrpc.py", line 215, in _formatPintErrors
err.trap(pint.Error)
File "/usr/lib/python3.7/site-packages/twisted/python/failure.py", line 460, in trap
self.raiseException()
File "/usr/lib/python3.7/site-packages/twisted/python/failure.py", line 488, in raiseException
raise self.value.with_traceback(self.tb)
File "/usr/lib/python3.7/site-packages/twisted/internet/defer.py", line 151, in maybeDeferred
result = f(*args, **kw)
File "/usr/lib/applmgmt/backup_restore/py/vmware/appliance/backup_restore/impl.py", line 135, in wrapper
return func(*args, **kwargs)
File "/usr/lib/applmgmt/backup_restore/py/vmware/appliance/backup_restore/impl.py", line 861, in create
preBackupServerValidation(piece)
File "/usr/lib/applmgmt/backup_restore/py/vmware/appliance/backup_restore/impl.py", line 485, in preBackupServerValidation
dispatch.storageIO.dir_exists()
File "/usr/lib/applmgmt/backup_restore/py/vmware/appliance/backup_restore/plugins/FtpStorageIOLib.py", line 196, in dir_exists
cmd_res = _run_cmd(ls_cmd, timeout=timeout)
File "/usr/lib/applmgmt/backup_restore/py/vmware/appliance/backup_restore/plugins/FtpStorageIOLib.py", line 20, in _run_cmd
timeout=timeout, universal_newlines=True)
File "/usr/lib/python3.7/subprocess.py", line 490, in run
stdout, stderr = process.communicate(input, timeout=timeout)
File "/usr/lib/python3.7/subprocess.py", line 964, in communicate
stdout, stderr = self._communicate(input, endtime, timeout)
File "/usr/lib/python3.7/subprocess.py", line 1755, in _communicate
self.stdout.errors)
File "/usr/lib/python3.7/subprocess.py", line 841, in _translate_newlines
data = data.decode(encoding, errors)
builtins.UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 13: invalid continuation byte
vCenter Server 8.0
Traceback (most recent call last):
File "/usr/lib/python3.10/site-packages/twisted/internet/defer.py", line 654, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/usr/lib/applmgmt/transport/py/vmware/vherd/transport/xmlrpc.py", line 223, in authorization_cb
result = defer.maybeDeferred(func, *args)
File "/usr/lib/python3.10/site-packages/twisted/internet/defer.py", line 151, in maybeDeferred
result = f(*args, **kw)
File "/usr/lib/applmgmt/base/py/vmware/vherd/base/pint.py", line 982, in run
ret = defer.maybeDeferred(method, self, *realArgs)
--- <exception caught here> ---
File "/usr/lib/python3.10/site-packages/twisted/internet/defer.py", line 654, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/usr/lib/applmgmt/transport/py/vmware/vherd/transport/xmlrpc.py", line 233, in unauthorized_cb
failure.trap(authorization.AuthorizationError)
File "/usr/lib/python3.10/site-packages/twisted/python/failure.py", line 460, in trap
self.raiseException()
File "/usr/lib/python3.10/site-packages/twisted/python/failure.py", line 488, in raiseException
raise self.value.with_traceback(self.tb)
File "/usr/lib/python3.10/site-packages/twisted/internet/defer.py", line 654, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/usr/lib/applmgmt/transport/py/vmware/vherd/transport/xmlrpc.py", line 215, in _formatPintErrors
err.trap(pint.Error)
File "/usr/lib/python3.10/site-packages/twisted/python/failure.py", line 460, in trap
self.raiseException()
File "/usr/lib/python3.10/site-packages/twisted/python/failure.py", line 488, in raiseException
raise self.value.with_traceback(self.tb)
File "/usr/lib/python3.10/site-packages/twisted/internet/defer.py", line 151, in maybeDeferred
result = f(*args, **kw)
File "/usr/lib/applmgmt/backup_restore/py/vmware/appliance/backup_restore/impl.py", line 139, in wrapper
return func(*args, **kwargs)
File "/usr/lib/applmgmt/backup_restore/py/vmware/appliance/backup_restore/impl.py", line 902, in create
preBackupServerValidation(piece)
File "/usr/lib/applmgmt/backup_restore/py/vmware/appliance/backup_restore/impl.py", line 489, in preBackupServerValidation
dispatch.storageIO.dir_exists()
File "/usr/lib/applmgmt/backup_restore/py/vmware/appliance/backup_restore/plugins/FtpStorageIOLib.py", line 214, in dir_exists
cmd_res = _run_cmd_retries(ls_cmd, timeout=timeout)
File "/usr/lib/applmgmt/backup_restore/py/vmware/appliance/backup_restore/plugins/FtpStorageIOLib.py", line 38, in _run_cmd_retries
_logger.error("Command failed with error %s. Will retry after %d" % (cmd_res.stderr, DEFAULT_RETRY_SLEEP))
builtins.UnboundLocalError: local variable 'cmd_res' referenced before assignment