Автоматическая инвентаризация без словарей — это CMDB, которому никто не доверяет. Каждый агент сообщает «Dell Inc.», «DELL» и «Dell Technologies» как разных производителей, и руководитель открывает отчёт по парку с тремя строками для одного и того же. Словари GLPI решают это на входе данных — но по-настоящему работают, только если вы заранее оцените «мусор», поймёте, что отклонение деструктивно, и запустите повторное применение, не уронив сервер. Это руководство описывает путь, которым мы идём при сопровождении парков GLPI клиентов.
Почему инвентаризация приходит «грязной»
Когда GLPI Agent собирает данные с сотен компьютеров, один и тот же реальный объект появляется в нескольких написаниях, потому что каждый поставщик записывает строку по-своему в BIOS, реестре Windows или пакете. Классические случаи:
- Производители: «Dell Inc.», «Dell», «DELL», «Dell Technologies» превращаются в четыре записи.
- Модели: «Latitude 5520», «LATITUDE 5520» и «Dell Latitude 5520» не группируются.
- ПО: сотни KB и «Update for Windows» заглушают программы, которыми вам действительно нужно управлять.
- Операционная система: «Windows 10 Pro», «Microsoft Windows 10 Professional» и «Win10Pro» дробят любой подсчёт лицензий.
Практический эффект: дашборды с завышенными итогами, бесполезный отчёт о соответствии ПО и решения о закупках на основе неверных цифр. Стандартизация — это не эстетика, а то, что делает CMDB надёжной.
Оцените «мусор», прежде чем писать первое правило
Ошибка новичков — создавать правила вслепую. Сначала измерьте. Читающий SQL-запрос прямо к базе показывает масштаб проблемы и помогает расставить приоритеты. Запускайте на реплике или вне часов пик:
-- Fabricantes com grafias divergentes do mesmo grupo
SELECT id, name
FROM glpi_manufacturers
WHERE name LIKE 'Dell%' OR name LIKE '%DELL%'
ORDER BY name;
-- Volume de "poluicao" no catalogo de software (KBs e updates)
SELECT COUNT(*) AS softwares_lixo
FROM glpi_softwares
WHERE name LIKE 'KB%'
OR name LIKE 'Update for%'
OR name LIKE 'Security Update for%';
-- Top 20 nomes de software mais repetidos (candidatos a regra)
SELECT name, COUNT(*) AS ocorrencias
FROM glpi_softwares
GROUP BY name
ORDER BY ocorrencias DESC
LIMIT 20;
С этими цифрами вы знаете, где правило даст наибольшую отдачу. В большинстве парков основная часть «мусора» приходится на производителей и ПО.
Типы словарей и когда использовать каждое действие
В Администрирование > Словари есть словари для ПО, производителей, моделей (компьютер, монитор, принтер, телефон, сеть), типов и операционных систем. Разница между ними — в действии, которое вы выбираете. Эта матрица резюмирует решение:
| Ситуация в инвентаризации | Словарь | Рекомендуемое действие | Обратимо? | Подвох |
|---|---|---|---|---|
| Производитель в нескольких написаниях | Производитель | Присвоить фиксированное имя | Да | Слияние может оставить осиротевшую запись в выпадающем списке |
| Модель с префиксом производителя | Модели | Regex + присвоить захваченную группу | Да | Требует критерия «регулярное выражение», а не «содержит» |
| KB и обновления засоряют каталог | ПО | Игнорировать импорт | Частично | Повторное применение УДАЛЯЕТ уже импортированное ПО |
| Раздробленные версии ОС | Операционная система | Присвоить ОС / редакцию | Да | Название ОС и редакция — разные поля |
| Несколько программ, которые являются одним продуктом | ПО | Присвоить имя + производителя | Да | Группирует версии; проверьте перед слиянием |
Нормализация производителей и моделей (пошагово)
- В словаре Производитель создайте правило: критерий Имя — содержит —
Dell; действие Присвоить Имя =Dell. Это сворачивает все написания в одну запись. - Для моделей, содержащих префикс производителя, «содержит» недостаточно — используйте regex. Отметьте критерий как регулярное выражение и захватите только полезную часть.
# Dicionario de Modelos de computador
# Criterio -> Nome | expressao regular corresponde:
/^(?:Dell\s+)?(Latitude\s+\d+)/i
# Acao -> Nome | Atribuir valor da expressao regular:
#1
# Resultado:
# "Dell Latitude 5520" -> "Latitude 5520"
# "LATITUDE 5520" -> "Latitude 5520"
# "Latitude 5520" -> "Latitude 5520"
#1 — первая захваченная группа; #0 — вся строка. На этой детали спотыкаются многие: действие «присвоить значение регулярного выражения» работает, только если критерий отмечен как регулярное выражение. С «содержит» #1 становится буквальным текстом.
Отклонение KB без перегрузки инвентаризации
Чтобы убрать обновления из каталога, создайте в словаре ПО правило с действием Игнорировать импорт:
- Критерий: Имя — начинается с —
KB— действие Игнорировать импорт. - Критерий: Имя — содержит —
Update for Windows— действие Игнорировать импорт.
С этого момента новые импорты пропускают эти элементы. Деталь, которую почти никто не предвидит: при повторном применении этого правила GLPI удаляет уже импортированное ПО, соответствующее критерию. Это правильное действие для очистки, но оно деструктивно — поэтому его всегда сначала проверяют в тестовой среде.
Повторное применение: правила к существующим данным
Правило словаря срабатывает только на входе. Для данных, которые уже есть в базе, используйте кнопку Повторно применить правила словаря внутри каждого словаря. Две эксплуатационные предосторожности, которые мы усвоили на собственном опыте:
- Разбивайте по производителям. При повторном применении словаря ПО GLPI позволяет выбрать производителя. Запуск всего сразу на большом каталоге превышает
max_execution_timePHP и возвращает ошибку 500. Запускайте партиями. - Окно низкой нагрузки. Повторное применение заново обрабатывает тысячи строк; планируйте его вне рабочего времени.
После повторного применения убедитесь, что консолидация сработала, простым подсчётом:
-- Deve sobrar 1 registro "Dell" (e nao 4)
SELECT id, name FROM glpi_manufacturers
WHERE name LIKE '%Dell%';
-- Softwares KB devem tender a zero apos o replay com "Ignorar importacao"
SELECT COUNT(*) AS kb_restantes
FROM glpi_softwares
WHERE name LIKE 'KB%';
Типичная ошибка при сопровождении клиентов
В парке клиента примерно из 3 тысяч активов словарь ПО, отклоняющий KB и обновления, сократил каталог с десятков тысяч «программ» до нескольких тысяч реальных элементов — отчёт о соответствии наконец стал читаемым. Но мы запустили повторное применение с «игнорировать импорт» прямо в продуктиве, и клиент потерял информацию о том, на каких компьютерах был каждый KB, потому что отклонение удаляет запись, а не просто скрывает её. Решение, которое с тех пор действует во всех средах: повторное применение словаря начинается в тестовой среде, отклонение считается деструктивной операцией, а за слиянием производителей всегда следует очистка осиротевших значений в выпадающем списке, которые GLPI сам не удаляет. Такие детали проявляются только после работы с настоящим парком.
Практики, которые избавляют от переделок
- Начинайте с производителей и ПО — на них приходится большая часть «мусора», и отдача быстрая.
- Порядок правил важен: ставьте более конкретные перед общими.
- Всегда тестируйте в тестовой среде и проверяйте повторное применение SQL-подсчётом до и после.
- Пересматривайте словари после каждой крупной волны инвентаризации (новая партия компьютеров, поглощение, смена поставщика).
- Документируйте каждое правило: словарь без истории «почему» превращается в чёрный ящик при следующем сопровождении.
Стандартизация инвентаризации — основа для надёжных показателей и жизненного цикла активов. Если ваш парк уже разросся, а CMDB превратилась в клубок дубликатов, NexTool выполняет такую санацию в рамках сопровождения: оценка «мусора», правила словарей, проверенные в тестовой среде, и контролируемое повторное применение без падения вашего GLPI.
Проверено командой NexTool Solutions.