Мониторинг количества сеансов 1С на базе PRTG

В данной статье показано как получить информацию о количестве сеансов 1С с историей на базе PRTG сенсором SNMP

Какую информацию нужно получить:
1. Количество сеансов на кластере 1С, историю изменения количества сеансов;
2. Количество сеансов в конкретной базе 1С, историю изменения;

Для чего это нужно:
1. Планирование политики по лицензиям: какие лицензии нужны для конкретных серверов 1С, на каких серверах число пользователей подходит к критической величине и т.д.
2. Планирование работ по изменению IT инфраструктуры: при переносе одних баз на другие сервера 1С, создании тестового контура, перенос критических баз 1С на отдельный контур — расчет рисков
3. Планирование работ по изменениям/обновлениям конфигураций: на работу скольких пользователей может повлиять определенное изменение в конфигурации, когда лучше проводить обновление (в периоды минимального числа пользователей ИБ) и т.д.

В данной статье необходимая информация будет получена на базе PRTG с сенсором SNMP.

Подразумевается, что PRTG установлен на отдельном сервере мониторинга. С этого сервера отправляются SNMP запросы к серверам 1С (на Windows), по результатам которых возвращается число сеансов. При этом, необходимо анализировать не только общее количество сеансов на кластере 1С, но и число сеансов в отдельной информационной базе.

Установка службы SNMP
На серверах 1С необходимо установить службы SNMP (Панель управления — Компоненты Windows). В итоге запустятся службы «Служба SNMP» и «Ловушка SNMP». Важно! Запуск службы SNMP необходимо установить от имени учетной записи, обладающей правами на 1С кластере, community. А также в свойствах службы добавить разрешенные хосты — IP сервера сбора статистики (PRTG).

На анализируемом сервере 1С создадим папку C:SNMP_1C. В ней будем хранить конфигурационные файлы.

Корректировка службы SNMP
Создаем два файла реестра и выполняем их
regagent.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSNMPParametersExtensionAgents]
"snmptools"="SOFTWARE\snmptools\CurrentVersion"

[HKEY_LOCAL_MACHINESOFTWAREsnmptoolscurrentversion]
"Pathname"="%systedrive%\SNMP_1C\snmptools.dll"
"debug"="0"
"counters"="c:\SNMP_1C\counters.ini"

regagentWow6432.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSNMPParametersExtensionAgents]
"snmptools"="SOFTWARE\snmptools\CurrentVersion"

[HKEY_LOCAL_MACHINESOFTWAREWow6432Nodesnmptoolscurrentversion]
"counters"="c:\SNMP_1C\counters.ini"
"debug"="0"
"pathname"="%systemdrive%\SNMP_1C\snmptools.dll"

Библиотеку snmptools.dll (во вложенных фалах) необходимо положить в папку C:SNMP_1C

Создание ini файла
На сервере 1С в папке C:SNMP_1C создадим файл couners.ini. В нем пропишем действия при конкретном OID SNMP:

[1.3.6.1.6.2.7.16.12.15.16]
type=exec
counter=c:windowssystem32cscript.exe /nologo c:SNMP_1C1c_sessions.vbs /Platform:"V83"

[1.3.6.1.6.2.7.16.12.15.16.1]
type=exec
counter=c:windowssystem32cscript.exe /nologo c:SNMP_1C1c_sessions.vbs /BaseStr:"buh30" /PlatformStr:"V83"

Создание vbs скрипта
В корне диска C:SNMP_1C создаем файл 1c_sessions.vbs

BaseName = Wscript.Arguments.Named.Item("BaseStr")
Platform = Wscript.Arguments.Named.Item("PlatformStr")
If Platform = "" Then
Platform = "V83"
End If


Set Connector = CreateObject(Platform & ".COMConnector")
Set Connection = Connector.ConnectAgent("tcp://localhost")
Clasters = Connection.GetClusters()
Set Cluster = Clasters (0)
Connection.Authenticate Cluster,"",""
Sessions = Connection.GetSessions (Cluster)
If BaseName="" Then
wscript.Echo(Ubound(Sessions)+1)
Else
Amount = 0
For Each Session In Sessions
If Session.InfoBase.Name = BaseName Then
Amount = Amount + 1
End If
Next
wscript.Echo(Amount)
End If

Создание сенсора RPTG

В PRTG добавляем device (сервер 1С «corp-1c-server1»), в свойствах не забываем указать корректную версию и сообщество.

Добавляем новый сенсор «Число сеансов 1С». Указываем тип сенсора SNMP, операционная система Windows

