Поступила просьба от 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 – Загружено 1097 раз – 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
Теперь нужно установить службу.. (да да, можно было бы и написать еще утилиту которая будет устанавливать по одному клику, но мы же не ищем легкий путей).
Запускаем командную строку Windows (cmd.exe), переходим в каталог размещения скачанной утилиты и выполняем команду:
helper_ras_1c.exe /install
После этого в диспетчере служб Windows появится новая служба — 1C:Enterprise 8.3 Remote Server. Запускаем ее.
Со службой разобрались, она будет работать в автономном режиме. Теперь скачиваем утилиту raccmd.exe и помещаем ее в каталог нахождения helper_ras_1c.exe (но это не принципиально, а чисто для удобства).
Скачать “1C:Enterprise Monitoring (1c_rac_console)” raccmd.exe – Загружено 423 раза – 1 MB
Ниже приведен справочник по ключам запуска утилиты raccmd.exe по которым получаются те или иные значения от cервера администрирования кластера серверов 1С (ras.exe). Для интереса можно через командную строку Windows запустить утилиту raccmd.exe с каким либо ключом и посмотреть результат выполнения.
Теперь для того чтобы 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 сервера и импортируем его (надеюсь с этим проблем не возникнет).
Далее все по стандарту, создаем узел сети, добавляем параметр обнаружения Агент и указываем IP-адрес машины и указываем импортированный шаблон:
Как результат можно наблюдать получаемые параметры:
В дополнение в утилиту raccmd.exe была добавлена функция корректного завершения спящих сеансов. Для этого нужно запустить в командной строке Windows raccmd.exe -tlist. В процессе будут определены ВСЕ спящие сеансы по ВСЕМ имеющимся на сервере кластерах и завершены.
Да, знаю что есть штатная система в самой 1С, но у нас она почему то не отрабатывает и спящие сеансы копятся большим кол-вом.. anyway я создал в планировщике Windows задание которое раз в сутки завершает все спящие сеансы.
Резюмирую по проделанной работе, да пока что наверное скудный набор параметром подвержен обработке, но задача была на текущей момент мониторить именно эти параметры. Так же в шаблоне нет никаких тригеров и тд., но это пока что тоже не нужно в моем случае.
Есть мысли по расширению области мониторинга, такой как считать уникальных сессий (т.е. одинаковые пользователи, одинаковые IP адреса), так же хочу понимать сколько рабочих процессов задействовано и сколько они жрут памяти..
Быть может у кого то из вас будут пожелания по развитию, с радостью выслушаю и постараюсь взять в работу. Надеюсь кому то облегчил жизнь своим трудом.
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА
helper_ras_1c.exe \install — нужно «/» — тогда произойдет установка службы.
raccmd со всеми ключами получает в ответ нули.
проверил через штатную утилиту rac — всё норм, ras функционирует, на запросы дает ответы.
куда копать уже не пойму, подсобите пожалуйста
Спасибо за указание замечания — поправил.
По raccmd честное слово не могу понять почему у вас и не только пустые ответы.. не могу пока что с эмулировать у себя, т.к. возвращаются значения нормально..
Всё заработало.
Консоль необходимо было стартовать от имени администратора.
Вопрос, как отрабатывает утилита raccmd с ключом -tlist. Можете поделиться ?
Также есть такой момент. При регистрации службы RAS была поломана переменная path, а именно %SystemRoot%, перестали отрабатывать команды из system32. Пересоздание значений переменной исправляет проблему.
По поводу ключа -tlist. Отрабатывает он следующим образом — ищуются все сеансы со статусом «Hibernate» и завершаются. Это делалось по просьбе наших 1С-ников, т.к. почему то штатными средствами сеансы с гибернацией по таймауту не завершались и продолжали висеть и занимать лицензию.
«helper_ras_1c.exe» не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Выполни тоже самое с PowerShell
Здравствуйте наблюдаю такую ошибку:
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:
служба называется 1C:Enterprise 8.3 Remote Server
в ответах все нули.
Не понятно пока что, потому что не могу симулировать у себя такую ситуацию.
Анологично!!!
служба называется 1C:Enterprise 8.3 Remote Server и не стратует.
В ответах все нули.
служба: 1C:Enterprise 8.3 Remote Server
В ответах так же все по 0
Как уже писал в комментариях что странно и не удается у себя с эмулировать, но в планах есть пересмотреть код, переработать.
Добрый день!
1C:Enterprise 8.3 Remote Server — так же получил такую службу, на сервере уже была установлена служба 1C:Enterprise RAS. может из за этого. raccmd так же выдавал все нули.
Я изменил название службы на 1C:Enterprise 8.3 Remote Server и всё заработало.
В реестре HKLM-SYSTEM-CurrentControlSet-services
Добрый день. Файлы архивов не доступны по ссылкам. Подскажите как их можно получить ?
Исправил. Скачивание доступно
Добрый день.
Предложение — было бы удобно, если бы также отслеживались используемые клиентские лицензии по открытым подключениям/сеансам, а также дата последнего входа в базу по списку имеющихся баз
По подробней пожалуйста опишите, а то не совсем вьехал)
Ну, хотелось бы, чтобы в заббиксе в элементах данных можно было мониторить:
количество баз 1С в каждый момент времени;
период простоя по каждой базе, т.е. время, когда отсутствовали сеансы пользователей в ней;
общее количество используемых в данный момент клиентских лицензий на сервере.
Кстати у меня, как и у остальных, в ответах везде нули.
На сервере уже была служба 1C:Enterprise RAS, в отключенном состоянии. Удалил ее, переустановил helper_1c_ras.exe — не помогло.
Правда у меня для доступа к кластеру используется логин/пароль, ввел их в качестве ключей к службе через реестр — obj=%user% password=%pass%, и все равно нули.
А можете поскать шаблон для версии zabbix 5.2.4 ?
А это не подходит ? Я просто совместимость с 5.2 не проверял, но мне кажется долнжо подхватить.
Нет, к сожалению не подошла, чтобы сервер zabbix обновить не так просто
Нет, не подходит, пришлите пожалуйста для версии 5.2
У меня нет версии zabbix 5.2 чтобы переделать, к сожалению
Добрый день, подходит для версии Zabbix 6.4.1?
Да
Здравствуйте, утилиты raccmd.exe с ключами выдает 0 (cmd запускаю от имени администратора), я думаю причина в том, что служба 1C:Enterprise 8.3 Remote Server добавилась, но не запускается, даже с учетной записи администратора.
Подскажите, в чем может быть причина? (Служба на «Локальный компьютер» была запущена и затем остановлена. Некоторые службы автоматически останавливаются, если они не используются другими службами или программами)
Здравствуйте,
А вы корректно указали параметры в файле cfg.conf ?