Мониторинг 1С:Предприятие 8.3 с помощью Zabbix

Поступила просьба от 1С разработчиков организовать мониторинг  сервера 1С:Предприятие 8.3 с помощью Zabbix 5.0. В частности необходимо мониторить как общие показатели системы (CPU, RAM, HDD, Службы) так и параметры относящиеся непосредственно к серверу 1С — кол-во текущих сеансов, кол-во сеансов по типам подключения, блокировки СУБД.

С мониторингом общих показателей системы прекрасно справляется zabbix-agent и штатный шаблон, а вот со вторым уже нужно прибегать к функциям cервера администрирования кластера серверов 1С, который состоит из двух утилит: непосредственно самого сервера — программы ras.exe и  утилиты командной строки rac.exe, которая обращаясь к запущенному прежде серверу ras позволяет выполнять различные операции с кластером серверов 1С:Предприятия.

Перечитав кучу различных мануалов как мониторить кластер 1С я пришел к выводу что надо писать свое..

Как итог было написано две утилиты. Первая утилита запускает ras.exe как службу Windows, а вторая это утилита которая работает с rac.exe, выполняет запросы, обрабатывает и выдает результат, который в последующем может обрабатывать zabbix-agent и передавать на сервер Zabbix.

 

Итак скачиваем первую утилиту helper_ras_1c.exe и помещаем ее в какой-нибудь отдельный каталог (прим. C:\1c_ras).

Скачать “1C:Enterprise Monitoring (helper_1c_ras)” helper_1c_ras-1.exe – Загружено 1055 раз – 2 MB

Теперь в каталоге размещения утилиты helper_ras_1c.exe создаем текстовый файл — cfg.conf со следующим содержанием:

[Parameters]
rasPath=C:\Program Files\1cv8\8.3.17.2306\bin
rasPort=1545
agentName=localhost
ctrlPort=1540
ИНФОРМАЦИЯ: обращаю внимание что в параметре rasPath нужно указывать путь с учетом какая версия 1С у вас установлена. Остальные параметры оставляем без изменения!

Теперь нужно установить службу.. (да да, можно было бы и написать еще утилиту которая будет устанавливать по одному клику, но мы же не ищем легкий путей).

Запускаем командную строку Windows (cmd.exe), переходим в каталог размещения скачанной утилиты и выполняем команду:

helper_ras_1c.exe /install

После этого в диспетчере служб Windows появится новая служба — 1C:Enterprise 8.3 Remote Server. Запускаем ее.

ИНФОРМАЦИЯ: хочу обратить внимание что при обновление платформы, важно не забыть сделать изменения в параметре rasPath в файле cfg.conf на актуальный путь к платформе. После сделанных изменений не забываем перезапустить службу 1C:Enterprise 8.3 Remote Server!

 

Со службой разобрались, она будет работать в автономном режиме. Теперь скачиваем утилиту raccmd.exe и помещаем ее в каталог нахождения helper_ras_1c.exe (но это не принципиально, а чисто для удобства).

Скачать “1C:Enterprise Monitoring (1c_rac_console)” raccmd.exe – Загружено 402 раза – 1 MB

Ниже приведен справочник по ключам запуска утилиты raccmd.exe по которым получаются те или иные значения от cервера администрирования кластера серверов 1С (ras.exe). Для интереса можно через командную строку Windows запустить утилиту raccmd.exe с каким либо ключом и посмотреть результат выполнения.

-total — Общее кол-во сеансов
-ds          — Designer
-bj           — BackgroundJob
-tn           — 1CV8C (Thin)
-tk           — 1CV8 (Thick)
-wb         — WebClient
-ccn        — COMConnection
-ws          — WSConnection
-cce         — COMConsole
-tntk       — 1CV8C & 1CV8 (Thin & Thick)
-hb          — Hibernate
-bdbms — Блокировка СУБД
-bls         — Блокировка
-tlist       — T-E-R-M-I-N-A-T-I-O-N hibernate session

 

Теперь для того чтобы Zabbix мог запрашивать данные через zabbix-agent создадим файл 1c_info.conf (имя может быть произвольное) в каталоге установке Zabbix — zabbix_agentd.conf.d, со следующим содержанием:

UserParameter=1c.sessions.total,C:\1c_ras\raccmd.exe -total
UserParameter=1c.sessions.bj,C:\1c_ras\raccmd.exe -bj
UserParameter=1c.sessions.ds,C:\1c_ras\raccmd.exe -ds
UserParameter=1c.sessions.tn,C:\1c_ras\raccmd.exe -tn
UserParameter=1c.sessions.tk,C:\1c_ras\raccmd.exe -tk
UserParameter=1c.sessions.wb,C:\1c_ras\raccmd.exe -wb
UserParameter=1c.sessions.ccn,C:\1c_ras\raccmd.exe -ccn
UserParameter=1c.sessions.ws,C:\1c_ras\raccmd.exe -ws
UserParameter=1c.sessions.cce,C:\1c_ras\raccmd.exe -cce
UserParameter=1c.sessions.tntk,C:\1c_ras\raccmd.exe -tntk
UserParameter=1c.sessions.hb,C:\1c_ras\raccmd.exe -hb
UserParameter=1c.sessions.bdbms,C:\1c_ras\raccmd.exe -bdbms
UserParameter=1c.sessions.bls,C:\1c_ras\raccmd.exe -bls

Так же в в файле конфигурации zabbix_agentd.conf приводим параметры к виду (вместо 10.0.0.2 указываем свой):

