Unmanaged Inventory Windows troubleshooting

  • 7012532
  • 01-Jun-2013
  • 09-Jan-2018

Environment

Novell ZENworks Configuration Management 11.2

Situation

How to troubleshoot Unmanaged Inventory on Windows.

Resolution

To find the initial server to contact, use installer package to list:

zenworks_adaptive_agent_Windows.exe /l

 It lists the package details.  Example:

FILE: novell-zenworks-umia-11.2.3.18534.msi:  SIZE: 573952  CMD: @msiexec@-i@%f@
INITIALSERVER=oracle11.mry.com@PORT=80@SECUREPORT=443@ALLUSERS=1


The server listed is the initial server that will be contacted when the agent is installed.

When the package is first installed, it creates directory:

C:\Program Files\Novell\ZENworks\bin (32 bit)

C:\Program Files (x86)\Novell\ZENworks\bin (64 bit)


In that directory is a subset of agent files that the agent will need to complete the installation:

zenumia.exe
uiaconfig.xml
zenumsvc.exe
<DIR>          incomingUIA



The install creates a registry key:  HKEY_LOCAL_MACHINE\SOFTWARE[\wow32node]\Novell\ZCM\UMIA

which includes values:

Server
Port
SecurePort


With the values taken from the package INITIALSERVER.

The umia agent install creates service:  "Novell ZENworks Adaptive Agent Service" to launch zenumsvc.exe.

Prior to the service running, uiaconfig.xml has empty server list.

When the service starts for the first time, it contacts the initial primary server to complete install.

Among the files downloaded are uiaconfig.xml and options.xml

In this xml is the server reference, example:

<server>192.168.0.223:80</server>

On the primary server the files are located here:  /var/opt/novell/zenworks/unmanaged/umfilestore/settings/common/uiaconfig.xml %ZENWORKS_HOME%\work\unmanaged\umfilestore\settings\common

On the primary server this logging indicates creation of these files based on zsystemsettings tables umiCS, umiFirstScan, umiScanSchedule, NC_WkstnReconcileData, and using services ZoneConfigAdminService, DeviceAdminService.

services-messages.log

[DEBUG] [08/14/2017 05:38:45.535] [1453] [ZENService] [69] [] [((UM Inventory()] [] [started  makeConfigXML] [] [] [] [ZENServer]
[DEBUG] [08/14/2017 05:38:45.602] [1453] [ZENService] [69] [] [((UM Inventory()] [] [Done with  makeConfigXML] [] [] [] [ZENServer]

The other files that are pulled down complete the install.  This includes exe's, kb's, options etc. for the full current version of the agent.

Thereafter, the service is responsible for launching zenumia.exe which will launch colw32 (collector) for scanning on schedule.

zenumia launches colw32.

Colw32 creates WIF xml files in ZENworks\bin\outgoingUIA directory.  The collector logs the collection activity to colw32.log

Note:  On 2017 and later, zenumia launches ZENCollector.

The collector log level can be set in ZCC Configuration Inventory Only Diagnostics.  This setting is stored locally in the options.xml file <option name="Diagnostic" state="true" />

zenumia reads the uiaconfig.xml file to determine where to upload the WIF.

To troubleshoot the upload (use only when troubleshooting):

[HKEY_LOCAL_MACHINE\SOFTWARE\Novell\ZCM\UMIA\Debugging]
"LogName"="zenumia.log"
"LogLevel"=dword:00000001


With this enabled, when  zenumia scannow diagnostic is run, the upload of the wif shows this:


<EVENT AT="6/01/2013 8:43:15">
 *** PostInventoryResults: sending ./outgoingUIA/a2b48d987684ff40bbc9ed69394f1089-last.xml to oracle11.mry.com
</EVENT>

<EVENT AT="6/01/2013 8:43:15">
https://oracle11.mry.com:443/zenworks-fileupload/?type=inventory&filename=a2b48d987684ff40bbc9ed69394f1089-last.xml&autogenerate=true&overwrite=true
</EVENT>

<EVENT AT="6/01/2013 8:43:15">
  File upload servlet returned status: 200
</EVENT>


The return status is a standard http status response.

The primary server services-messages.log shows this:

[DEBUG] [6/1/13 8:32:58 AM] [] [File Upload Servlet] [45] [] [Upload Request Received: (45) "type=inventory&filename=a2b48d987684ff40bbc9ed69394f1089-last.xml&autogenerate=true&overwrite=true"] [] []
[DEBUG] [6/1/13 8:32:58 AM] [] [File Upload Servlet] [45] [] [It took 173 milliseconds to upload the file data.] [] []
[DEBUG] [6/1/13 8:32:58 AM] [] [File Upload Servlet] [45] [] [File upload complete, time: 174ms, request: "type=inventory&filename=a2b48d987684ff40bbc9ed69394f1089-last.xml&autogenerate=true&overwrite=true", thread: 45, status: 200] [] []


The xml is put into /var/opt/novell/zenworks/collection/inventory directory for processing by the zenloader service.

The loader-messages.log shows this:

[DEBUG] [6/1/13 8:48:58 AM] [] [Loader.InventoryStorerAMModule] [56] [] [InventoryStorerModule: Adding /var/opt/novell/zenworks/collection/inventory/a2b48d987684ff40bbc9ed69394f1089-last.xml to file queue.] [] []
[DEBUG] [6/1/13 8:48:58 AM] [] [Loader.InventoryStorerAMModule] [56] [] [InventoryStorerModule: Loading a2b48d987684ff40bbc9ed69394f1089-last.xml...] [] []
[DEBUG] [6/1/13 8:48:58 AM] [] [InventoryStorer] [56] [] [Machine GUID :: a2b48d987684ff40bbc9ed69394f1089] [] []
[DEBUG] [6/1/13 8:48:58 AM] [] [InventoryStorer] [56] [] [Going to create Device :: ] [] []
[DEBUG] [6/1/13 8:48:58 AM] [] [InventoryStorer] [56] [] [***** PLATFORM  :Windows XP Professional] [] []
[DEBUG] [6/1/13 8:48:58 AM] [] [InventoryStorer] [56] [] [***** SP  :3] [] []
[DEBUG] [6/1/13 8:48:58 AM] [] [InventoryStorer] [56] [] [***** ARCH  :x86] [] []
[DEBUG] [6/1/13 8:48:58 AM] [] [InventoryStorer] [56] [] [***** MODELVERSION  :5.1] [] []
[DEBUG] [6/1/13 8:48:58 AM] [] [InventoryStorer] [56] [] [Collector Version   :: 11.2.3.89045] [] []
[DEBUG] [6/1/13 8:48:58 AM] [] [InventoryStorer] [56] [] [About to check for host name exists :: novell-cdd3bd87] [] []
[DEBUG] [6/1/13 8:48:58 AM] [] [Inventory] [56] [] [row size : 1] [] []
[DEBUG] [6/1/13 8:48:58 AM] [] [Inventory] [56] [] [row Object : 0] [] []
[DEBUG] [6/1/13 8:48:58 AM] [] [Inventory] [56] [] [Count : 0] [] []
[DEBUG] [6/1/13 8:48:58 AM] [] [Inventory] [56] [] [host name does not exists ] [] []
[DEBUG] [6/1/13 8:48:58 AM] [] [InventoryStorer] [56] [] [About to create Device :: ] [] []
[DEBUG] [6/1/13 8:48:58 AM] [] [Loader.InventoryStorerAMModule] [56] [] [InventoryStorerModule: Successfully created device (727 ms) ] [] []
[DEBUG] [6/1/13 8:48:58 AM] [] [InventoryStorer] [56] [] [Starting inventory load...] [] []
[DEBUG] [6/1/13 8:48:58 AM] [] [InventoryStorer] [56] [] [Loading machine  :NOVELL-CDD3BD87] [] []
[DEBUG] [6/1/13 8:48:58 AM] [] [InventoryStorer] [56] [] [the  wokstation is un-managed the device GUIDa2b48d987684ff40bbc9ed69394f1089'...] [] []





Additional Information

Example zenumiaEvent log:

<EVENT AT="6/01/2013 8:56:30">
Collection Client initialized
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
C:\Program Files\Novell\ZENworks\bin\zenumia.exe
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
Client Version 11.2.2 built Sep 13 2012 12:44:57.
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
Options= Portable:0, Svc:0, ScanNow:1
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
m_Options.Refresh ret. 1
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
m_Options CheckinInterval: 720
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
Initializing libcurl...
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
curl_global_init completed.
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
Event: NovellZenworksUIA_Refresh was successfully opened.
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
Event: Global\NovellZenworksUIA_Schedule was successfully opened.
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
CRefreshHandler:Refresh()
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
Refreshing options...
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
COptions::Refresh()
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
From registry...
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
Server from Registry : oracle11.mry.com
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
Port from Registry : 80
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
Secure Port from Registry : 443
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
From Ini...
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
From xml...
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
COptions::ParseXMLAgentConfig-->Length of file : 581
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
COptions::ParseXMLAgentConfig - next scan: 2013-06-01T16:00:00
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
Refreshing options complete
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
Getting server list...
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
Getting first server...
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
contacting oracle11.mry.com
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
ColSvr init OK for oracle11.mry.com
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
CRefreshHandler::RefreshFiles
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
Getting file from server catalog.ini at destination ./incomingUIA
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
http://oracle11.mry.com:80/zenworks-unmaninv/?action=GetFile&Filename=catalog.ini&Type=0&Platform=1&Lang=1
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
  catalog.ini: 1801 bytes downloaded
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
  Unmanaged inventory servlet returned status: 200
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
Getting file from server options.xml at destination ./incomingUIA
</EVENT>

<EVENT AT="6/01/2013 8:56:30">
http://oracle11.mry.com:80/zenworks-unmaninv/?action=GetFile&Filename=options.xml&Type=4&Platform=11&Lang=0
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
  options.xml: 1946 bytes downloaded
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
  Unmanaged inventory servlet returned status: 200
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
Moving files from staging area...
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
Got File: options.xml, T=4 S=1
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
Service in use? bIfSvc:0, isService:0, bNot9x: 1
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
Copy file? bIfClient:0, bServiceInUse: 0
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
CRefreshHandler::ParseXMLBadUuid-->Length of file : 581
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
CRefreshHandler::ParseXMLBadUuid-->File Successfully read
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
CRefreshHandler::ParseXMLBadUuid-->Parsing of file completed
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
COptions::Refresh()
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
From registry...
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
Server from Registry : oracle11.mry.com
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
Port from Registry : 80
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
Secure Port from Registry : 443
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
From Ini...
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
From xml...
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
COptions::ParseXMLAgentConfig-->Length of file : 581
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
COptions::ParseXMLAgentConfig - next scan: 2013-06-01T16:00:00
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
Refresh completed
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
CRefreshHandler::GetCheckInterval
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
RefreshNow: 0
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
  Next refresh checkin=720 (mins), connState=1
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
no inventories left to post, checking for scan
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
  Scheduler detected scanOnDemand
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
  ***** Launch sequence *****
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
CScheduler::ParseXMLFieldAppsConfig-->Length of file : 581
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
CScheduler::ParseXMLFieldAppsConfig-->File Successfully read
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
CScheduler::ParseXMLFieldAppsConfig-->Parsing of file completed
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
RunInventory - c:1, e:0, smst:0, ut:0
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
SetFileSecurity for ./outgoingUIA
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
Client is running as an application
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
Running Collector
</EVENT>

<EVENT AT="6/01/2013 8:56:31">
Running as an app, will launch colw32 normally
</EVENT>

<EVENT AT="6/01/2013 8:58:53">
pMode->Start ret.: 1
</EVENT>

<EVENT AT="6/01/2013 8:58:53">
Unable to rename ./outgoingUIA\a2b48d987684ff40bbc9ed69394f1089.xml to ./outgoingUIA\1370102191-a2b48d987684ff40bbc9ed69394f1089-last.xml (err=2)
</EVENT>

<EVENT AT="6/01/2013 8:58:53">
Found inventory file ./outgoingUIA/a2b48d987684ff40bbc9ed69394f1089-last.xml to be posted
</EVENT>

<EVENT AT="6/01/2013 8:58:53">
 *** PostInventoryResults: sending ./outgoingUIA/a2b48d987684ff40bbc9ed69394f1089-last.xml to oracle11.mry.com
</EVENT>

<EVENT AT="6/01/2013 8:58:53">
https://oracle11.mry.com:443/zenworks-fileupload/?type=inventory&filename=a2b48d987684ff40bbc9ed69394f1089-last.xml&autogenerate=true&overwrite=true
</EVENT>

<EVENT AT="6/01/2013 8:58:54">
  File upload servlet returned status: 200
</EVENT>

<EVENT AT="6/01/2013 8:58:54">
CScheduler::ParseXMLSchedule-->Length of file : 581
</EVENT>

<EVENT AT="6/01/2013 8:58:54">
CScheduler::ParseXMLSchedule-->File Successfully read
</EVENT>

<EVENT AT="6/01/2013 8:58:54">
CScheduler::ParseXMLSchedule-->Parsing of file completed
</EVENT>

<EVENT AT="6/01/2013 8:58:54">
CScheduler::ParseXMLSchedule-->next scan: 2013-06-01T16:00:00
</EVENT>

<EVENT AT="6/01/2013 8:58:54">
CScheduler::ParseXMLSchedule-->next scan time: 2013-06-01T16:00:00.000
</EVENT>

<EVENT AT="6/01/2013 8:58:54">
Scheduler: evaluation completed
</EVENT>

<EVENT AT="6/01/2013 8:58:54">
  Next scheduler evaluation=720 (mins), connState=1
</EVENT>