Native GLPI Inventory: Complete Configuration Guide

Technical guide to native inventory in GLPI 10/11 with GLPI Agent: enabling inventory on the server, a standard agent.cfg, cron in CLI mode, SNMP discovery, a duplicate-serial blacklist, diagnostic SQL and a troubleshooting matrix, drawn from NexTool maintenance experience.

In this article8 sections

Installing GLPI Agent is only 20% of the job. What decides whether inventory becomes reliable data is the server-side configuration: enabling inventory, tuning the cron, handling duplicate serials and hardening the import rules. This guide covers the path we use while maintaining client GLPI fleets, with the adjustments that keep the CMDB from filling up with ghosts.

Step 0: enable inventory on the server (the step everyone skips)

The most common mistake we find is the agent correctly installed on the workstations while inventory is switched off in GLPI. Without that toggle, the agent POSTs hit an endpoint that processes nothing, and support wastes hours blaming the firewall. Before installing any agent, confirm on the server:

  • In Setup > General > Inventory tab, check Enable inventory.
  • Confirm the native GLPI 10/11 endpoint: https://glpi.yourcompany.com/front/inventory.php (the 1.x agent resolves this path on its own from the base URL).
  • In the inventory configuration, review the import options: import computers, monitors, printers and components according to the client policy.

Deploying GLPI Agent (Windows and Linux)

On Windows, the silent MSI is the standard for GPO. The TAG is the most important parameter and the one fewest people use: it is what the import rules use to route the asset to the right entity and location.

glpi-agent-1.x-x64.msi /qn SERVER=https://glpi.yourcompany.com TAG=branch-sp

On Linux, the official installer handles dependencies:

curl -sL https://raw.githubusercontent.com/glpi-project/glpi-agent/main/tools/linux-installer.sh | bash -s -- --server https://glpi.yourcompany.com --tag branch-sp

Regardless of the OS, the agent behavior lives in a config file. This is the baseline we standardize:

# /etc/glpi-agent/agent.cfg   (Linux)
# %ProgramFiles%\GLPI-Agent\etc\agent.cfg   (Windows)

# Native GLPI 10/11 endpoint (the 1.x agent resolves /front/inventory.php):
server = https://glpi.yourcompany.com

# TAG used by the rules to route entity/location (e.g. branch):
tag = branch-sp

# Resend frequency in seconds (86400 = once a day):
delaytime = 86400

# Random window: avoids everyone reporting in the same login minute:
lazy = 1

# ONLY on an internal network with a self-signed certificate:
# no-ssl-check = 1

Cron: making sure inventory is actually processed

Here lies a classic trap. By default, GLPI automatic actions run in GLPI mode (triggered when someone browses the system). That is unpredictable: over a weekend, with nobody logged in, nothing runs. For reliable inventory, telemetry and queues, switch the automatic actions to CLI (external) mode and schedule the operating system cron. On GLPI 11 the entry point is front/cron.php (the bin/console glpi:cron console does not cover everything):

# /etc/cron.d/glpi  -  processes GLPI automatic actions and queues
# Runs as the PHP user (apache/www-data), every 2 minutes:
*/2 * * * * apache /usr/bin/php /var/www/glpi/front/cron.php >/dev/null 2>&1

Then, under Setup > Automatic actions, open each relevant task and change the execution mode from GLPI to CLI. Without this, the client complains about "outdated inventory" and the cause is not in the agent.

SNMP discovery: switches, routers and printers

Workstations with an agent are the easy part. Network devices do not run an agent and rely on SNMP. The sequence that works:

  1. Install the network tasks on the concentrator agent (the glpi-agent-task-network package on Linux; the Windows installer already includes the SNMP modules).
  2. Register the SNMP credentials (v2c community or v3) under Administration > Inventory > SNMP credentials.
  3. Define the IP ranges to scan under Administration > Inventory > IP ranges.
  4. Schedule the Network discovery (finds what exists) and Network inventory (collects detail on what was already discovered) tasks.

The common mistake here is scheduling Network inventory without running discovery first: without discovered and classified equipment, there is nothing to inventory in detail.

Import rules and the duplicate serial problem