OID Value указывали в ini файле. Для сенсора общего количества сеансов на кластере 1С указываем IOD 1.3.6.1.6.2.7.16.12.15.16


Аналогично создаем сенсор для мониторинга числа сеансов в базе buh30 (OID 1.3.6.1.6.2.7.16.12.15.16.1)

В тоге должна получиться следующая картина:


Не получилось завестись с первого раза? Основные нюансы настройки:

1) Службу SNMP запускаем от пользователя, имеющего административные права на кластере 1С (ни в коем случае не стоит ставить сетевую учетку администратора или программиста, лучше Managed Service Accounts MSA);

2) Необходимо проверить версию SNMP в настройках девайса PRTG (для Windows Server 2008/2012 — v2);

3) Проверить сообщество в настройках службы и девайса;

4) Проверить корректность IP адреса сервера мониторинга в настройках службы SNMP;

5) Установлена ли компонента V8xCOMConnector.

Вывод. Благодаря рассмотренному инструменту, мы всегда знаем сколько сеансов на отдельных кластерах 1С, в отдельных информационных базах 1С. Можем опираться на эти данные при планировании как политики лицензирования серверов, изменения IT инфраструктуры, так и при внесении критических изменений в конфигурации.

Спасибо за внимание.

Ссылка на оргинал статьи в личном блоге.

12 Comments

  1. asved.ru

    А почему не Zabbix? Он SMNP мониторит не хуже, но бесплатный и платной ОС под себя не требует.

    Reply
  2. farukshin

    (1) asved.ru,

    Да, на Zabbix можно развернуть подобный сервис, также, как и на любой другой системе мониторинга сети, поддерживающая протокол SNMP. В этой статье использовалась система PRTG.

    Reply
  3. inside2016

    (2)

    а не подскажете, почему не получается прочитать OID?

    Сделал все как тут, при проверке — No such object (SNMP error # 222)

    Reply
  4. farukshin

    (3) inside2016,

    у вас служба SNMP не тюнит ini файл.

    Нужно убедиться, что snmptools.dll лежит в C:SNMP_1C, выполнить корректировку регистра (два reg файла). Для теста в 1c_sessions.vbs оставьте одну строку: «wscript.Echo(16)»

    Reply
  5. inside2016

    (4)



    VBS скрипт работает — возвращает число сеансов.

    В реестре данные есть. Библиотека snmptools лежит по указанному пути. Права на папку выставлены.

    И тем не менее — не работает…

    Reply
  6. farukshin

    (5) inside2016,

    VBS скрипт работает — это хорошо. Чтобы быстрее разобраться, ответьте на следующие вопросы:

    1) PRTG и Агент сервера 1С Предприятие на разных серверах? Версия ОС сервера 1С?

    2) SNMP службу запустили на том сервере, где Агент сервера 1С?

    3) Проверка PRTG — добавьте типовой сенсор Ping для девайса сервера 1С. Работает?

    4) Корректно ли работает служба SNMP? Чтобы проверить — добавьте в PRTG типовой сенсор «SNMP CPU Load».

    5) Настройки SNMP как в статье? (сообщество «snmp», Read Only, разрешенные хосты)

    6) От какой учетки запускаете службу SNMP (локальная/доменная/MSA), от какой службу «Ловушка SNMP»?

    7) Добавлена ли учетка в администраторы в консоли кластера и в администраторах конкретного кластера 1С?

    Если на вопросы 2-5, 7 ответ «Да», то листинг C:SNMP_1C, скрин консоли кластера и службы SNMP (можно в ЛС).

    Reply
  7. farukshin

    (5) inside2016,

    + вас нет в списках скачивавших файл этой статьи. Возможно, отличается snmptools.dll

    Reply
  8. МихаилМ

    похоже статья написана по мотивам

    https://habrahabr.ru/sandbox/39380/

    Reply
  9. pasternakgg

    (5) получилось разобраться?

    Reply
  10. pasternakgg

    После проверки оригинальными шаблонами автора библиотеки snmptools — все запустилось!

    Reply
  11. pasternakgg

    И да, еще:

    — библиотеку я скопировал с system32, windows и syswol64

    — учету использовал доменную, хотя это наверно не принципиально

    — добавил права на работу с COM службой — иначе не отрабатывал vbs скрипт от имени новой учетки

    Reply
  12. farukshin

    (5)

    1. если запускаете от Managed Service Accounts (MSA) — данного пользователя нужно добавить в администраторы на сервере приложения 1С

    2. библиотека snmptoolsво вложении статьи — для 32-х разрядной технологической платформы 1С

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *