We are unable to complete the Northbound integration (UIM DX O2 SaaS) because the DX O2 API Gateway rejects all known REST ingestion endpoints with a HTTP 404 Not Found error, even when using the correct host and a valid token. The oi_connector log repeatedly shows "Nass is unavailable" due to connection failure.
[main, oi_connector] java.lang.IllegalArgumentException: Data Engine connection string fails to contain database provider.
at com.nimsoft.nimbus.lookup.DataEngineLookup.parseConnectionString(DataEngineLookup.java:263)
at com.nimsoft.nimbus.lookup.DataEngineLookup.getConnectionStringsFromDataEngine(DataEngineLookup.java:139)
at com.nimsoft.nimbus.lookup.DataEngineLookup.getConnectionStringsFromDataEngine(DataEngineLookup.java:94)
at com.nimsoft.probe.gateway.oi_connector.utils.AXAUtils.getConnectionString(AXAUtils.java:1261)
at com.nimsoft.probe.gateway.oi_connector.GlobalConfiguration.getConnectionInfo(GlobalConfiguration.java:103)
at com.nimsoft.probe.gateway.oi_connector.GlobalConfiguration.init(GlobalConfiguration.java:70)
at com.nimsoft.probe.gateway.oi_connector.OIConnectorProbe.doStart(OIConnectorProbe.java:84)
at com.nimsoft.probe.gateway.oi_connector.OIConnectorProbe.main(OIConnectorProbe.java:61)
Controller: Max. restarts reached for probe 'oi_connector' (command = <startup java>)
[attach_clientsession, oi_connector] Retaining Data in the QoS Queue, as Nass is Unavailable.
[QUEUE_MONITOR_THREAD, oi_connector] Jarvis is unavailable. Alarm, Inventory and Group Queues status is not monitored
[QUEUE_MONITOR_THREAD, oi_connector] Nass is unavailable.
and
[DOI_MONITOR_THREAD, oi_connector] Exception in validateResponseFromJarvis : org.apache.http.conn.HttpHostConnectException: Connect to <saas_url>:443 [<saas_url>/xx.xx.xx.xx] failed: Connection timed out: getsockopt
and
[DOI_MONITOR_THREAD, oi_connector] Jarvis is Down. unavailable
[DOI_MONITOR_THREAD, oi_connector] Sending a Critical Alarm, as Jarvis URL is Down!!
[DOI_MONITOR_THREAD, oi_connector] Jarvis is Down. Counter value : 2264
[DOI_MONITOR_THREAD, oi_connector] Starting nass monitoring
[DOI_MONITOR_THREAD, oi_connector] Inside validateResponseFromNASS()
[DOI_MONITOR_THREAD, oi_connector] URL provided :: https://<saas_url>/metadata/registerMetric
[DOI_MONITOR_THREAD, oi_connector] payload for validateResponseFromNASS : {"metrics":{"sourceName":"dummySource","type":1,"attributeName":"dummyAttribute","attributes":{"product":"UIM"}}]}
[attach_clientsession, oi_connector] Rejecting Data from the QoS Queue, as the Queue Retention period is passed
[QUEUE_MONITOR_THREAD, oi_connector] Checking the status of the Alarm queue subscription...
[QUEUE_MONITOR_THREAD, oi_connector] Alarm Subscription is ok......
[QUEUE_MONITOR_THREAD, oi_connector] Nass is unavailable.
Environment:
Deployment:
oi_connector deployed on a robot connected to the Primary hub
oi_connector robot access to the DX SaaS Portal (Internet)
oi_connector deployment on Secondary Hub Robot: add key, connect_to_primary_hub = true
Data Engine: data_engine_address needs to be configured using the NimBUS address to connect to the backend UIM DB.
Robot Security: Ensure the robot security folder and certificate.pem file within it, is also present.
All of the requirements for oi_connector configuration are also fully explained in the techdocs so this must be reviewed.
Steps to resolve the reported issues:
Downgraded oi_connector v2.03 to 2.02. (since 2.03 is only supported as of DX UIM 23.4 CU5 or higher
Replaced the Tenant ID string with the DX O2 SaaS cohort id (obtained via the DX O2 'Connector Parameters' tile/page)
Updated proxy configuration but when the connection was tested it threw an error. Note that the customer required use of a proxy server to connect to the SaaS instance (same for oi_connector)
"One or more fields have failed validation."
In oi_connector v2.02 proxy credentials are mandatory. In 2.03 this has been fixed.
So with oi_connector v2.02, there is a workaround for this requirement:
Once the final oi_connector configuration was adjusted as described above, the probe began operating as expected and no longer failed with Max. restarts.
See example oi_connector.log output below:
[QOS_PROCESSOR_THREAD-3, oi_connector] Metric to CS context not available in DB, skipping metric of size: 455
[QosExecutorService-7, oi_connector] QOS PERF: Total Processing Time(ms): 0 size: 500
[QOS_PROCESSOR_THREAD-7, oi_connector] Received QOS PDS of Size: 500
[QOS_PROCESSOR_THREAD-7, oi_connector] CI Metric cache miss met_id count ::498
[QOS_PROCESSOR_THREAD-7, oi_connector] Loading data from DB for CI Metric cache
[QOS_PROCESSOR_THREAD-7, oi_connector] PERF getCiInformationByMetIdSet(): time(ms) : 0 size:498
[QOS_PROCESSOR_THREAD-7, oi_connector] Loading data from DB for CI Metric cache Done(ms): 0
[QOS_PROCESSOR_THREAD-7, oi_connector] Metric to CS context not available in DB, skipping metric of size: 498
[QosExecutorService-11, oi_connector] QOS PERF: Total Processing Time(ms): 0 size: 500
Note that these are not errors. This is info that the cache has not been filled yet.
At this point, in general, its important to check to make sure that the QOS and alarms are making it into the backend UIM database by carefully checking the data_engine.log.
Via Raw configure, you MUST confirm the settings for the oi_connector probe on the given robot as documented i the techdocs:
connect_to_primary_hub = true
primary_hub_address <value>
data_engine_address <value>
Also make sure the certificate.pem is in place and configured on the robot as per the oi_connector techdocs.
Once the oi_connector starts, then access the oi_connector configuration in the Admin Console and confirm UIM groups and origins are displayed.
Double check and confirm the DX O2 configuration values AND the proxy configuration, e.g., check Tenant ID (cohort ID) which in this case was not set with the correct value.
If the proxy settings are wrong, you will see connection errors in the log. Double check the proxy configuration and correct it to continue making progress.
If proxy is mandated then every request whether from browser or an application only routes via the proxy. (in this case the proxy was not properly configured). If you can confirm that opening a browser from the machine where the oi_connector probe is running and you are able to access the DXO2 (assuming proxy is configured via browser as well), then the same proxy should ideally work via oi_connector as well.
If there is no proxy involved in the communication (you can check the browser Developer tools-> Network tab) to see where the response is coming from. In that case, then no proxy configuration is required in the oi_connector.
Other (proxy)
The workaround for the mandatory fields for proxy username and password is:
Provide some dummy values for username & password for the proxy.
Open the oi_connector in Raw configure mode.
Remove any values in:
username (resource/properties/proxy_user)
password (resource/properties/proxy_password)
...fields.
Click Save to save the configuration.
The probe will be restarted and uses proxy without user authentication.