The key to fixing Inventory problems is identifying what is causing them in the first place. The difficulty is that a myriad of problems will result in the same basic symptoms:
- Inventory is out of date or stale
- Inventory reports are not accurate – This includes specific data points, such as reporting on Processor only
- Inventory is missing from some to many systems – this may include all inventory, or only specific data
To overcome this problem, the process needs to be understood and then tracked to identify where the issue occurs. The next few sections cover this process and are the bulk of how to troubleshoot Inventory problems. The previous sections setup things to watch out for and provide understanding in how various components work, and what problems and solutions may arise from that. When facing one of the symptoms above, ask the following questions:
- Is Inventory running on all expected targeted systems?
- Are the target system’s executions successful?
- Does the data get properly captured by the client?
- Is the data accurate during the capture?
- Does the data make it to the Notification Server over the network?
- Is the data properly inserted into the database?
Each of these questions have items to review, and troubleshooting steps to try. First, understanding the full Process Flow of Inventory will help when walking through these questions.
Inventory Process Flow
The following process flow gives details about what occurs from start to finish for the entire process.
- Inventory Policy enabled for the Target Filter. This specifies what computers will receive the configured policy. Enough policies should be enabled to cover the requirements of the environment. For this example. The Full will be considered so all appropriate data is gathered.
- The Resource Membership update occurs (Delta) that lets the NS know to include the policies in the clients configuration.
- The clients request their updated configuration by hitting the page:
http://Servername/Altiris/NS/Agent/GetClientPolicies.aspx. This page may be https if SSL certificates are being used. - The server compiles the configuration XML and the client downloads it to C:\Program Files\Altiris\Altiris Agent\Client Policies.
- If a new Inventory policy exists, the Inventory configuration XMLs are downloaded to C:\Program Files\Altiris\Altiris Agent\Agents\Inventory Agent\InvTaskConfig or C:\Program Files (x86)\Altiris\Altiris Agent\Agents\Inventory Agent\InvTaskConfig.
- The Policy is executed according to the scheduled time.
- Hardware, Operating System, Users, and Server Inventory Processes place data files (*.nsi) at: C:\Program Files\Altiris\Inventory\NSI when collected. NSEs are generated from these and passed to the Symantec Management Agent.
File data and Software Discovery information is compiled in memory and written to C:\Program Files\Altiris\Inventory\Outbox in NSE format. These are then copied out to the Symantec Management Agent - After the NSEs are passed off to the Symantec Management Agent, the Agent posts Inventory to the URL: http://servername/altiris/ns/agent/postevent.asp (https if SSL is implemented)
- The Receiver will move the inventory into the queue to be processed. If the NSE is large enough, it will split the NSE into multiple files as it is received, copied to the
C:\ProgramData\Symantec\SMP\EventQueue\Temp folder, then reassembled when all data has been received, at which point it is placed in the queue. The queue is located at:
C:\ProgramData\Symantec\SMP\EventQueue\EvtQueue. In 7.1 SP2 and 7.5 the other queues are not used. - As the server picks up each NSE to be processed, it consults ResourceUpdateSummary to determine if data really needs to be loaded in the database. It does this by taking the HASH for each Data class and compares it to the stored hash in the ResourceUpdateSummary table. If the hashes match, it simply drops the data and does not insert. If the Hashes are not the same, the Hash in the table is NULL, or no row exists for that computer and data class, then a row is generated based on the new data.
- Per data class being processed, the Data Loader loads the Inventory into the associated data class table.
Here is a visual representation of this process: