Wednesday, August 19, 2015

Troubleshooting SCCM Hardware Inventory

Hardware inventory is a feature in itself and functions independent to the other features of SCCM, but it closely depends on a successful deployment.
SCCM Setup has to complete successfully. The Hardware inventory feature on the server side solely depends on setup and successful SQL install. All the tables from the default sms_def.mof should get correctly created in SQL with the right credentials.
Similarly, for the hardware inventory agent to function as per requirements on the Advanced client, the client setup should have completed successfully and the client should have access to the MP for the Advanced client. On the Advanced client the Inventory agent’s functionality is dependent on the running of the SMS Agent Host service (ccmexec).
The entire hardware inventory feature is dependent on the sms_def.mof file present in the clifiles.src\hinv folder on the SiteServer. If that file is deleted or made corrupt, hardware inventory feature on the clients would not report any valid hardware inventory data.
Client Side
For any inventory to start it has to be scheduled. This is downloaded during the initial policy download.
èInventoryAgent.Log
Inventory: Message type is InventoryAction
Inventory: Temp directory = C:\SMS_CCM\Inventory\Temp\
Inventory: Clearing old collected files.
Inventory: Opening store for action {00000000-0000-0000-0000-000000000001}
We can also manually trigger via the Configuration Manger Control Panel Applet or can  be triggered using sendsched.vbs.
The Client then checks the policy and determines if it needs to initiate a Full, Delta or Re-Sync. First scan will always be a Full Scan all subsequent scans are Deltas. Re-Sync request is sent by the server if no existing client record exists for the delta sent by a client.
If there is issue in receiving the policy you can check the communication between the client and the MP. Use the steps mentioned in the client reporting troubleshooting.
èInventoryagent.log
Inventory: Delta report without a previous Full report; will do a Full report.
Inventory: Action=Hardware ReportType=Full
Once the scan type (Full, Re-Sync, or Delta) has been determined, the Hardware Inventory Client Agent must now determine precisely what to inventory:
Based on the rules and scan type, configuration manager scans WMI and the registry. Results of scan are stored in WMI. Once compiled into WMI, the client generates an XML file. Advanced Client converts XML file to message file and are send to MP. These are as shown in the verbose Inventoryagent.log
Invetoryagent.log
Inventory: Message type is InventoryAction        InventoryAgent                1/31/2010 9:39:10 AM  384 (0x0180)
Inventory: Temp directory = C:\WINDOWS\system32\CCM\Inventory\Temp\           InventoryAgent                1/31/2010 9:39:10 AM  384 (0x0180)
Inventory: Clearing old collected files.                     InventoryAgent                1/31/2010 9:39:10 AM  384 (0x0180)
Inventory: Opening store for action {00000000-0000-0000-0000-000000000001} ...  InventoryAgent                1/31/2010 9:39:10 AM  384 (0x0180)
Inventory: Delta report without a previous Full report; will do a Full report.                   InventoryAgent                1/31/2010 9:39:10 AM  384 (0x0180)
Inventory: Action=Hardware ReportType=Full    InventoryAgent                1/31/2010 9:39:10 AM  384 (0x0180)
Inventory: Initialization completed in 0.020 seconds                  InventoryAgent                1/31/2010 9:39:10 AM  384 (0x0180)
Collection: Namespace = \\.\root\ccm\invagt; Query = SELECT __CLASS, __PATH, __RELPATH, Name, SMSID, Domain, SystemRole, SystemType, LocalDateTime FROM CCM_System; Timeout = 600 secs.         InventoryAgent                1/31/2010 9:39:10 AM  384 (0x0180)
Inventory: Message [Type=InventoryAction, ActionID={00000000-0000-0000-0000-000000000003}, Report=Full] already in queue. Message ignored.           InventoryAgent                        1/31/2010 9:39:10 AM  2452 (0x0994)
…………….
………………
…………………

