Мониторинг 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.exe – Загружено 1 раз – 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 – Загружено 157 раз – 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 – Загружено 153 раза – 5 KB

 

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

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

 

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

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

 

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

 

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

 

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

 

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

БесполезноСлабоватоПриемлемоОтличноПревосходно (5 голос(ов), в среднем: 3,80 из 5)
Загрузка...

Всего комментариев: 10 Комментировать

  1. Максим /

    Здравствуйте! Спасибо за подробную инструкцию с утилитами.
    Подскажите пожалуйста, почему rac может не считывать данные по сеансам?
    У меня пустые значения, хотя сеансы запущены

    1. Жаконда / Автор записи

      Добрый день,
      Какие именно данные по сеансам у вас нулевые, но по факту они есть ? Больше подробностей дайте

      1. Максим /

        Добрый день!
        Спасибо за ответ, шаблон подкинул, всё прописал , через командную на сервере проверяю raccmd все ответы 0
        В заббикс всё по тегу-Application: [1C] Сеансы-0
        Подскажите, где искать проблему?

        1. Максим /

          теги -Application: [1C] СУБД -тоже 0

        2. Максим /

          по факту сеансов 6 -из них 3 конфигуратор, лицензии софтовые, SQL находится на другом сервере

        3. Жаконда / Автор записи

          А на сервере попробуйте выполнить rac cluster list, у вас будет вывод подобный моему ниже ?

          rac cluster list
          cluster : 02f04e7d-f2ef-48cb-abb5-52cf7c5706ba
          host : 3020
          port : 1641
          name : «1C01»
          expiration-timeout : 60
          lifetime-limit : 8640
          max-memory-size : 0
          max-memory-time-limit : 0
          security-level : 0
          session-fault-tolerance-level : 0
          load-balancing-mode : performance
          errors-count-threshold : 0
          kill-problem-processes : 1
          kill-by-memory-with-dump : 0

          cluster : 805f1c69-0232-4d0c-99d8-fb6198355acc
          host : 3020
          port : 1541
          name : «Локальный кластер»
          expiration-timeout : 60
          lifetime-limit : 86400
          max-memory-size : 0
          max-memory-time-limit : 0
          security-level : 0
          session-fault-tolerance-level : 0
          load-balancing-mode : performance
          errors-count-threshold : 0
          kill-problem-processes : 1
          kill-by-memory-with-dump : 0

          1. Максим /

            cluster : 94ebc8aa-463b-4be9-b3c9-b83861f13cb2
            host : **-1C.*.ru
            port : 1541
            name : «**-1C»
            expiration-timeout : 0
            lifetime-limit : 0
            max-memory-size : 0
            max-memory-time-limit : 0
            security-level : 0
            session-fault-tolerance-level : 0
            load-balancing-mode : performance
            errors-count-threshold : 0
            kill-problem-processes : 0
            kill-by-memory-with-dump : 0

            вот такой вывод…

          2. Maksim /

            Добрый день!
            в чем может быть проблема? где смотреть?

  2. Максим /

    Здравствуйте!
    Подскажите пожалуйста, почему rac может не получать данные по сеансам?

  3. Алексей /

    Добрый день!
    Статья отличная, но raccmd действительно выдает только нулевые значения, хотя сервер RAS запустился и корректно отдает все параметры кластера.
    Без какого-либо лога проблематично найти причину, готов предоставить все данные со своей стороны, если этот проект еще актуальный.

Оставить ответ

одиннадцать + девятнадцать =

© IT-блог Жаконды All Rights Reserved.
Яндекс.Метрика