Skip to content

Система обслуживания и мониторинга информационных баз 1С

License

Notifications You must be signed in to change notification settings

akpaevj/oneswiss

Repository files navigation

OneSwiss

Публикация на infostart
Группа в Telegram Telegram

Система обслуживания и мониторинга информационных баз 1С

Кроссплатформенный программный комплекс, состоящий из:

  • Сервер - управляющее приложение с веб-интерфейсом, необходимое для конфигурации действий, выполняемых агентом
  • Агент - приложение, непосредственно осуществляющее обслуживание и мониторинг сервера.

Система автоматически находит установленные экземпляры платформ 1С, запущенные агенты серверов, определяет адреса, порты, запущенные для агентов экземпляры RAS, подгружает на сервер и обновляет списки кластеров и информационных баз.
Если экземпляр RAS не найден в списке служб (демонов), то система автоматически запустит экземпляры RAS для обеспечения собственной работы.

image

Функциональные возможности:

Обслуживание информационных баз:

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

Блок-схема обслуживания ИБ имеет 2 возможных типа блоков:

  • Простой шаг
  • Шаг с обработкой исключения

Доступные типы шагов:

  • Блокировка соединений - блокировка соединений с ИБ
  • Закрытие соединений - закрытие соединений с ИБ
  • Разблокировка соединений - разблокировка соединений к ИБ
  • Загрузка расширения - загрузка расширения из CFE файла или из указанного хранилища конфигурации
  • Удаление расширения - удаление расширения из ИБ по имени (по регулярному выражению)
  • Обновление конфигурации - обновление ИБ файлом CFU
  • Загрузка конфигурации - загрузка конфигурации из CF файла или из указанного хранилища конфигурации
  • Запуск внешней обработки - выполнение запуска внешней обработки в пакетном режиме запуска клиента 1С (Execute)
  • Выполнение скрипта (OneScript) - запуск выполнения скрипта из ospx пакета

Задачи, в которых присутствует шаг с загрузкой в целевую ИБ конфигурации или расширения из хранилища, доступен к изменению флаг "Запускать задачу по шаблону при обнаружении новой версии в хранилище". При очередном обнаружении хранилищ и последних версий в них, система автоматически проверяет и находит шаблоны задач, где участвует хранилище, с установленным флагом и запускает задачи на их основе, с автоподстановкой версии из хранилища.
При этом, шаблон должен быть полностью подготовлен к запуску, т.е. в нем должны быть заполнены все обязательные реквизиты, необходимые для задачи.

_20250812_105302.mp4

Сервис регистрации ошибок:

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

{URL}/api/ErrorLoggingService

Пример:

http://localhost:7002/api/ErrorLoggingService
error_logging_service

Экспорт технологического журнала:

Автоматизация сбора и экспорта технологического журнала. Центральными понятиями системы являются:

  • Шаблоны сбора ТЖ - шаблоны файла logcfg.xml
  • Сеансы сбора - непосредственное описание режима сбора, подключенных к сеансу агентов и шаблонов сбора ТЖ.

Доступные режимы сбора ТЖ:

  • Запуск после создания - запуск сеанса сбора журнала сразу после создания элемента в веб панели. Необходимо указать длительность сбора данных в минутах.
  • Мониторинг - режим сбора, не имеющий временных границ сбора журнала. Предназначен для шаблонов постоянного мониторинга
  • Планирование - отложенный запуск сбора. Необходимо указать период начала и длительность в минутах

Режимы, имеющие временные границы будут автоматически завершены, ручных действий не требуется. Устаревшие каталоги сбора и файлы ТЖ так-же будут автоматически очищены системой.

Система поставляется с небольшим, предопределенным списком шаблонов сбора ТЖ

СУБД, доступные для экспорта:

  • ClickHouse
techlog

Экспорт журнала регистрации (используется новый режим работы ibcmd - eventlog):

Автоматизация сбора и экспорта журнала регистрации 1С. Настройка базы данных экспорта аналогична настройке базы данных для технологического журнала. Доступен отбор журналов информационных к экспорту по регулярному выражению имени информационной базы

СУБД, доступные для экспорта:

  • ClickHouse

Сервис синхронизации хранилищ конфигураций и Git