While maintaining fleets of hundreds of machines, what generates the most "ghosts" in inventory is not the agent: it is the generic serial. Assembled laptops and desktops report serial number To be filled by O.E.M., System Serial Number or 0000000000; virtual machines cloned from the same template carry the SAME UUID. If the import rule matches by serial, GLPI links all those machines to the SAME asset, or creates dozens of duplicates on every inventory cycle. We decided to standardize two controls at every client: first, register those junk serials and MACs in the Blacklist tab of the inventory configuration so GLPI ignores them; second, add a UUID criterion on top of the serial in the import rule (Administration > Rules > Rules for import and link of equipment). The common mistake is trusting the serial alone and discovering the damage three months later, with an inflated CMDB and a software license count blown out by the duplicates.

Diagnostics: SQL to find silent agents

When the client asks "how many machines stopped reporting?", the UI does not answer quickly. This query lists agents with no contact for more than 7 days, candidates for a powered-off machine, a reimage or a stopped agent service:

-- Agents with no contact for more than 7 days
SELECT a.name AS agent, a.last_contact, c.name AS computer
FROM glpi_agents a
LEFT JOIN glpi_computers c
       ON c.id = a.items_id AND a.itemtype = 'Computer'
WHERE a.last_contact < (NOW() - INTERVAL 7 DAY)
ORDER BY a.last_contact ASC;

Run it through a read-only SQL client. A spike of silent agents usually coincides with a GPO change, an expired certificate or a new firewall rule.

Field troubleshooting matrix

SymptomLikely causeFix
Agent does not appear under Administration > InventoryInventory disabled on the server or wrong URL/portEnable under Setup > General; check /front/inventory.php and firewall 443/80
POST returns 413 or truncated inventoryLow post_max_size / upload_max_filesize in PHPRaise to 20M or more and restart php-fpm; servers with lots of software produce large XML
SSL error in the agent logUntrusted self-signed certificateInstall the CA on the machine or set no-ssl-check = 1 (internal network only)
Duplicate machines on every cycleGeneric serial or cloned-template UUIDSerial/MAC blacklist + UUID criterion in the import rule
Network devices are not inventoriedMissing network task or SNMP credentialInstall glpi-agent-task-network; register the SNMP credential and IP ranges
Data always outdatedAutomatic actions in GLPI mode (does not run without traffic)Switch to CLI mode and schedule front/cron.php in the OS cron

From inventory to asset lifecycle

Collecting is half the job. Inventory only becomes management when the incoming data is classified, standardized and audited: import rules route entity and category, dictionaries normalize manufacturer and model names, and the audit trail records when an asset enters, changes owner or disappears from inventory. That chain is what separates "installing GLPI Agent" from "maintaining reliable inventory".

If your GLPI inventory is full of duplicates, with agents that vanish or network devices off the map, the NexTool GLPI maintenance team reviews the import rules, tunes the blacklist and connects inventory to the asset lifecycle. Talk to us about GLPI maintenance.


Reviewed by the NexTool Solutions team.

Frequently Asked Questions

No. From GLPI 10 onward inventory is native: install GLPI Agent on the workstations and point it at the server. But first you must enable inventory in GLPI itself (Setup > General > Inventory tab). Without that toggle, agents post to an endpoint that processes nothing.

Three causes cover almost every case: inventory disabled on the server; wrong server URL (it must resolve /front/inventory.php) or a firewall blocking 443/80; or the POST exceeding PHP's post_max_size on machines with lots of installed software. Check the agent log with glpi-agent --debug --force before blaming the network.

The villain is the generic serial: 'To be filled by O.E.M.', 'System Serial Number' or zeros, and the identical UUID of VMs cloned from the same template. Register those junk serials and MACs in the Blacklist tab of the inventory configuration and add a UUID criterion to the import rule, instead of trusting the serial number alone.

Yes, via SNMP. Install the network task on the concentrator agent (glpi-agent-task-network), register the SNMP credentials (v2c or v3) and IP ranges under Administration > Inventory, and schedule Network discovery first and then Network inventory. Running inventory without discovery first collects nothing.

By default every 24 hours, controlled by the agent's delaytime. To force an immediate collection, run glpi-agent --force on the machine. And make sure GLPI automatic actions run in CLI mode via cron (front/cron.php every 2 minutes); in GLPI mode they only fire when someone browses, which leaves inventory stale on weekends.

Need help?