De l'inventaire à la CMDB dans GLPI : les relations entre actifs

Dans GLPI, le pont entre inventaire et CMDB n'est pas l'onglet Connexions - c'est l'analyse d'impact (glpi_impactrelations). Guide des quatre mécanismes de relation, quand utiliser les Applications (Appliances), la sémantique de la flèche que presque tout le monde inverse, et les requêtes de diagnostic que nous exécutons en exploitation pour repérer la CMDB aveugle.

Dans cet article7 sections

Un inventaire répond à "qu'est-ce que je possède ?". Une CMDB répond à "qu'est-ce qui tombe en même temps quand ceci échoue ?". Le pont entre les deux dans GLPI n'est pas l'onglet Connexions, comme beaucoup le supposent - c'est l'analyse d'impact, et c'est exactement là que la plupart des projets de CMDB s'enlisent. Ce guide présente les quatre mécanismes de relation qu'offre GLPI, lequel utiliser selon le cas, et les requêtes que nous exécutons en exploitation pour repérer la CMDB aveugle.

Inventaire vs CMDB : la différence qui change la réponse aux incidents

L'inventaire est un enregistrement : marque, modèle, numéro de série, garantie, responsable. C'est du contrôle patrimonial et c'est là que tout le monde commence - avec l'inventaire automatique de GLPI Agent, vous peuplez des centaines d'actifs en quelques jours. La CMDB, c'est l'étape suivante : la couche de relation qui répond à la question qui compte en plein incident - si ce switch tombe, quels serveurs, services et utilisateurs s'arrêtent avec lui ?

AspectInventaireCMDB
Question à laquelle il répondQu'est-ce que je possède ?Qu'est-ce qui dépend de quoi ?
UnitéActif (élément)Relation entre CI
Comment il se peupleAutomatique (GLPI Agent)Manuel, une décision de modélisation
Valeur pendant un incidentTrouver l'équipementPrévoir le rayon d'impact

L'erreur stratégique courante est de traiter la CMDB comme un "inventaire plus détaillé" et de vouloir renseigner une relation pour tout. Ça ne passe pas à l'échelle et personne ne le maintient. Une bonne CMDB est sobre : uniquement les CI critiques et les dépendances que vous utiliseriez réellement dans une analyse d'impact.

Les quatre mécanismes de relation dans GLPI

GLPI n'a pas un unique "champ de relation" - il a quatre mécanismes distincts, chacun dans sa table, et choisir le mauvais est la racine de la plupart des CMDB qui ne fonctionnent pas. En exploitation, l'erreur numéro 1 est de tout monter dans l'onglet Connexions en croyant que c'est la CMDB, puis de découvrir que l'analyse d'impact est vide.

MécanismeTableModéliseOrienté ?Peuplé par
Connexions directesglpi_computers_itemsPériphérique relié à un ordinateur (écran, imprimante, téléphone)NonInventaire ou manuel
Ports réseauglpi_networkports_networkportsCâblage entre deux ports (switch ↔ hôte)NonSNMP/LLDP ou manuel
Applications (Appliances)glpi_appliances_itemsUn service/une application comme CI + l'infrastructure qui le soutientNon (regroupement)Manuel
Analyse d'impactglpi_impactrelationsGraphe de dépendance pour calculer le rayon d'impactOui (source → impacté)Manuel (onglet Impact)

Connexions et ports réseau modélisent le lien physique. Applications regroupe l'infrastructure d'un service. Et l'analyse d'impact - la seule orientée - est le graphe de dépendance qui répond vraiment à "qu'est-ce qui tombe ensemble". Les quatre coexistent ; la confusion vient de s'attendre à ce que l'un fasse le travail de l'autre.

Modélisez le service comme un CI : Applications (Appliances)

L'étape qui manque à la plupart des inventaires est de donner au service une existence propre. "Messagerie", "ERP", "Portail client" ne sont pas du matériel - ce sont des services qui tournent sur du matériel. Dans GLPI, l'objet adapté est l'Application (Appliances, menu Parc), disponible depuis GLPI 9.5. Une Application est un CI logique auquel vous reliez les éléments qui le soutiennent :

  1. Créez l'Application (par ex. "Service de messagerie").
  2. Dans l'onglet des éléments associés, reliez les CI de support : le serveur, le switch cœur, le stockage, le lien internet. Cela s'écrit dans glpi_appliances_items.
  3. Renseignez le responsable technique, le contrat de support et le fournisseur sur l'Application elle-même.

À partir de là, le service existe comme entité interrogeable : vous ouvrez "Service de messagerie" et voyez la liste de l'infrastructure qui le soutient, sans dépendre de la mémoire de qui que ce soit.

La vraie CMDB : l'analyse d'impact

Regrouper l'infrastructure dans une Application indique qui soutient quoi, mais ne calcule pas le rayon d'impact d'une panne. C'est le rôle de l'onglet Analyse d'impact (présent depuis GLPI 9.4), qui dessine un graphe orienté de dépendances stocké dans glpi_impactrelations. Chaque arête a une source et une cible : itemtype_source, items_id_source impacte itemtype_impacted, items_id_impacted.

Le sens est le détail qui sépare celui qui comprend de celui qui a juste déplacé des cases. Une arête du switch vers le serveur signifie "le switch impacte le serveur". Quand le switch tombe, vous suivez les flèches vers l'avant et voyez tout ce qui s'arrête avec lui. L'erreur courante est de tracer la flèche à l'envers - relier le serveur comme impactant le switch - et alors l'analyse d'impact du switch en panne ressort vide, justement quand vous en avez le plus besoin. Modélisez toujours dans le sens du flux de dépendance : de l'infrastructure de base vers le service au sommet.

