Перейти к основному содержимому

1C Enterprise

Description

К шаблону прилагается набор скриптов для осуществления сбора метрик.

Скрипты (кроме mr_parse_1c_log.py) берут данные из админ-консоли 1С (rac.exe), скрипт mr_parse_1c_log.py берет данные из лог-файла, в который пишутся тяжелые запросы из ТЖ (технологического журнала 1С).

Для работы с шаблоном необходимо произвести следующие подготовительные действия на стороне сервера 1C:

  1. Убедиться, что rac.exe доступен и путь к нему совпадает. RAC_PATH = r"C:\Program Files\1cv8\8.3.21.1302\bin\rac.exe" - если что путь сменить в скриптах.
  2. Доступ к кластеру 1С для rac. Скрипты не передают логин/пароль в rac — значит, пользователь, под которым они запускаются, должен иметь права администратора кластера (Windows-аутентификация) либо кластер должен разрешать доступ без явной аутентификации.
  3. RAS (обычно порт 1545) и Агент (обычно 1540) должны быть доступны с хоста, где запускаются скрипты если скрипты запускаются не на сервера 1С. В нашем случае на тестовом стенде скрипты лежат на сервере 1С. Но если вдруг, то надо иметь ввиду.

Для скрипта mr_parse_1c_log.py:

  1. Включить технологический журнал и направить его туда, где ищет парсер. В скрипте это путь C:\1C\Log\Query1с_1 - если отличается, сменить

Macros used

NameValue
{$SESSION_LIMIT}2000

Items collected

NameDescriptionTypeIntervalKey and additional info
Total queries

-

-

5m1cEnt.parse.log[meta]

Discovery rule №1

NameDescriptionTypeIntervalKey and additional info
Clusters

-

ZABBIX_ACTIVE2m1cEnt.clusters

Item prototypes

NameDescriptionTypeIntervalKey and additional info
Средняя производительность {#CLUSTER_NAME}

-

DEPENDENT01cEnt.processes.avgperformance[{#CLUSTER}]
Неактивных рабочих процессов на {#CLUSTER_NAME}

-

DEPENDENT01cEnt.processes.rphost_inactive[{#CLUSTER}]
Data Collect: Процессы на {#CLUSTER_NAME}

-

ZABBIX_ACTIVE2m1cEnt.processes[{#CLUSTER}]

Trigger prototypes

NameDescriptionExpressionPriorityDependencies
Производительность меньше 60 на {#CLUSTER_NAME}

-

max(/1C Enterprise/1cEnt.processes.avgperformance[{#CLUSTER}],3m)<60HIGH ⛔Средняя производительность &#123#CLUSTER_NAME&#125
Неактивных рабочих процессов на {#CLUSTER_NAME} больше 0

-

min(/1C Enterprise/1cEnt.processes.rphost_inactive[{#CLUSTER}],5m)>0HIGH ⛔Неактивных рабочих процессов на &#123#CLUSTER_NAME&#125

Discovery rule №2

NameDescriptionTypeIntervalKey and additional info
Infobases

-

ZABBIX_ACTIVE2m1cEnt.infobases

Item prototypes

NameDescriptionTypeIntervalKey and additional info
Фоновых заданий на {#NAME}, {#CLUSTER_NAME}

-

DEPENDENT01cEnt.sessions.bjobs[{#INFOBASE}, {#CLUSTER}]
Заблокировано объектов СУБД на {#NAME}, {#CLUSTER_NAME}

-

DEPENDENT01cEnt.sessions.blocked-by-dbms[{#INFOBASE}, {#CLUSTER}]
Байт на {#NAME}, {#CLUSTER_NAME}

-

DEPENDENT01cEnt.sessions.bytes-all[{#INFOBASE}, {#CLUSTER}]
COM соединений на {#NAME}, {#CLUSTER_NAME}

-

DEPENDENT01cEnt.sessions.comconn[{#INFOBASE}, {#CLUSTER}]
Время блокировки на {#NAME}, {#CLUSTER_NAME}

-

DEPENDENT01cEnt.sessions.db-proc-took[{#INFOBASE}, {#CLUSTER}]
Конфигураторов на {#NAME}, {#CLUSTER_NAME}

-

DEPENDENT01cEnt.sessions.designers[{#INFOBASE}, {#CLUSTER}]
Толстых клиентов на {#NAME}, {#CLUSTER_NAME}

-

DEPENDENT01cEnt.sessions.thickClient[{#INFOBASE}, {#CLUSTER}]
Тонких клиентов на {#NAME}, {#CLUSTER_NAME}

-

DEPENDENT01cEnt.sessions.thinClient[{#INFOBASE}, {#CLUSTER}]
Data Collect: Всего сессий на {#NAME}, {#CLUSTER_NAME}

-

CALCULATED5m1cEnt.sessions.totalSessions[{#INFOBASE}, {#CLUSTER}]
Web клиентов на {#NAME}, {#CLUSTER_NAME}

-

DEPENDENT01cEnt.sessions.webclients[{#INFOBASE}, {#CLUSTER}]
Data Collect: Сессий на {#NAME}, {#CLUSTER_NAME}

-

ZABBIX_ACTIVE5m1cEnt.sessions[{#INFOBASE},{#CLUSTER}]

Trigger prototypes

NameDescriptionExpressionPriorityDependencies
Кол-во сеансов больше {$SESSION_LIMIT} на {#NAME}

-

min(/1C Enterprise/1cEnt.sessions.totalSessions[{#INFOBASE}, {#CLUSTER}],3m)>{$SESSION_LIMIT}AVERAGE ⚠Data Collect: Всего сессий на &#123#NAME&#125, &#123#CLUSTER_NAME&#125

Discovery rule №3

NameDescriptionTypeIntervalKey and additional info
Process log 1C

-

-

5m1cEnt.parse.log

Item prototypes

NameDescriptionTypeIntervalKey and additional info
Query {#NUMBER} Computer Name

-

DEPENDENT01cEnt.computer.name[{#NUMBER}]
Query {#NUMBER} DB Name

-

DEPENDENT01cEnt.db.name[{#NUMBER}]
Data collect: Heavy query {#NUMBER} Duration

-

DEPENDENT01cEnt.duration[{#NUMBER}]
Query {#NUMBER} End

-

DEPENDENT01cEnt.end[{#NUMBER}]
Data collect: Heavy query {#NUMBER}

-

-

5m1cEnt.parse.log[{#NUMBER}]
Query {#NUMBER} SQL

-

DEPENDENT01cEnt.sql[{#NUMBER}]
Query {#NUMBER} Start

-

DEPENDENT01cEnt.start[{#NUMBER}]
User of query {#NUMBER}

-

DEPENDENT01cEnt.user[{#NUMBER}]