Центр общих услуг (ЦОУ) на GLPI

Как превратить GLPI в центр общих услуг для HR, юридического отдела, административно-хозяйственной службы и финансов: выбор между организацией и категорией, SLA по направлениям, внешний cron и типичная ошибка видимости.

В этой статьеРазделов: 6

GLPI не обязан ограничиваться ИТ. С продуманными организациями, категориями и бизнес-правилами один и тот же экземпляр обслуживает HR, юридический отдел, административно-хозяйственную службу и финансы как центр общих услуг (ЦОУ). Работающий ЦОУ от груды заявок отличает архитектурное решение, принятое до создания первой формы.

Архитектурное решение: организация на направление или категория на направление?

Это первый выбор, и его дороже всего отменить. В GLPI организация — это граница мультиарендности: она изолирует данные, SLA, профили и каталог. Категория ITIL — лишь метка классификации внутри организации. Отдельная организация на направление даёт сильную изоляцию, но требует администрирования; категории сохраняют простоту, но для маршрутизации и защиты данных зависят от групп и правил.

КритерийОрганизация на направлениеКатегория на направление
Изоляция данныхСильная (нерекурсивный профиль не видит соседние направления)Слабая (зависит от группы и правила)
Независимый SLA для направленияВстроенноВручную, через правило + SLA по категории
Сводный отчётТребует рекурсивного профиля или корневой организацииТривиально (одна организация)
Трудозатраты на администрированиеВысокие (профили, права, cron)Низкие
Подходит дляHR и юридического отдела (конфиденциальные данные)АХС и финансов (низкая конфиденциальность)

Практическое правило: используйте организации, когда есть реальное требование конфиденциальности (HR и юридический отдел обычно этого требуют) или сильно различающиеся SLA и профили. Используйте категории, когда направления делят один пул сотрудников поддержки и конфиденциальность низкая. Часто встречается гибридная схема: отдельная организация для HR и юридического отдела, а АХС и финансы — категориями внутри корпоративной организации.

Пошагово для первого подразделения за пределами ИТ

  1. Смоделируйте границу: решите, организация или категория, по матрице выше, прежде чем что-либо создавать.
  2. Создайте организацию (Администрирование > Организации) или дерево категорий (Настройки > Категории заявок), всегда отмечая рекурсивную видимость, если структура общая.
  3. Создайте группу сотрудников поддержки для каждого направления (Администрирование > Группы) и отметьте «Может быть назначена на заявки».
  4. Определите SLA/OLA направления (Настройки > Уровни обслуживания) с реалистичными сроками реакции и решения.
  5. Настройте бизнес-правила (Правила > Правила для заявок), чтобы автоматически назначать группу, категорию и SLA в зависимости от источника заявки.
  6. Соберите каталог: встроенные формы (GLPI 11) или плагин Formcreator (GLPI 10) с полями направления.
  7. Настройте профили и права: сотрудник поддержки HR не должен видеть очередь ИТ, и наоборот.
  8. Включите внешний cron (следующий раздел), прежде чем объявлять о запуске услуги.

Диагностика: кто на самом деле пользуется центром

До и после расширения проводите измерения. Запрос ниже читает данные прямо из базы и показывает объём и время до решения по организациям и категориям за последние 30 дней. Выполняйте его на реплике или вне часов пиковой нагрузки.

-- Volume and time to solution per entity/category (30 days)
SELECT e.completename                                   AS entity,
       IFNULL(c.completename, '(no category)')          AS category,
       COUNT(t.id)                                      AS tickets,
       ROUND(AVG(TIMESTAMPDIFF(HOUR, t.date, t.solvedate)), 1) AS hours_to_solve
FROM glpi_tickets t
JOIN glpi_entities e            ON e.id = t.entities_id
LEFT JOIN glpi_itilcategories c ON c.id = t.itilcategories_id
WHERE t.date >= NOW() - INTERVAL 30 DAY
  AND t.is_deleted = 0
GROUP BY e.completename, c.completename
ORDER BY tickets DESC;

Если появляется много строк «(no category)», это признак неполного каталога или сотрудников поддержки, создающих заявки без классификации, — первый симптом ЦОУ, который вот-вот потеряет прослеживаемость.

Внешний cron: почему SLA HR не срабатывает вовремя

