Мониторинг 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,32 МБ
Теперь в каталоге размещения утилиты helper_ras_1c.exe создаем текстовый файл — cfg.conf со следующим содержанием:
[Parameters] rasPath=C:\Program Files\1cv8\8.3.17.2306\bin rasPort=1545 agentName=localhost ctrlPort=1540
[stextbox id=’warning’]ИНФОРМАЦИЯ: обращаю внимание что в параметре rasPath нужно указывать путь с учетом какая версия 1С у вас установлена. Остальные параметры оставляем без изменения![/stextbox]
Теперь нужно установить службу.. (да да, можно было бы и написать еще утилиту которая будет устанавливать по одному клику, но мы же не ищем легкий путей).
Запускаем командную строку Windows (cmd.exe), переходим в каталог размещения скачанной утилиты и выполняем команду:
helper_ras_1c.exe /install
После этого в диспетчере служб Windows появится новая служба — 1C:Enterprise 8.3 Remote Server. Запускаем ее.
[stextbox id=’warning’]ИНФОРМАЦИЯ: хочу обратить внимание что при обновление платформы, важно не забыть сделать изменения в параметре rasPath в файле cfg.conf на актуальный путь к платформе. После сделанных изменений не забываем перезапустить службу 1C:Enterprise 8.3 Remote Server![/stextbox]
Со службой разобрались, она будет работать в автономном режиме. Теперь скачиваем утилиту raccmd.exe и помещаем ее в каталог нахождения helper_ras_1c.exe (но это не принципиально, а чисто для удобства).
Скачать “1C:Enterprise Monitoring (1c_rac_console)” raccmd.exe – Загружено 380 раз – 1,29 МБ
Ниже приведен справочник по ключам запуска утилиты raccmd.exe по которым получаются те или иные значения от cервера администрирования кластера серверов 1С (ras.exe). Для интереса можно через командную строку Windows запустить утилиту raccmd.exe с каким либо ключом и посмотреть результат выполнения.
[stextbox id=’info’]-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[/stextbox]
Теперь для того чтобы 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 – Загружено 393 раза – 5,24 КБ
Далее все по стандарту, создаем узел сети, добавляем параметр обнаружения Агент и указываем IP-адрес машины и указываем импортированный шаблон:
Как результат можно наблюдать получаемые параметры:
В дополнение в утилиту raccmd.exe была добавлена функция корректного завершения спящих сеансов. Для этого нужно запустить в командной строке Windows raccmd.exe -tlist. В процессе будут определены ВСЕ спящие сеансы по ВСЕМ имеющимся на сервере кластерах и завершены.
Да, знаю что есть штатная система в самой 1С, но у нас она почему то не отрабатывает и спящие сеансы копятся большим кол-вом.. anyway я создал в планировщике Windows задание которое раз в сутки завершает все спящие сеансы.
Резюмирую по проделанной работе, да пока что наверное скудный набор параметром подвержен обработке, но задача была на текущей момент мониторить именно эти параметры. Так же в шаблоне нет никаких тригеров и тд., но это пока что тоже не нужно в моем случае.
Есть мысли по расширению области мониторинга, такой как считать уникальных сессий (т.е. одинаковые пользователи, одинаковые IP адреса), так же хочу понимать сколько рабочих процессов задействовано и сколько они жрут памяти..
Быть может у кого то из вас будут пожелания по развитию, с радостью выслушаю и постараюсь взять в работу. Надеюсь кому то облегчил жизнь своим трудом.
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Добрый день!
Статья отличная, но raccmd действительно выдает только нулевые значения, хотя сервер RAS запустился и корректно отдает все параметры кластера.
Без какого-либо лога проблематично найти причину, готов предоставить все данные со своей стороны, если этот проект еще актуальный.
Здравствуйте!
Подскажите пожалуйста, почему rac может не получать данные по сеансам?
Здравствуйте! Спасибо за подробную инструкцию с утилитами.
Подскажите пожалуйста, почему rac может не считывать данные по сеансам?
У меня пустые значения, хотя сеансы запущены
Добрый день,
Какие именно данные по сеансам у вас нулевые, но по факту они есть ? Больше подробностей дайте
Добрый день!
Спасибо за ответ, шаблон подкинул, всё прописал , через командную на сервере проверяю raccmd все ответы 0
В заббикс всё по тегу-Application: [1C] Сеансы-0
Подскажите, где искать проблему?
теги -Application: [1C] СУБД -тоже 0
по факту сеансов 6 -из них 3 конфигуратор, лицензии софтовые, SQL находится на другом сервере
А на сервере попробуйте выполнить rac cluster list, у вас будет вывод подобный моему ниже ?
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
вот такой вывод…
Добрый день!
в чем может быть проблема? где смотреть?