Позволяет осуществлять экспорт исходных кодов конфигураций и расширений из хранилищ в git репозиторий. Задачи экспорта позволяют конфигурировать выгрузку нескольких хранилищ в один репозиторий. Функции экспорта задействуют механизмы:

  • Пакетный режим конфигуратора - для доступа к информации о версиях в хранилище, обновление основной конфигурации версией из хранилища
  • ibcmd - выгрузка конфигурации в xml файлы

Для осуществления экспорта, необходимо:

  1. Сопоставить пользователей хранилища пользователям git
  2. Добавить токен для доступа к удаленному репозиторию в панели "Учетные данные и токены"
  3. Добавить удаленный репозиторий, заполнить обязательные реквизиты
  4. Сконфигурировать задачу синхронизации в панели "Репозитории Git"

Прокси сервер серверов хранилищ

Предоставляет возможность публикации хранилищ конфигураций, переопределения адресов и добавления обработчиков некоторых запросов от конфигуратора к хранилищу. OneSwiss заменяет собой публикацию серверов хранилищ на вебсерверах IIS и Apache, принимая запросы от клиентов по http протоколу и преобразуя запросы в tcp поток, переотправляет их целевому серверу хранилищ. Для включения проксирования хранилища конфигурации, необходимо сконфигурировать публикации хранилищ в панели настроек, указав хранилище и часть пути, по которому будет опубликовано хранилище. Конечный адрес публикации будет формироваться по правилу:

{АДРЕС_ONESWISS}/cr/{АДРЕС_ПУБЛИКАЦИИ}

Пример для публикации с адресом erp/extensions/myext:

http://localhost:7002/cr/erp/extensions/myext

Так-же прокси позволяет сконфигурировать пользовательские обработчики запросов на языке сценариев OneScript. Пользовательский обработчик - это .ospx пакет, загружаемый файлом в панели управления файлами OneSwiss. Обязательными атрибутами (для исполнения в среде OneSwiss) которого, являются:

  • Указание в packagedef пути к исполняемому файлу
  • Наличие одного из возможных обработчиков:

Для возможности переиспользования пользовательских обработчиков для разных хранилищ, добавлена возможность указания аргументов обработчиков для конкретных публикаций, представляющих из себя список пар Ключ/Значение и передающихся в скрипт через объект контекста обработчика, в свойстве ДополнительныеПараметры

Для обеспечения более удобного процесса, был реализован механизм отладки скриптов обработчиков. Для начала отладки необходимо:

  1. В панели управления обработчиками установить флаг Режим отладки, указать полный путь к исполняемому файлу opsx пакета и привязать обработчик к публикации
  2. Сконфигурировать attach отладки к серверу отладки OneScript, который поднимет OneSwiss на порту 2801. Пример launch файла VSCode:
{
    "version": "0.2.0",
    "configurations": [

        {
            "name": "Отладка 1Script",
            "type": "oscript",
            "request": "attach",
            "debugPort": 2801
        }
    ]
}
  1. Вызвать в конфигураторе желаемое событие, при этом конфигуратор "зафризится" в ожидании подключения клиента отладки (VSC)
  2. Перейди в VSC, установить точку останова в желаемом месте и нажать F5 для подключения отладчика

Обработчик помещения изменений в хранилище:

Процедура ОбработатьПомещениеИзменений(КонтекстОбработчика) Экспорт
КонецПроцедуры

Обработчик помещения изменений в хранилище:

Процедура ОбработатьИзменениеВерсии(КонтекстОбработчика) Экспорт
КонецПроцедуры

КонтекстОбработчика - объект интеграции, предоставляемый OneSwiss для работы с потоком запросов конфигуратора.
Актуальный список свойств можно посмотреть в классе контекста - RequestHandlerWrapper.cs
Контекст имеет 2 основных метода для взаимодействия с потоком запросов:

  • ПередатьЗапрос - передать запрос от конфигуратора к хранилищу
  • ВызватьИсключение - отправить ответ конфигуратору с текстом исключения, вместо передачи запроса серверу хранилищ

Уведомления:

Реализована система уведомлений о результатах выполнения задач обслуживания и поступивших отчетах об ошибках. Доступные каналы уведомлений:

  • Бот Telegram
  • WebHook

Некоторые детали реализации:

