Avamar and Cloud Disaster Recovery Integration: Unable to Add Avamar to Cloud Disaster Recovery Appliance Due to Empty SNMPv2 Community String

Summary: Unable to add Avamar to Cloud Disaster Recovery Appliance (CDRA) due to empty SNMPv2 community string configured on the attached Data Domain on Avamar.

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

Unable to add Avamar as backup server for Cloud Disaster Recovery Appliance (CDRA).

The following errors may be seen in the CDRA log file:
cdra/logs/cdra/cdra.log

ERROR [2023-05-22 19:07:53,734] [taskScheduler-18] [AvamarBackupService:reconnectAndGetHealthDetails:166]: Avamar is unhealthy; no connectivity. No response due to invalid hostname: avamar.example.com, or port number 9443, org.apache.axis2.AxisFault: Connection refused (Connection refused)
 
cdra/logs/cdra/cdra.log

DEBUG [2023-04-27 16:14:04,931] [taskScheduler-28] [AvamarSoapClientAPI:connect:88]: Trying to connect to avamar with host name: avamar.example.com
ERROR [2023-04-27 16:14:05,109] [taskScheduler-28] [AvamarSoapClientAPI:connect:99]: RemoteException caught in AvamarSoapClientAPI due to invalid host or port number Connection or outbound has closed
ERROR [2023-04-27 16:14:05,109] [taskScheduler-28] [BackupServersManager:addAdapter:194]: Could not initialize Avamar adapter.
com.emc.cloud_dr.cdr.commons.common_models.exceptions.NoConnectivityException: No response due to invalid host name: avamar.example.com, or port number 9443, org.apache.axis2.AxisFault: Connection or outbound has closed
        at com.emc.cloud_dr.cdr.adapters.avamar_adapter_soap.AvamarSoapClientAPI.connect(AvamarSoapClientAPI.java:102)
        at com.emc.cloud_dr.cdr.commons.backup_service.impl.avamar.AvamarBackupService.init(AvamarBackupService.java:46)
        at com.emc.cloud_dr.cdr.commons.backup_servers_manager.impl.BackupServersManager.addAdapter(BackupServersManager.java:189)
        at com.emc.cloud_dr.cdr.cdra.cdra_backup_servers_manager.CdraBackupServersManager.addAdapter(CdraBackupServersManager.java:96)
        at com.emc.cloud_dr.cdr.commons.remote_server.model.AbstractRemoteServersManager.getAdapterInstance(AbstractRemoteServersManager.java:154)
        at com.emc.cloud_dr.cdr.commons.monitor.impl.collectors.AbstractRemoteServerDataCollector.getAdapterDetails(AbstractRemoteServerDataCollector.java:52)
        at com.emc.cloud_dr.cdr.commons.monitor.impl.collectors.AbstractRemoteServerDataCollector.lambda$collectData$2(AbstractRemoteServerDataCollector.java:
41)

ERROR [2023-04-27 16:14:05,109] [taskScheduler-28] [AbstractRemoteServersManager:getAdapterInstance:157]: could not initialize adapter 2b356007-de19-42c4-9346
-067ce80f68ab

On the Avamar server, the mcserver log has the following SOAP API call logged:
/usr/local/avamar/var/mc/server_log/mcserver.log.0

05/25-08:30:43.00047 [MCWebServices-MCSDK-QueuedThreadPool-295#295] com.avamar.mc.axis2.logging.LogHandler.invoke
WARNING: MCSDK[mcsdk20] Call[urn:getTaskInfo][urn:uuid:3362594b-c177-4fe9-89eb-a042c6f8e889] end with error. SOAP output:
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Body>
<soapenv:Fault>
<soapenv:Code>
<soapenv:Value>soapenv:Receiver</soapenv:Value>
</soapenv:Code>
<soapenv:Reason>
<soapenv:Text xml:lang="en-US">java.lang.RuntimeException: Can not serialize OM Element Envelope</soapenv:Text>
</soapenv:Reason>
<soapenv:Detail/>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>

On the Avamar server, the full exception stack is logged in the axis2 log:
/usr/local/avamar/var/mc/server_log/axis2.log

2023-05-25 09:21:56,914 [MCWebServices-MCSDK-QueuedThreadPool-293] ERROR org.apache.axis2.transport.http.AxisServlet  - Can not serialize OM Element Envelope
java.lang.RuntimeException: Can not serialize OM Element Envelope
        at org.apache.axiom.om.impl.llom.OMElementImpl.toString(OMElementImpl.java:963)
        at org.apache.axis2.handlers.soapmonitor.SOAPMonitorHandler.invoke(SOAPMonitorHandler.java:101)
        at org.apache.axis2.engine.Phase.invokeHandler(Phase.java:340)
        at org.apache.axis2.engine.Phase.invoke(Phase.java:313)
        at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:262)
        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:427)
        at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:43)
        at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)
        at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172)
        at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:542)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1700)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1667)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
        at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
        at org.eclipse.jetty.server.Server.handle(Server.java:505)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
  at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
        at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:427)
        at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:321)
        at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:159)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
        at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:786)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:743)
        at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.axis2.databinding.ADBException: snmpCommunity cannot be null!!
        at com.avamar.mc.sdk20.DdrConfigInfo.serialize(DdrConfigInfo.java:675)
        at com.avamar.mc.sdk20.TaskInfo.serialize(TaskInfo.java:619)
        at com.avamar.mc.sdk20.TaskInfo.serialize(TaskInfo.java:476)
        at com.avamar.mc.sdk20.GetTaskInfoResponse.serialize(GetTaskInfoResponse.java:120)
        at com.avamar.mc.sdk20.GetTaskInfoResponse.serialize(GetTaskInfoResponse.java:81)
        at org.apache.axis2.databinding.ADBDataSource.serialize(ADBDataSource.java:90)
        at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:635)
        at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556)
        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:846)
        at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:214)
        at org.apache.axiom.om.impl.llom.OMSerializableImpl.serialize(OMSerializableImpl.java:120)
        at org.apache.axiom.om.impl.llom.OMSerializableImpl.serialize(OMSerializableImpl.java:108)
        at org.apache.axiom.om.impl.llom.OMElementImpl.toString(OMElementImpl.java:957)
        ... 49 more

Cause

The root cause of the error is defined by the following exception:
Caused by: org.apache.axis2.databinding.ADBException: snmpCommunity cannot be null!!
When Data Domain is integrated with Avamar, SNMP is configured so that Avamar can query Data Domain for information and Data Domain stores Avamar as a trap host.

In the process of configuring SNMP between Avamar and Data Domain, a community string must be provided in the Avamar User Interface.
 
SNMP Community String Provided for Avamar
Figure 1: SNMP Community String Provided for Avamar 

Resolution

Go to the Avamar Administrator > Navigation > Server > Server Management > Edit Data Domain System > SNMP.

Configure the SNMP community string, like the image shown in the Cause section of this article.

Affected Products

Avamar, Cloud Disaster Recovery
Article Properties
Article Number: 000214335
Article Type: Solution
Last Modified: 17 Aug 2023
Version:  4
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.