При сопровождении сред с несколькими направлениями чаще всего молча ломается организация без внешнего cron. ИТ с высоким трафиком запускает внутренний cron при каждой загрузке страницы, и никто не замечает проблемы. А организация юридического отдела, с небольшим числом посещений в день, накапливает эскалации SLA, которые выполняются только когда кто-то открывает интерфейс. Обращение, которое приходит к нам, обычно звучит так: «письма о сроках юридического отдела приходят все разом около 9 утра» — именно тогда, когда входит первый пользователь и внутренний cron наконец обрабатывает накопившуюся очередь. Исправление всегда одно: перенести выполнение в cron операционной системы (MODE_EXTERNAL) и снизить зависимость от срабатывания при загрузке страницы.

# /etc/cron.d/glpi - GLPI external cron (runs as the web server user)
# Fires notifications, SLA escalation and automatic closing.
* * * * * www-data /usr/bin/php /var/www/glpi/front/cron.php &>/dev/null

После планирования откройте «Настройки > Автоматические действия» и убедитесь, что критичные задачи (отправка уведомлений, эскалация SLA и закрытие заявок) работают в режиме CLI, а не «GLPI» (выполнение при открытии страницы). В среде с несколькими направлениями внутренний режим — причина номер 1 ситуации «срок истёк, но никого не предупредили».

Типичная ошибка: нерекурсивная категория и сломанная видимость

Ошибка, которая чаще всего встречается при сопровождении, неочевидна: категория, созданная в корневой организации без отметки видимости для дочерних организаций, просто не появляется в форме подразделения. Без нужной категории сотрудник поддержки создаёт заявку как общий «Инцидент» или вписывает классификацию в заголовок — и отчёт направления изначально получается дырявым. То же относится к профилям: сотрудник HR с нерекурсивной областью профиля видит только ту организацию, в которой находится, но не дочерние. Создавая категории в корне, отмечайте «Дочерние» (видимость в дочерних организациях), с entities_id = 0 и is_recursive = 1; создавая профили направлений, осознанно решайте, будет ли область рекурсивной.

Управление: избегайте разрастания категорий

  • Ограничьте дерево двумя уровнями на направление; больше — и никто не классифицирует правильно.
  • Называйте категории по действию заявителя («Запросить возмещение расходов»), а не на внутреннем жаргоне.
  • Ежеквартально пересматривайте строки «(no category)» в диагностике.
  • Один владелец на направление, отвечающий за каталог и SLA.
  • Не копируйте одну и ту же категорию вручную в нескольких организациях; сделайте её рекурсивной от корня.

Начните с ИТ, которые уже привыкли к службе поддержки (Service Desk), и расширяйтесь постепенно. Каждое новое направление подключается с определённой границей, группой поддержки, SLA и проверенным внешним cron, а не с импровизированным каталогом.

Нужно спроектировать границу между организациями и категориями, прежде чем масштабировать ваш ЦОУ? NexTool внедряет и сопровождает GLPI с несколькими направлениями для B2B-клиентов — от моделирования организаций до cron и правил маршрутизации.


Проверено командой NexTool Solutions.

Часто задаваемые вопросы

Зависит от конфиденциальности. Используйте организацию, когда есть реальное требование конфиденциальности (HR, юридический отдел) или сильно различающиеся SLA и профили, поскольку организация изолирует данные встроенно. Используйте категорию, когда направления делят одну команду поддержки и конфиденциальность низкая (АХС, финансы). Гибридные схемы распространены и рекомендуются.

При использовании организаций назначьте сотрудника в организацию направления с профилем нерекурсивной области, чтобы он не видел соседние организации. Внутри одной организации используйте группы поддержки и бизнес-правила, чтобы направлять каждую заявку только ответственной группе, ограничивая видимость по группе.

Почти всегда потому, что cron GLPI работает во внутреннем режиме (выполнение при открытии страницы). Направления с низким трафиком, такие как юридический отдел, копят очередь, пока кто-нибудь не зайдёт в интерфейс. Исправление — настроить внешний cron операционной системы, вызывающий front/cron.php, и перевести критичные автоматические действия в режим CLI.

Да. С организациями каждое направление определяет собственные уровни обслуживания встроенно. С категориями вы применяете SLA через бизнес-правило в зависимости от категории заявки. У АХС может быть 4 ч на «сломался кондиционер», а у юридического отдела — 5 рабочих дней на «проверку договора».

Через встроенный поиск GLPI с группировкой по организации или категории либо прямым SQL-запросом к glpi_tickets с JOIN на glpi_entities и glpi_itilcategories. Запрос также выявляет строки «(no category)», указывающие на неполный каталог или сотрудников, создающих заявки без классификации.

Нужна помощь?