Une précaution de terrain : le graphe est rendu dans le navigateur et devient lent avec des centaines de nœuds. N'essayez pas de dessiner tout le parc. Utilisez la criticité métier (la liste déroulante Criticité, sous Configuration > Listes déroulantes) pour marquer les CI critiques et ne mettez que ceux-là sur le graphe. Une CMDB dense est une CMDB abandonnée.

SQL de diagnostic : trouver la CMDB aveugle

Au démarrage d'un contrat de maintenance, avant même de parler processus, nous lançons un audit de couverture : quels CI critiques sont dans l'inventaire mais hors de toute relation d'impact. Ce sont les points où l'analyse d'impact mentira, en disant "rien n'est affecté" alors qu'en réalité personne ne l'a modélisé. La requête liste les ordinateurs sans aucune arête - ni comme source, ni comme cible :

-- Ordinateurs SANS aucune relation d'impact :
-- ils existent dans l'inventaire, mais sont invisibles pour l'analyse d'impact.
SELECT c.id, c.name
FROM glpi_computers c
LEFT JOIN glpi_impactrelations r
       ON (r.itemtype_source   = 'Computer' AND r.items_id_source   = c.id)
       OR (r.itemtype_impacted = 'Computer' AND r.items_id_impacted = c.id)
WHERE c.is_deleted = 0
  AND r.id IS NULL
ORDER BY c.name;

Et l'autre côté : pour un service modélisé en Application, quels CI il regroupe. Utile pour vérifier si "Service de messagerie" pointe bien vers le bon serveur et le bon switch avant de s'y fier en pleine nuit d'incident :

-- Elements qui soutiennent une Application (service) precise :
SELECT ai.itemtype, ai.items_id
FROM glpi_appliances_items ai
INNER JOIN glpi_appliances a ON a.id = ai.appliances_id
WHERE a.name = 'Service de messagerie';

Nous exécutons ces deux requêtes directement sur la base de données (via un client SQL en lecture seule), jamais par un LIKE dans l'interface, car nous voulons le nombre exact d'orphelins pour dimensionner l'effort de modélisation.

La découverte automatique ne construit pas la CMDB à votre place

Il faut défaire une attente présente dans chaque projet : l'inventaire réseau par SNMP découvre les connexions physiques - si GLPI Agent scanne les switches en SNMP et que LLDP/CDP est actif, les ports réseau entre switch et hôte se peuplent tout seuls dans glpi_networkports_networkports. C'est excellent et vous ne devez pas le faire à la main. Mais la dépendance logique de service - "la messagerie dépend de ce serveur" - aucun protocole ne la découvre. L'agent ne sait pas que tel processus Exchange est votre service de messagerie critique. Cette couche est toujours une décision humaine, et c'est précisément elle qui transforme l'inventaire en CMDB.

Gardez le graphe vivant, sinon il ment

Une CMDB obsolète est pire qu'une CMDB inexistante : elle donne une fausse confiance. Vous remplacez un switch, oubliez de mettre à jour la relation, et à la panne suivante l'analyse d'impact pointe vers un équipement qui n'existe plus. Rattachez la maintenance du graphe au processus de gestion des changements - tout changement sur un CI critique doit revoir ses relations d'impact avant clôture. Sans cette discipline, le graphe vieillit en quelques semaines. C'est le même principe que la base de connaissances : une relation que personne ne maintient devient du bruit.

Vous avez besoin d'une CMDB GLPI qui soutient une vraie analyse d'impact, avec le graphe modélisé sur les bons CI et maintenu au rythme des changements ? Découvrez le service de maintenance GLPI de NexTool.


Révisé par l'équipe NexTool Solutions.

Questions fréquentes

Oui, via quatre mécanismes : connexions directes (glpi_computers_items), ports réseau (glpi_networkports_networkports), Applications (glpi_appliances_items) pour regrouper l'infrastructure d'un service, et l'analyse d'impact (glpi_impactrelations), le graphe orienté qui calcule le rayon d'impact d'une panne.

Connexions modélise le lien physique (un écran sur un ordinateur, port A vers port B) et n'est pas orienté. L'analyse d'impact est un graphe orienté de dépendance (la source impacte la cible) - c'est ce qui répond à 'qu'est-ce qui tombe ensemble' quand un CI échoue. Construire la CMDB uniquement sur l'onglet Connexions laisse l'analyse d'impact vide.

Utilisez les Applications (menu Parc, depuis GLPI 9.5). Créez l'Application et reliez les CI qui la soutiennent (serveur, switch, stockage, lien) dans l'onglet des éléments associés ; cela s'écrit dans glpi_appliances_items. Pour le rayon d'impact, ajoutez aussi les dépendances dans l'onglet Analyse d'impact.

Non, et il ne le faut pas. Commencez par les CI critiques (serveurs, switches cœur, pare-feux, services métier) et leurs dépendances. Une CMDB dense rend le graphe lent et personne ne la maintient. Utilisez la criticité métier pour choisir ce qui y entre.

Seulement la partie physique. L'inventaire réseau par SNMP/LLDP peuple automatiquement les connexions entre switch et hôte. Mais la dépendance logique de service ('la messagerie dépend de ce serveur') n'est découverte par aucun protocole - c'est toujours de la modélisation manuelle.

Besoin d'aide ?