Server=10.0.0.2,127.0.0.1
ServerActive=10.0.0.2,127.0.0.1
Timeout=10

 

Ну и подходим к кульминации процесса, скачиваем шаблон для Zabbix сервера и импортируем его (надеюсь с этим проблем не возникнет).

Скачать “1C:Enterprise Monitoring (ZABBIX Template)” Template_App_1C_Enterprise.yaml – Загружено 413 раз – 5 KB

 

Далее все по стандарту, создаем узел сети, добавляем параметр обнаружения Агент и указываем IP-адрес машины и указываем импортированный шаблон:

Как результат можно наблюдать получаемые параметры:

 

В дополнение в утилиту raccmd.exe была добавлена функция корректного завершения спящих сеансов. Для этого нужно запустить в командной строке Windows raccmd.exe  -tlist. В процессе будут определены ВСЕ спящие сеансы по ВСЕМ имеющимся на сервере кластерах и завершены.

Да, знаю что есть штатная система в самой 1С, но у нас она почему то не отрабатывает и спящие сеансы копятся большим кол-вом.. anyway я создал в планировщике Windows задание которое раз в сутки завершает все спящие сеансы.

 

Резюмирую по проделанной работе, да пока что наверное скудный набор параметром подвержен обработке, но задача была на текущей момент мониторить именно эти параметры. Так же в шаблоне нет никаких тригеров и тд., но это пока что тоже не нужно в моем случае.

Есть мысли по расширению области мониторинга, такой как считать уникальных сессий (т.е. одинаковые пользователи, одинаковые IP адреса), так же хочу понимать сколько рабочих процессов задействовано и сколько они жрут памяти..

Быть может у кого то из вас будут пожелания по развитию, с радостью выслушаю и постараюсь взять в работу. Надеюсь кому то облегчил жизнь своим трудом.

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

28 комментариев к “Мониторинг 1С:Предприятие 8.3 с помощью Zabbix”

  1. helper_ras_1c.exe \install — нужно «/» — тогда произойдет установка службы.
    raccmd со всеми ключами получает в ответ нули.
    проверил через штатную утилиту rac — всё норм, ras функционирует, на запросы дает ответы.
    куда копать уже не пойму, подсобите пожалуйста

    Ответить
    • Спасибо за указание замечания — поправил.
      По raccmd честное слово не могу понять почему у вас и не только пустые ответы.. не могу пока что с эмулировать у себя, т.к. возвращаются значения нормально..

      Ответить
      • Всё заработало.
        Консоль необходимо было стартовать от имени администратора.
        Вопрос, как отрабатывает утилита raccmd с ключом -tlist. Можете поделиться ?
        Также есть такой момент. При регистрации службы RAS была поломана переменная path, а именно %SystemRoot%, перестали отрабатывать команды из system32. Пересоздание значений переменной исправляет проблему.

        Ответить
        • По поводу ключа -tlist. Отрабатывает он следующим образом — ищуются все сеансы со статусом «Hibernate» и завершаются. Это делалось по просьбе наших 1С-ников, т.к. почему то штатными средствами сеансы с гибернацией по таймауту не завершались и продолжали висеть и занимать лицензию.

          Ответить
  2. «helper_ras_1c.exe» не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.

    Ответить
  3. Здравствуйте наблюдаю такую ошибку:
    1000:20221230:112916.743 failed to accept an incoming connection: from 87.252.252.202: unspecified certificate verification error: TLS handshake set result code to 5:

    Ответить
    • Как уже писал в комментариях что странно и не удается у себя с эмулировать, но в планах есть пересмотреть код, переработать.

      Ответить
  4. Добрый день!
    1C:Enterprise 8.3 Remote Server — так же получил такую службу, на сервере уже была установлена служба 1C:Enterprise RAS. может из за этого. raccmd так же выдавал все нули.
    Я изменил название службы на 1C:Enterprise 8.3 Remote Server и всё заработало.
    В реестре HKLM-SYSTEM-CurrentControlSet-services

    Ответить
  5. Добрый день. Файлы архивов не доступны по ссылкам. Подскажите как их можно получить ?

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

    Ответить
    • Ну, хотелось бы, чтобы в заббиксе в элементах данных можно было мониторить:
      количество баз 1С в каждый момент времени;
      период простоя по каждой базе, т.е. время, когда отсутствовали сеансы пользователей в ней;
      общее количество используемых в данный момент клиентских лицензий на сервере.

      Кстати у меня, как и у остальных, в ответах везде нули.
      На сервере уже была служба 1C:Enterprise RAS, в отключенном состоянии. Удалил ее, переустановил helper_1c_ras.exe — не помогло.
      Правда у меня для доступа к кластеру используется логин/пароль, ввел их в качестве ключей к службе через реестр — obj=%user% password=%pass%, и все равно нули.

      Ответить
    • А это не подходит ? Я просто совместимость с 5.2 не проверял, но мне кажется долнжо подхватить.

      Ответить
  7. Здравствуйте, утилиты raccmd.exe с ключами выдает 0 (cmd запускаю от имени администратора), я думаю причина в том, что служба 1C:Enterprise 8.3 Remote Server добавилась, но не запускается, даже с учетной записи администратора.
    Подскажите, в чем может быть причина? (Служба на «Локальный компьютер» была запущена и затем остановлена. Некоторые службы автоматически останавливаются, если они не используются другими службами или программами)

    Ответить

Оставьте комментарий

8 − три =