Collection: Class "Win32_TSLicenseKeyPack" does not exist out.                   InventoryAgent                1/31/2010 9:40:08 AM  384 (0x0180)
Collection: Namespace = \\.\root\cimv2; Query = SELECT __CLASS, __PATH, __RELPATH, Availability, Description, DeviceID, Manufacturer, Name, Status FROM Win32_IDEController; Timeout = 600 secs.         InventoryAgent                1/31/2010 9:40:08 AM  384 (0x0180)
Collection: 34/51 inventory data items successfully inventoried.                  InventoryAgent                1/31/2010 9:40:08 AM  384 (0x0180)
Inventory: Collection Task completed in 57.953 seconds          InventoryAgent                1/31/2010 9:40:08 AM  384 (0x0180)
Inventory: 17 Collection Task(s) failed.                    InventoryAgent                1/31/2010 9:40:08 AM  384 (0x0180)
Inventory: Temp report = C:\WINDOWS\system32\CCM\Inventory\Temp\96dbb66b-b57d-4812-95a6-cf21d7c7c44b.xml                     InventoryAgent               1/31/2010 9:40:08 AM  384 (0x0180)
Inventory: Starting reporting task.   InventoryAgent                1/31/2010 9:40:08 AM  384 (0x0180)
Reporting: 330 report entries created.                    InventoryAgent                1/31/2010 9:40:08 AM  384 (0x0180)
Inventory: Reporting Task completed in 0.411 seconds            InventoryAgent                1/31/2010 9:40:08 AM  384 (0x0180)
Inventory: Successfully sent report. Destination:mp:MP_HinvEndpoint, ID: {9DAA9999-4535-4E5C-A6CB-CAD2D11BA960}, Timeout: 80640 minutes MsgMode: Signed, Not Encrypted                        InventoryAgent                1/31/2010 9:40:09 AM  384 (0x0180)
Inventory: Cycle completed in 62.961 seconds     InventoryAgent                1/31/2010 9:40:13 AM  384 (0x0180)
Inventory: Action completed.              InventoryAgent                1/31/2010 9:40:13 AM  384 (0x0180)

If inventory fails, to correct it you can check reinstalling the client and also check for any WMI issues. Follow the steps in WMI troubleshooting in the client reporting part for any WMI issues
This is the end of client side troubleshooting. Now once this is over you need to check the rest of the process in the server side.
Server Side
In the server the CCMExec on the MP processes the message and generates the XML file. File is stored in [1] \MP\Outboxes\Hinv.box



You can view this information from
MP_Hinv.Log
Hinv Retry: ******************* Start of Task *********************                 MP_HinvEndpoint            4/21/2010 10:39:15 AM                       4360 (0x1108)
Hinv Sax: loading C:\Program Files\Microsoft Configuration Manager\inboxes\auth\dataldr.box\HinvAttachmentY3ZGIYW8.xml        MP_HinvEndpoint           4/21/2010 10:39:15 AM                        4360 (0x1108)
Delta report from client SQL, action description = Hardware  MP_HinvEndpoint            4/21/2010 10:39:15 AM                       4360 (0x1108)
Hinv Task: Translate report attachment to file "C:\Program Files\Microsoft Configuration Manager\inboxes\auth\dataldr.box\HQG4Q6EI.MIF" returned 0  MP_HinvEndpoint                        4/21/2010 10:39:15 AM                       4360 (0x1108)
Hinv Retry: ******************* End of Task *********************                    MP_HinvEndpoint            4/21/2010 10:39:15 AM                       4360 (0x1108)
XML file is then parsed and used to create a .MIF file. This process can be monitored in the MP_Hinv.log
.MIF file is stored in the [2]\MP\Outboxes\Hinv.box
MP_Hinv.log
Hinv Retry: ******************* Start of Task *********************                 MP_HinvEndpoint            1/31/2010 9:32:23 AM  2580 (0x0A14)
Hinv Sax: loading C:\Program Files\Microsoft Configuration Manager\inboxes\auth\dataldr.box\HinvAttachmentXM1YR1Q7.xml       MP_HinvEndpoint           1/31/2010 9:32:23 AM  2580 (0x0A14)
Full report from client DC, action description = Hardware        MP_HinvEndpoint            1/31/2010 9:32:23 AM  2580 (0x0A14)
Hinv Task: Translate report attachment to file "C:\Program Files\Microsoft Configuration Manager\inboxes\auth\dataldr.box\H8TADQ8W.MIF" returned 0                         MP_HinvEndpoint                        1/31/2010 9:32:23 AM  2580 (0x0A14)
Hinv Retry: ******************* End of Task *********************                    MP_HinvEndpoint            1/31/2010 9:32:23 AM  2580 (0x0A14)
Management Point File Dispatch Manager copies the file from SMS\MP\Outboxes\Hinv.box to SMS\Inboxes\Dataldr.box . This process can be monitored in the MPFDM.log
MIF file is parsed and determines type of data to be inserted into the database. View dataldr.log to monitor progress, sql tracing can be enabled for detailed output and to further troubleshoot if MIF data is not processed and inserted to the database properly.
If the file is not received at this point need to check the communication between the server and the agent.
Dataldr.log
>> Add 1 files to process directory ...                       SMS_INVENTORY_DATA_LOADER   4/21/2010 2:44:25 PM  804 (0x0324)
Moving MIF file C:\Program Files\Microsoft Configuration Manager\inboxes\auth\dataldr.box\HIZAHGPO.MIF to C:\Program Files\Microsoft Configuration Manager\inboxes\auth\dataldr.box\process\HIZAHGPO.MIF                     SMS_INVENTORY_DATA_LOADER   4/21/2010 2:44:25 PM  804 (0x0324)
Started the machine MIF processing thread, thread ID = AF4                       SMS_INVENTORY_DATA_LOADER   4/21/2010 2:44:25 PM  804 (0x0324)
Worker thread 2612 starting execution.                 SMS_INVENTORY_DATA_LOADER   4/21/2010 2:44:25 PM  2612 (0x0A34)
Done with job queueing.                        SMS_INVENTORY_DATA_LOADER   4/21/2010 2:44:26 PM  2804 (0x0AF4)
Blocking until completion.                      SMS_INVENTORY_DATA_LOADER   4/21/2010 2:44:26 PM  2804 (0x0AF4)
Thread: 0 is using GUID  SMS_INVENTORY_DATA_LOADER   4/21/2010 2:44:27 PM  2612 (0x0A34)
Thread: 2612 will use GUID GUID:76B6D180-F0B6-4689-B294-6CCE9033D7EB              SMS_INVENTORY_DATA_LOADER   4/21/2010 2:44:27 PM  2612 (0x0A34)
Processing Inventory for Machine: SQL   Version 1.5  Generated: 04/21/2010 14:44:19                   SMS_INVENTORY_DATA_LOADER   4/21/2010 2:44:27 PM 2612 (0x0A34)
Begin transaction: Machine=SQL(GUID:76B6D180-F0B6-4689-B294-6CCE9033D7EB) SMS_INVENTORY_DATA_LOADER   4/21/2010 2:44:28 PM  2612 (0x0A34)
Commit transaction: Machine=SQL(GUID:76B6D180-F0B6-4689-B294-6CCE9033D7EB)                     SMS_INVENTORY_DATA_LOADER   4/21/2010 2:44:30 PM 2612 (0x0A34)
Done: Machine=SQL(GUID:76B6D180-F0B6-4689-B294-6CCE9033D7EB) code=0 (16 stored procs in XHIZAHGPO.MIF)       SMS_INVENTORY_DATA_LOADER  4/21/2010 2:44:30 PM  2612 (0x0A34)
Done blocking until completion.          SMS_INVENTORY_DATA_LOADER   4/21/2010 2:44:30 PM  2804 (0x0AF4)
No more machine MIFs to be processed, terminating thread                        SMS_INVENTORY_DATA_LOADER   4/21/2010 2:44:30 PM  2804 (0x0AF4)
Shutting down Machine Writer.         SMS_INVENTORY_DATA_LOADER   4/21/2010 2:44:30 PM  2804 (0x0AF4)
Worker thread 2612 halting execution.                   SMS_INVENTORY_DATA_LOADER   4/21/2010 2:44:31 PM  2612 (0x0A34)
Finished processing 1 MIFs                  SMS_INVENTORY_DATA_LOADER   4/21/2010 2:44:35 PM  2804 (0x0AF4)


Once this is completed we should be able to see the data in the resource explorer.  If there is some failure at this point we can enable SQL logging and check the insertion of data. Also if you have issue with the component SMS_INVENTORY_DATA_LOADER then a site reset can also help. 


[1]  SERVERDIR :\Program Files\Microsoft Configuration Manager\  or \SMS\
[2]   SERVERDIR :\Program Files\Microsoft Configuration Manager\  or \SMS\

No comments:

Post a Comment