Как организовать автоматический мониторинг и инвентаризацию большого количества баз 1С?

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

Когда в распоряжении системного администратора или программиста находится более 80 информационных баз, ручной учет их параметров превращается в трудоемкую и неэффективную задачу. Возникает необходимость автоматизированного сбора данных о наименовании баз, занимаемом объеме памяти и версиях конфигураций. В рамках этой статьи мы рассмотрим основные методы решения этой задачи: от использования штатных инструментов платформы до написания собственных скриптов и прямых запросов к серверу баз данных.

Метод 1. Использование утилиты RAC и сервиса RAS

Для начала проанализируем стандартные возможности платформы «1С:Предприятие». Наиболее корректным способом программного получения списка всех информационных баз, зарегистрированных в кластере, является использование сервера администрирования RAS (Remote Administration Service) и консольной утилиты RAC (Remote Administration Client).

Разберем, как это работает по шагам:

  1. На сервере 1С должен быть запущен процесс ras.exe. Обычно он работает на порту 1545.
  2. С помощью команды rac infobase summary list мы можем получить список всех баз кластера.
  3. Для автоматизации сбора данных можно использовать скрипты на языке Python или PowerShell, которые будут вызывать rac, парсить вывод и сохранять его в таблицу.

Этот метод позволяет получить идентификаторы баз, их описания и настройки, не заходя в саму «1С» и не создавая лишних сеансов пользователей.

Метод 2. Прямые запросы к MS SQL Server для получения объема баз

Для решения задачи по определению объема памяти, занимаемого базами, посмотрим на возможности SQL-сервера. Выполнять эту задачу средствами самой «1С» не всегда эффективно, так как размер базы данных на диске проще получить через системные представления SQL.

Рассмотрим пример SQL-запроса, который соберет информацию о размере всех баз данных на сервере:


SELECT 
    d.name AS [Database Name],
    CAST(SUM(f.size) * 8 / 1024.0 AS DECIMAL(10,2)) AS [Size MB]
FROM sys.databases d
JOIN sys.master_files f ON d.database_id = f.database_id
GROUP BY d.name;

Проанализируем этот код: мы обращаемся к системному представлению sys.master_files, суммируем размер всех файлов (данных и логов транзакций) и переводим их из страниц в мегабайты. Полученную таблицу можно легко экспортировать в Excel или использовать как источник данных для централизованной базы мониторинга.

Метод 3. Получение версии конфигурации через HTTP-сервисы

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

Одним из наиболее стабильных и современных способов является создание в каждой базе небольшого расширения с HTTP-сервисом. Разберем алгоритм реализации:

  1. Создаем расширение, в котором описываем HTTP-сервис, например, Monitoring.
  2. В модуле сервиса пишем функцию, которая возвращает версию конфигурации:
    
    Функция ВерсияКонфигурации(Запрос)
        Ответ = Новый HTTPСервисОтвет(200);
        Ответ.УстановитьТелоИзСтроки(Метаданные.Версия);
        Возврат Ответ;
    КонецФункции
    
  3. Создаем центральную базу («Оркестратор»), которая по расписанию делает HTTP-запросы ко всем базам из списка и обновляет данные в своей таблице.

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

Метод 4. Профессиональные инструменты: 1С:Центр контроля качества

Если количество баз исчисляется сотнями, рекомендуется обратить внимание на готовые решения от фирмы «1С». В состав продукта «1С:Корпоративный инструментальный пакет» (КИП) входит 1С:Центр контроля качества.

Это мощный инструмент, который в автоматическом режиме собирает:

Такой подход избавляет от необходимости писать собственные скрипты, предоставляя готовый интерфейс для мониторинга всей ИТ-инфраструктуры.

Метод 5. Прямое чтение версии из таблиц SQL (нестандартный подход)

Существует также способ получения версии конфигурации без запуска «1С». Рассмотрим подробнее структуру таблицы Config. Информация о версии часто содержится в строке с именем version или в метаданных корневого объекта конфигурации.

Однако данные там сжаты алгоритмом deflate. Опытные администраторы используют скрипты на C# или PowerShell, которые:

  1. Извлекают бинарные данные из поля BinaryData таблицы Config.
  2. Распаковывают их «на лету».
  3. Находят текстовое поле с номером версии.

Этот метод чрезвычайно быстр, так как позволяет опросить 80 баз за несколько секунд, но он требует глубоких технических знаний и понимания структуры хранения данных «1С» на уровне СУБД.

Заключение и рекомендации

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

Для постоянного мониторинга идеальным вариантом будет создание собственной базы-диспетчера, которая будет опрашивать целевые информационные базы через HTTP-сервисы или использовать REST API платформы (доступно в новых версиях 8.3.24+). Это позволит не только видеть текущие версии и объемы, но и контролировать наличие бэкапов, даты последних обновлений и даже переводить неиспользуемые базы в спящий режим.

← На главную