Короткий ответ

Инвентаризация узлов — не «опрос коллег». Сведите четыре источника в лист CMDB Hosts: Active Directory, гипервизор, DHCP/DNS, свой сетевой скан. На каждую строку: имя, IP, OS, роль (DC, файлы, 1С, jump), владелец, критичность, backup-job. Без роли строка не закрыта.

Contoso: домен contoso.example, гипервизор HV01, Linux ubuntu2404. Владелец сервиса по умолчанию — Иван Петров, пока не назначен другой. Не удаляйте «непонятные» VM, пока не доказано, что это мусор.

Симптомы и как отличить

Типичная картина:

  • в стойке мигает сервер без бирки;
  • в Hyper-V висит New Virtual Machine, в AD её нет;
  • подрядчик оставил Ubuntu «для теста» на 10.0.10.77;
  • антивирусный отчёт по 40 узлам, в Excel — 22.

Отличия:

НаблюдениеЭто не «нет инвентаря»Куда
Нет схемы VLANсетьсхема as-is
Нет паспорта конкретного FILE01карточка узлапаспорт сервера
Нет лицензий на Windowsучёт ПОлицензии
Неясно, кто отвечает за 1Сownerвладельцы сервисов

Возможные причины

  1. Рост «по одной VM» без строки в CMDB.
  2. Подрядчики поднимают стенды и не сдают.
  3. Физические коробки старше текущей команды.
  4. Облачные VM в другом тенанте, локальный список их не видит.
  5. Имена SRV1/TEST без роли.
  6. Редко: намеренно скрытый jump у бывшего админа.

Диагностика

Цель диагностики — расхождения между источниками, не красивый отчёт.

1. Каталог компьютеров домена

Get-ADComputer -Filter * -Properties OperatingSystem, IPv4Address, LastLogonDate, Enabled |
  Select-Object Name, Enabled, OperatingSystem, IPv4Address, LastLogonDate, DistinguishedName |
  Sort-Object Name |
  Export-Csv -NoTypeInformation -Encoding UTF8 C:\Temp\cmdb-ad.csv

Отдельно серверы vs рабочие станции: по OU и по OperatingSystem -like '*Server*'. Выключенные (Enabled $false) не выкидывайте из отчёта — это кандидаты на decommission.

Группы с серверами:

Get-ADGroupMember -Identity 'Domain Controllers' |
  Select-Object SamAccountName, objectClass

2. Гипервизор и «железные» имена

С Hyper-V:

Get-VM -ComputerName 'HV01.contoso.example' |
  Select-Object Name, State, CPUUsage, MemoryAssigned, Id

С Proxmox/libvirt — штатный список VMID/имени вашей платформы. Сверьте hostname гостя с именем VM: рассинхрон — типичный призрак.

3. Свои сети

Только подсети с схемы:

nmap -sn 10.0.10.0/24 -oG /tmp/hosts-10.gnmap
# разбор: Up hosts
awk '/Up$/{print $2}' /tmp/hosts-10.gnmap
# Linux-инвентарь пакетов на уже известных узлах (по SSH-ключу jump)
ssh admin@10.0.10.10 'hostnamectl; ip -br a; ss -lntup'

4. DNS и «живые», но безымянные

Get-DnsServerResourceRecord -ZoneName 'contoso.example' -RRType A |
  Select-Object HostName, RecordData

IP из nmap без A-записи и без AD — строка unidentified в CMDB, не «проигнорировать».

Решение

Лист CMDB Hosts

Минимальные колонки:

hostnameIPOSrolesiteownerbackuplast-seennotes
DC0110.0.10.10WS2022AD/DNS/DHCPHQИван ПетровDaily-VMs2026-09-08FSMO
FILE0110.0.10.20WS2022SMBHQИван ПетровDaily-VMs2026-09-08shares
UBNT0110.0.10.40Ubuntu 24.04git/ciHQИван Петровrestic2026-09-08

Правила заполнения:

  1. Одна строка — один узел (физический или VM). Кластер = отдельные узлы + строка сервиса.
  2. role из короткого справочника: AD, DNS, DHCP, files, sql, 1c, mail-hybr, vpn, backup, jump, other. Не эссе.
  3. owner — человек, не «IT». Пока пусто — Иван Петров как временный, с датой назначения.
  4. Источник строки: ad, hv, nmap, manual. Можно несколько через ;.

Сценарий A. Первичный проход за день

  1. Выгрузка AD + VM + nmap -sn.
  2. Join по IP и имени (осторожно с DHCP).
  3. Всё, что только в nmap — обход стойки/консоли гипервизора, бирка, скрин.
  4. Непонятное: статус unknown, тикет на идентификацию, не delete VM.

Сценарий B. Призраки и выключение

Процедура decommission: владелец, данные, DNS/AD/backup-job, мониторинг, затем выключение в окно изменений. Без этого хост остаётся в списке как unknown.

Сценарий C. Linux вне домена

Отдельный контур: ключи SSH на jump, hostnamectl, cron, systemd. В CMDB тот же лист, колонка directory = workgroup/freeipa/none.

Как проверить, что проблема устранена

  • Число Up-хостов nmap по серверной VLAN ≈ число строк CMDB с этими IP (± явно исключённые принтеры).
  • Каждая VM на HV01 имеет строку.
  • У критичных ролей (DC, SQL, файлы, VPN) заполнены owner и backup.
  • Новый сотрудник по листу находит FILE01 без опроса чата.

Повторите выгрузку через неделю: дельта новых имён без заявки на изменение — процесс ещё дырявый.

Если не помогло

  • DHCP в пользовательской VLAN засоряет список: фильтруйте по серверным подсетям и по OS.
  • Два домена/леса: два экспорта, колонка domain.
  • Контейнеры на одном Linux: инвентарь хоста плюс отдельный лист сервисов, не 50 строк на каждый контейнер в том же формате, что DC.
  • Облако: выгрузка инстансов API в тот же CMDB, не «потом».

Профилактика

  • Создание VM только с именем из стандарта (ROLE-NN) и строкой CMDB до включения в прод.
  • Еженедельный diff AD vs гипервизор (скрипт в журнал работ).
  • Паспорт на каждый прод-узел.
  • Квартальный аудит прав не заменяет инвентарь узлов, но ловит hop-серверы.

FAQ

Нужен ли GLPI/Snipe-IT сразу?

Нет. Лист CMDB с дисциплиной лучше пустой «системы учёта». Инструмент — когда таблица стабильно живёт квартал.

Что делать с рабочими станциями?

Отдельный лист Workstations или фильтр. Эта статья — про серверы и инфраструктурные узлы, не про каждый ноутбук.

Как быть с кластером SQL?

Строки узлов + строка сервиса sql-contoso с VIP. Иначе backup и мониторинг привяжут не туда.

nmap видит больше, чем AD. Это всегда плохо?

Часто норма: NAS, UPS-карточки, камеры. Плохо, если это Windows Server без учёта.

Можно ли доверять LastLogonDate как «сервер жив»?

Нет. Сервер может не логиниться в AD неделями и при этом отдавать SMB. Смотрите ping/порт/гипервизор.

Кто утверждает роль узла?

Владелец сервиса. Если владельца нет — сначала назначить owner, иначе инвентарь снова превратится в догадки.