В комплексе реализовано автоматическое обнаружение необходимых для обеспечения собственной работы служб и приложений на хостах агентов:

  • Агентов серверов 1С (ragent)
  • Служб удаленного администрирования (RAS)
  • Установленных платформ 1С:Предприятие
  • Служб серверов хранилищ конфигураций

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

  • Кластеры 1С
  • Информационные базы
  • Хранилища конфигураций

Установка и использование:

Учетные данные администратора при первом входе - admin/admin

Сервер

Является центральным звеном программного комплекса, осуществляет управление работой агентов, установленных на серверах 1С.

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "Kestrel": {
    "EndpointDefaults": {
      "Protocols": "Http1AndHttp2"
    }
  },
  "Http": {
    "Host": "0.0.0.0",
    "Port": 7002
  },
  "Auth": {
    "RequireClientsAuthentication": "false",
    "Mode": "Internal",
    "OIDC": {
      "Authority": "https://my.company.com/realms/master",
      "ClientId": "oneswiss",
      "ClientSecret": "13214324543fdsfdsvdsv3213",
      "Scopes": [
        "profile",
        "oidc"
      ],
      "NameClaim": "preferred_username",
      "DisplayNameClaim": "name"
    }
  },
  "ProxyAddress": "10.10.0.1"
}

Где:

  • Http
    • Host - адрес веб-панели управления сервером
    • Port - порт
  • Auth
    • RequireClientsAuthentication - флаг необходимости выполнения аутентификации подключающихся агентов
    • Mode - Internal или Mixed. Только внутренняя или внутренняя + OIDC аутентификация
    • OIDC
      • Authority - адрес провайдера аутентификации
      • ClientId - идентификатор клиента аутентификации
      • ClientSecret - секрет клиента аутентификации
      • Scopes - список областей, получаемых клиентом
      • NameClaim - имя утверждения, значение которого будет использовано в качестве логина. По умолчанию - preferred_username
      • DisplayNameClaim - имя утверждения с отображаемым именем пользователя. По умолчанию - name
  • ProxyAddress - IP пограничного прокси сервера

Агент

Устанавливается непосредственно на сервера 1С.

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "InstanceName": "",
  "Server": "wss://oneswiss.company.domain",
  "Auth": {
    "Required": "true",
    "TokensEndpoint": "https://sso.company.domain/protocol/openid-connect/token",
    "ClientId": "oneswiss",
    "ClientSecret": "fdsnjfdifo54343r43jnd"
  },
  "TechLogFolder": "", 
  "GitSyncFolder" : "",
  "V8": {
    "PlatformPaths": [

    ]
  }
}

Где:

  • InstanceName - наименование агента, отображаемое в панели управления серверной части. Если не задано - то hostname
  • Server - адрес и порт, по которым агент будет стучаться к серверной части. Если сервер опубликован по https, то для доступа агентов необходимо использовать wss, а не ws
  • Auth
    • Required - флаг необходимости получения и использования jwt токена для аутентификации агента при подключении к серверу oneswiss
    • TokensEndpoint - адрес конечной точки издателя токенов аутентификации
    • ClientId - идентификатор клиента
    • ClientSecret - сервер клиента
  • PlatformPaths - дополнительные пути, если платформы установлены не в каталогах установки платформы 1С по умолчанию
  • TechLogFolder - служебный каталог сбора технологического журнала, используемый в работе подсистемы сеансов сбора ТЖ. Если не указан, то используется стандартный путь:
    • Windows - %PROGRAMDATA%/oneswiss/techlog
    • Linux - /var/log/oneswiss/techlog
  • GitSyncFolder - служебный каталог синхронизатора хранилищ и Git. Если не указан, то используется стандартный путь - {КАТАЛОГ_АГЕНТА}/repos

Работа за reverse proxy

Для обеспечения корректного перенаправления и использования схемы, на прокси-сервере необходимо устанавливать следующие заголовки:

  • X-MS-Proxy - адрес прокси сервера
  • X-Forwarded-For - адрес и порт удаленной точки подключения
  • X-Forwarded-Proto - испольуемая схема

Условный пример:

X-Ms-Proxy: 10.10.0.1
X-Forwarded-For: {remote_host}
X-Forwarded-Proto: https

Так-же в файле конфигурации сервера oneswiss обязательно требуется указание адреса пограничного прокси-сервера в параметре ProxyAddress

About

Система обслуживания и мониторинга информационных баз 1С

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages