Как мониторить доступность информационной базы 1С, если службы работают штатно?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В практике администрирования серверов 1С часто возникает ситуация, когда системные службы ragent, rmngr, rphost и сервер СУБД запущены и потребляют стандартный объем ресурсов, но пользователи не могут зайти в конкретную базу. Причиной могут быть монопольные блокировки метаданных, зависания сеансов, исчерпание лицензий или установленная блокировка начала сеансов. Разберем основные подходы к организации надежного мониторинга доступности баз.

Подключение через V83.COMConnector и обработка исключений

Один из классических способов проверить возможность авторизации — попытка создания подключения через внешний COM-коннектор. Выясним, как правильно реализовать данный механизм, чтобы не тратить лишние ресурсы.

Посмотрим на пример базового скрипта проверки:


Попытка
    V8 = Новый COMОбъект("V83.COMConnector");
    СтрокаПодключения = "Srvr=""Server1C"";Ref=""Trade"";Usr=""MonitorUser"";Pwd=""SecretPass"";";
    Соединение = V8.Connect(СтрокаПодключения);
    // Выполняем тестовый минимальный запрос к данным
    Запрос = Соединение.NewObject("Запрос");
    Запрос.Текст = "ВЫБРАТЬ 1 КАК Тест";
    Выборка = Запрос.Выполнить().Выбрать();
    Соединение = Неопределено;
Исключение
    ОписаниеОшибки = ОписаниеОшибки();
    // Обрабатываем ошибку и отправляем алерт
КонецПопытки;

Проанализируем тонкости использования этого метода:

  1. Анализ текста ошибки: если при подключении возвращается ошибка неверного пароля или отсутствия прав у пользователя, это означает, что база фактически доступна и сервер отвечает. Тревогу необходимо поднимать только при ошибках блокировок, таймаутов соединения или падения рабочих процессов.
  2. Расход лицензий: каждое успешное подключение через V83.COMConnector занимает клиентскую лицензию на время своей работы.
  3. Системные ограничения: COM-технология работает только в среде ОС Windows и требует точного совпадения разрядности библиотек и вызывающего процесса. При постоянных циклических вызовах в одном процессе возможны утечки памяти, поэтому COM-объект желательно регулярно переинициализировать.
  4. Контроль повторов: не отправляйте оповещения при единичном сбое. Настройте генерацию инцидента только при фиксации нескольких неудачных попыток подряд (например, от трех проверок).

Использование легковесного HTTP-сервиса (Healthcheck)

Подъем полноценного клиента или COM-интерфейса при проверке десятков баз создает существенную нагрузку на сервер. Более производительный и современный подход — публикация базы на веб-сервере с отдельным сервисом проверки состояния.

Разберем по шагам реализацию проверки через HTTP-сервис:

  1. Создаем в конфигурации простой HTTP-сервис (например, с шаблоном URL /health).
  2. В методе обработки HTTP-запроса GET выполняем чтение одной константы или простой запрос к базе данных, чтобы убедиться в отзывчивости СУБД.
  3. Возвращаем код состояния 200 OK при успешном выполнении и 500 Internal Server Error в случае ошибки.
  4. Внешняя система мониторинга (например, Zabbix) регулярно отправляет легкий веб-запрос с коротким таймаутом (5-10 секунд).

Если разработка собственного сервиса невозможна, можно задействовать стандартный интерфейс OData, опубликовав базу и выполняя периодический опрос адреса /odata/standard.odata/$metadata или таблицы с лимитом $top=1.

Опрос параметров кластера через RAS и утилиту RAC

Чтобы исключить зависимость от прав пользователей и расход клиентских лицензий, рассмотрим опрос состояния кластера через сервис администрирования ras и консольную утилиту rac. Данный метод является кроссплатформенным и одинаково эффективно работает как на Windows, так и на Linux.

Разберем последовательность действий при мониторинге через консоль:

  1. Запускаем службу ras для целевого кластера 1С.
  2. Скриптом мониторинга вызываем команду получения свойств информационной базы: rac infobase --ib=<ИдентификаторБазы> info.
  3. Анализируем статус параметров sessions-denied (блокировка сеансов включена) и scheduled-jobs-denied (блокировка регламентных заданий).
  4. Если выполнение команды к кластеру завершается по общему таймауту, делаем вывод о зависании процессов кластера или перегрузке базы блокировками.

Обратный мониторинг («сигнал жизни») через регламентные задания

Рассмотрим вариант архитектуры мониторинга, когда не сервер мониторинга опрашивает базы, а сами информационные базы отправляют отчет о своем состоянии наружу. Для этого в базу добавляется регламентное задание, выполняющееся каждые 2–5 минут.

Задание обращается к внешнему веб-сервису или передает метрику в систему мониторинга (например, через утилиту zabbix_sender). Если внешний сервис не получает подтверждение активности («heartbeat») в течение заданного окна времени, генерируется алерт о недоступности базы.

Важное ограничение: учитывайте, что при установке флага «Блокировка регламентных заданий» (например, во время регламентных процедур) фоновые задачи перестают запускаться. В этом случае мониторинг выдаст ложное срабатывание, даже если интерактивный вход в базу для пользователей остается доступным.

Использование специализированных инструментов (1С:КИП)

Для комплексного мониторинга крупных инфраструктур с десятками баз оптимально использовать инструмент «1С:Центр контроля производительности» из состава «1С:Корпоративный инструментальный пакет» (1С:КИП). Он позволяет из единого центра отслеживать не только доступность базы, но и расход оперативной памяти процессами rphost, количество активных сеансов, взаимные блокировки в СУБД и счетчики производительности без необходимости ручной поддержки скриптов.

← На главную