ESA fails to collect data from a VNX Block array that had a successful adapter test

           

   Article Number:     494535                                   Article Version: 3     Article Type:    Break Fix 
   

 


Product:

 

Storage Analytics,Storage Analytics SW for the VNX Family

 

Issue:

 

 

Storage Analytics is not pulling data from a VNX Block array that was added with a successful adapter test. When viewing the EMCadapter logs for the VNX array, the following errors are present:   
   
    2017-01-05 16:05:45.590 [ERROR] [Collector worker thread 21] com.emc.pie.adapters.vnx.block.engine.configcapture.ConfigCaptureAdapterImpl - error getting ModelNumber from captured file.     
     
      javax.xml.transform.TransformerException: Unable to evaluate expression using this context     
          at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:368)     
          at com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.eval(XPathExpressionImpl.java:133)     
          at com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.eval(XPathExpressionImpl.java:109)     
          at com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.evaluate(XPathExpressionImpl.java:191)     
          at com.emc.pie.adapters.vnx.block.engine.configcapture.ConfigCaptureAdapterImpl.getClariionStrValue(ConfigCaptureAdapterImpl.java:828)     
          at com.emc.pie.adapters.vnx.block.engine.configcapture.ConfigCaptureAdapterImpl.initCachedProperties(ConfigCaptureAdapterImpl.java:236)     
          at com.emc.pie.adapters.vnx.block.engine.configcapture.ConfigCaptureAdapterImpl.init(ConfigCaptureAdapterImpl.java:218)     
          at com.emc.pie.adapters.vnx.block.engine.configcapture.ConfigCaptureAdapterImpl.getBlockStorageSystemSerialNumber(ConfigCaptureAdapterImpl.java:752)     
          at com.emc.pie.adapters.vnx.block.engine.blockstoragesystem.BlockStorageSystemAdapterImp.getBlockStorageSystemSerialNumber(BlockStorageSystemAdapterImp.java:151)     
          at com.emc.vcops.collectors.vnxblock.VnxBlockDiscoveryService.getArrayId(VnxBlockDiscoveryService.java:176)     
          at com.emc.vcops.collectors.vnxblock.VnxBlockDiscoveryService.discover(VnxBlockDiscoveryService.java:105)     
          at com.emc.vcops.collectors.vnxblock.VnxBlockCollector.collect(VnxBlockCollector.java:364)     
          at com.emc.vcops.moxy.EmcAdapterInstance.collect(EmcAdapterInstance.java:505)     
          at com.emc.vcops.moxy.EmcAdapterInstance.onCollect(EmcAdapterInstance.java:403)     
          at com.integrien.alive.common.adapter3.AdapterBase.collectBase(AdapterBase.java:674)     
          at com.integrien.alive.common.adapter3.AdapterBase.collect(AdapterBase.java:487)     
          at com.emc.vcops.EmcAdapter.collect(EmcAdapter.java:505)     
          at com.integrien.alive.collector.CollectorWorkItem3.run(CollectorWorkItem3.java:46)     
          at com.integrien.alive.common.util.ThreadPool$WorkerItem.run(ThreadPool.java:253)     
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)     
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)     
          at java.lang.Thread.run(Thread.java:745)     
      Caused by: java.lang.RuntimeException: Unable to evaluate expression using this context     
          at com.sun.org.apache.xpath.internal.axes.NodeSequence.setRoot(NodeSequence.java:266)     
          at com.sun.org.apache.xpath.internal.axes.LocPathIterator.execute(LocPathIterator.java:214)     
          at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:339)     
          ... 21 more     
      ---------     
      java.lang.RuntimeException: Unable to evaluate expression using this context     
          at com.sun.org.apache.xpath.internal.axes.NodeSequence.setRoot(NodeSequence.java:266)     
          at com.sun.org.apache.xpath.internal.axes.LocPathIterator.execute(LocPathIterator.java:214)     
          at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:339)     
          at com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.eval(XPathExpressionImpl.java:133)     
          at com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.eval(XPathExpressionImpl.java:109)     
          at com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.evaluate(XPathExpressionImpl.java:191)     
          at com.emc.pie.adapters.vnx.block.engine.configcapture.ConfigCaptureAdapterImpl.getClariionStrValue(ConfigCaptureAdapterImpl.java:828)     
          at com.emc.pie.adapters.vnx.block.engine.configcapture.ConfigCaptureAdapterImpl.initCachedProperties(ConfigCaptureAdapterImpl.java:236)     
          at com.emc.pie.adapters.vnx.block.engine.configcapture.ConfigCaptureAdapterImpl.init(ConfigCaptureAdapterImpl.java:218)     
          at com.emc.pie.adapters.vnx.block.engine.configcapture.ConfigCaptureAdapterImpl.getBlockStorageSystemSerialNumber(ConfigCaptureAdapterImpl.java:752)     
          at com.emc.pie.adapters.vnx.block.engine.blockstoragesystem.BlockStorageSystemAdapterImp.getBlockStorageSystemSerialNumber(BlockStorageSystemAdapterImp.java:151)     
          at com.emc.vcops.collectors.vnxblock.VnxBlockDiscoveryService.getArrayId(VnxBlockDiscoveryService.java:176)     
          at com.emc.vcops.collectors.vnxblock.VnxBlockDiscoveryService.discover(VnxBlockDiscoveryService.java:105)     
          at com.emc.vcops.collectors.vnxblock.VnxBlockCollector.collect(VnxBlockCollector.java:364)     
          at com.emc.vcops.moxy.EmcAdapterInstance.collect(EmcAdapterInstance.java:505)     
          at com.emc.vcops.moxy.EmcAdapterInstance.onCollect(EmcAdapterInstance.java:403)     
          at com.integrien.alive.common.adapter3.AdapterBase.collectBase(AdapterBase.java:674)     
          at com.integrien.alive.common.adapter3.AdapterBase.collect(AdapterBase.java:487)     
          at com.emc.vcops.EmcAdapter.collect(EmcAdapter.java:505)     
          at com.integrien.alive.collector.CollectorWorkItem3.run(CollectorWorkItem3.java:46)     
          at com.integrien.alive.common.util.ThreadPool$WorkerItem.run(ThreadPool.java:253)     
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)     
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)     
          at java.lang.Thread.run(Thread.java:745)     
      --------------- linked to ------------------     
      javax.xml.xpath.XPathExpressionException: javax.xml.transform.TransformerException: Unable to evaluate expression using this context     
          at com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.evaluate(XPathExpressionImpl.java:204)     
          at com.emc.pie.adapters.vnx.block.engine.configcapture.ConfigCaptureAdapterImpl.getClariionStrValue(ConfigCaptureAdapterImpl.java:828)     
          at com.emc.pie.adapters.vnx.block.engine.configcapture.ConfigCaptureAdapterImpl.initCachedProperties(ConfigCaptureAdapterImpl.java:236)     
          at com.emc.pie.adapters.vnx.block.engine.configcapture.ConfigCaptureAdapterImpl.init(ConfigCaptureAdapterImpl.java:218)     
          at com.emc.pie.adapters.vnx.block.engine.configcapture.ConfigCaptureAdapterImpl.getBlockStorageSystemSerialNumber(ConfigCaptureAdapterImpl.java:752)     
          at com.emc.pie.adapters.vnx.block.engine.blockstoragesystem.BlockStorageSystemAdapterImp.getBlockStorageSystemSerialNumber(BlockStorageSystemAdapterImp.java:151)     
          at com.emc.vcops.collectors.vnxblock.VnxBlockDiscoveryService.getArrayId(VnxBlockDiscoveryService.java:176)     
          at com.emc.vcops.collectors.vnxblock.VnxBlockDiscoveryService.discover(VnxBlockDiscoveryService.java:105)     
          at com.emc.vcops.collectors.vnxblock.VnxBlockCollector.collect(VnxBlockCollector.java:364)     
          at com.emc.vcops.moxy.EmcAdapterInstance.collect(EmcAdapterInstance.java:505)     
          at com.emc.vcops.moxy.EmcAdapterInstance.onCollect(EmcAdapterInstance.java:403)     
          at com.integrien.alive.common.adapter3.AdapterBase.collectBase(AdapterBase.java:674)     
          at com.integrien.alive.common.adapter3.AdapterBase.collect(AdapterBase.java:487)     
          at com.emc.vcops.EmcAdapter.collect(EmcAdapter.java:505)     
          at com.integrien.alive.collector.CollectorWorkItem3.run(CollectorWorkItem3.java:46)     
          at com.integrien.alive.common.util.ThreadPool$WorkerItem.run(ThreadPool.java:253)     
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)     
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)     
          at java.lang.Thread.run(Thread.java:745)     
      Caused by: javax.xml.transform.TransformerException: Unable to evaluate expression using this context     
          at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:368)     
          at com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.eval(XPathExpressionImpl.java:133)     
          at com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.eval(XPathExpressionImpl.java:109)     
          at com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.evaluate(XPathExpressionImpl.java:191)     
          ... 18 more     
      Caused by: java.lang.RuntimeException: Unable to evaluate expression using this context     
          at com.sun.org.apache.xpath.internal.axes.NodeSequence.setRoot(NodeSequence.java:266)     
          at com.sun.org.apache.xpath.internal.axes.LocPathIterator.execute(LocPathIterator.java:214)     
          at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:339)     
          ... 21 more​
   
   
    As part of troubleshooting this issue, we were able to successfully execute naviseccli commands from the vRealize node where the VNX Block adapter resides.
                                                           

 

 

Cause:

 

 

This issue was caused by the customer using NAT (Network Address Translation) IP Addresses for the VNX Block Storage Processor IP Addresses. This is not supported in Storage Analytics. Even though ESA can communicate to the VNX array using the NAT IP addresses, and the adapter test passes using NAT addresses, ESA will not support use of an IP address that is different from the IP address set on the Storage Processors.   
   
    When ESA performs a data polling of the VNX array, the configuration data is written to an XML file and resides in the <vrops host>/logs/adapters/EmcAdapter/<VNX array name>/dump/cycle... directory of the vrops node. The file is named "primary.xml". ESA will use the data collected in this file to find the VNX array for subsequent data polls. The data contained in the "primary.xml" file will contain the actual Storage Processor IP addresses and not the NAT IP address used for the adapter creation. This results in the log errors previously noted resulting in data collection failing.
                                                           

 

 

Resolution:

 

 

The only possible resolution to this issue is to change the IP address in the VNX block adapter from the NAT IP address to the true Storage Processor IP address.