2929 └────────────────────────────────────────────────┘
3030```
3131
32- ## Способы экспорта метрик
32+ ## Подключение мониторинга
3333
34- ### Pull-модель (рекомендуется)
34+ ### Шаг 1. Назначить роли пользователям
35+
36+ Для работы мониторинга необходимо назначить роли пользователям 1С:
37+
38+ | Роль | Кому назначать | Что даёт |
39+ | ------| ----------------| ----------|
40+ | ` PDE: Получение метрик ` | Сервисному пользователю, от имени которого Prometheus обращается к HTTP-сервису | Доступ к эндпоинту ` GET /prometheus/polling ` ; чтение/запись регистра ` пэмСостояниеМетрик ` |
41+ | ` PDE: Настройка метрик ` | Администратору, настраивающему метрики через интерфейс 1С | Полный доступ к справочнику ` пэмМетрики ` ; управление константами Pushgateway; просмотр формы настроек |
42+ | ` Администрирование интеграции ` | Администратору подсистемы (опционально) | Включает расширенные права на константы Pushgateway, отчёт по состоянию метрик. Не включает справочник метрик и HTTP-сервис — они в выделенных ролях выше |
43+
44+ ::: tip Минимальная конфигурация
45+ Для базового мониторинга через Prometheus достаточно ** одного** сервисного пользователя с ролью ` PDE: Получение метрик ` .
46+ :::
47+
48+ ### Шаг 2. Настроить регламентное задание
49+
50+ Метрики рассчитываются регламентным заданием ` пэмВыполнитьРасчетМетрик ` :
51+
52+ | Параметр | Рекомендуемое значение |
53+ | ----------| ------------------------|
54+ | Расписание | Каждые 30–60 секунд |
55+ | Многопоточность | Включить (` пэмМногопоточныйРасчетМетрик = Истина ` ) |
56+
57+ ### Шаг 3. Настроить Prometheus
58+
59+ #### Pull-модель (рекомендуется)
3560
3661HTTP-сервис для Prometheus scraping:
3762
3863```
39- GET /prometheus/polling
64+ GET /<имя_базы>/hs/ prometheus/polling
4065Authorization: Basic <credentials>
4166```
4267
43- ** Пример ответа:**
44-
45- ``` prometheus
46- # HELP pde_queue_length Количество сообщений в очередях
47- # TYPE pde_queue_length gauge
48- pde_queue_length{queue="incoming"} 42
49- pde_queue_length{queue="outgoing"} 156
50- pde_queue_length{queue="distribution"} 23
68+ Конфигурация Prometheus:
5169
52- # HELP pde_error_count Количество сообщений с ошибками
53- # TYPE pde_error_count gauge
54- pde_error_count{flow_name="orders_export",error_type="formation_error",direction="outgoing"} 3
55- pde_error_count{flow_name="prices_import",error_type="processing_error",direction="incoming"} 1
70+ ``` yaml
71+ scrape_configs :
72+ - job_name : ' 1c_integration'
73+ scrape_interval : 30s
74+ scrape_timeout : 10s
75+ metrics_path : /<имя_базы>/hs/prometheus/polling
76+ basic_auth :
77+ username : prometheus_user
78+ password : secret
79+ static_configs :
80+ - targets : ['1c-server.local:80']
81+ labels :
82+ instance : ' prod-erp'
5683` ` `
5784
58- ### Push-модель (Pushgateway)
85+ #### Push-модель (Pushgateway)
5986
6087Для сред без прямого доступа к 1С можно настроить отправку метрик на Pushgateway:
6188
@@ -66,14 +93,19 @@ pde_error_count{flow_name="prices_import",error_type="processing_error",directio
6693| `пэмПортСервераPushgateway` | Порт (по умолчанию `9091`) |
6794| `пэмПутьНаСервереPushgateway` | Путь (по умолчанию `/metrics/job/1c_integration`) |
6895
69- ## Справочник метрик
96+ # # Перечень метрик {#metric-reference}
97+
98+ Все метрики имеют префикс `pde_` (Prometheus Data Exporter). Всего 11 встроенных метрик.
7099
71100# ## Метрики очередей
72101
73102# ### pde_queue_length
74103
75- ** Тип:** Gauge
76- ** Описание:** Текущий размер очередей сообщений (количество ожидающих обработки)
104+ | | |
105+ |-|-|
106+ | **Тип** | Gauge |
107+ | **Описание** | Текущий размер очередей сообщений (количество ожидающих обработки) |
108+ | **Период агрегации** | текущее состояние (моментальный снимок) |
77109
78110| Лейбл | Описание | Значения |
79111|-------|----------|----------|
@@ -94,8 +126,11 @@ pde_error_count{flow_name="prices_import",error_type="processing_error",directio
94126
95127# ### pde_oldest_pending_age_seconds
96128
97- **Тип:** Gauge
98- **Описание:** Возраст старейшего необработанного сообщения в секундах. Индикатор «застрявших» сообщений.
129+ | | |
130+ |-|-|
131+ | **Тип** | Gauge |
132+ | **Описание** | Возраст старейшего необработанного сообщения в секундах. Индикатор «застрявших» сообщений |
133+ | **Период агрегации** | текущее состояние |
99134
100135| Лейбл | Описание | Значения |
101136|-------|----------|----------|
@@ -118,8 +153,11 @@ pde_error_count{flow_name="prices_import",error_type="processing_error",directio
118153
119154# ### pde_error_count
120155
121- **Тип:** Gauge
122- **Описание:** Количество сообщений в состоянии ошибки
156+ | | |
157+ |-|-|
158+ | **Тип** | Gauge |
159+ | **Описание** | Количество сообщений в состоянии ошибки |
160+ | **Источник** | Регистры `инт_ТекущийСтатусИсходящихСообщений`, `инт_ТекущийСтатусВходящихСообщений` |
123161
124162| Лейбл | Описание | Значения |
125163|-------|----------|----------|
@@ -136,8 +174,10 @@ pde_error_count{flow_name="prices_import",error_type="processing_error",directio
136174
137175# ### pde_retry_count
138176
139- **Тип:** Gauge
140- **Описание:** Количество сообщений с повторными попытками обработки
177+ | | |
178+ |-|-|
179+ | **Тип** | Gauge |
180+ | **Описание** | Количество сообщений с повторными попытками обработки |
141181
142182| Лейбл | Описание | Значения |
143183|-------|----------|----------|
@@ -154,52 +194,83 @@ pde_error_count{flow_name="prices_import",error_type="processing_error",directio
154194
155195# ### pde_formation_duration_seconds
156196
157- **Тип:** Gauge
158- **Описание:** Время выполнения обработчика формирования сообщений
197+ | | |
198+ |-|-|
199+ | **Тип** | Gauge |
200+ | **Описание** | Время выполнения обработчика формирования исходящих сообщений |
201+ | **Источник** | `инт_СтатистикаОбработкиСообщений` (`ТипОперации = Формирование`) |
202+ | **Период агрегации** | последние 5 минут |
159203
160204| Лейбл | Описание | Значения |
161205|-------|----------|----------|
162206| `flow_name` | Наименование потока данных | Строка |
163207| `aggregation` | Тип агрегации | `avg`, `max` |
164208
165- **Период агрегации:** последние 5 минут
166-
167209---
168210
169211# ### pde_send_duration_seconds
170212
171- **Тип:** Gauge
172- **Описание:** Время отправки сообщений подписчикам (включая сетевые задержки)
213+ | | |
214+ |-|-|
215+ | **Тип** | Gauge |
216+ | **Описание** | Время отправки сообщений подписчикам (включая сетевые задержки) |
217+ | **Источник** | `инт_СтатистикаОбработкиСообщений` (`ТипОперации = Отправка`) |
218+ | **Период агрегации** | последние 5 минут |
173219
174220| Лейбл | Описание | Значения |
175221|-------|----------|----------|
176222| `flow_name` | Наименование потока данных | Строка |
177223| `aggregation` | Тип агрегации | `avg`, `max` |
178224
179- **Период агрегации:** последние 5 минут
180-
181225---
182226
183227# ### pde_incoming_duration_seconds
184228
185- **Тип:** Gauge
186- **Описание:** Время обработки входящих сообщений
229+ | | |
230+ |-|-|
231+ | **Тип** | Gauge |
232+ | **Описание** | Время обработки входящих сообщений (асинхронных и синхронных) |
233+ | **Источник** | `инт_СтатистикаОбработкиСообщений` (`ТипОперации = ОбработкаВходящего`) |
234+ | **Период агрегации** | последние 5 минут |
235+
236+ | Лейбл | Описание | Значения |
237+ |-------|----------|----------|
238+ | `flow_name` | Наименование потока данных | Строка |
239+ | `aggregation` | Тип агрегации | `avg`, `max` |
240+
241+ ---
242+
243+ # ### pde_sync_incoming_duration_seconds
244+
245+ | | |
246+ |-|-|
247+ | **Тип** | Gauge |
248+ | **Описание** | Время обработки **синхронных** входящих сообщений (потоки с `АсинхроннаяОбработка = Ложь`) |
249+ | **Источник** | `инт_СтатистикаОбработкиСообщений` (`ТипОперации = ОбработкаВходящего`, `ПотокДанных.АсинхроннаяОбработка = Ложь`) |
250+ | **Период агрегации** | последние 5 минут |
187251
188252| Лейбл | Описание | Значения |
189253|-------|----------|----------|
190254| `flow_name` | Наименование потока данных | Строка |
191255| `aggregation` | Тип агрегации | `avg`, `max` |
256+ | `status` | Результат обработки | `success`, `error` |
192257
193- **Период агрегации:** последние 5 минут
258+ :: : tip Зачем отдельная метрика
259+ ` pde_incoming_duration_seconds` показывает **все** входящие (и асинхронные, и синхронные) без разбивки по статусу. `pde_sync_incoming_duration_seconds` выделяет именно синхронный путь с детализацией по `success`/`error`, что позволяет отслеживать качество обработки вне очереди.
260+ :: :
194261
195262---
196263
197264# ## Метрики пропускной способности
198265
199266# ### pde_messages_per_minute
200267
201- **Тип:** Gauge
202- **Описание:** Количество обработанных сообщений за последнюю минуту
268+ | | |
269+ |-|-|
270+ | **Тип** | Gauge |
271+ | **Описание** | Количество обработанных сообщений за последнюю минуту |
272+ | **Источник** | `инт_СтатистикаОбработкиСообщений` (все типы операций) |
273+ | **Период агрегации** | последние 60 секунд |
203274
204275| Лейбл | Описание | Значения |
205276|-------|----------|----------|
@@ -223,49 +294,54 @@ pde_messages_per_minute{status="error"} /
223294
224295# ### pde_last_refresh
225296
226- **Тип:** Gauge
227- **Описание:** Unix timestamp последнего расчёта метрик (epoch seconds)
297+ | | |
298+ |-|-|
299+ | **Тип** | Counter |
300+ | **Описание** | Unix timestamp последнего расчёта метрик (epoch seconds) |
228301
229- **Применение:** Мониторинг работоспособности самой системы сбора метрик
302+ **Применение:** мониторинг работоспособности самой системы сбора метрик.
230303
231304---
232305
233306# ### pde_scrape_duration
234307
235- **Тип:** Gauge
236- **Описание:** Время расчёта каждой метрики в миллисекундах
308+ | | |
309+ |-|-|
310+ | **Тип** | Gauge |
311+ | **Описание** | Время расчёта каждой метрики в миллисекундах |
237312
238313| Лейбл | Описание |
239314|-------|----------|
240315| `label` | Код метрики |
241316
242- # # Настройка сбора метрик
243-
244- # ## Регламентное задание
245-
246- Метрики рассчитываются регламентным заданием `пэмВыполнитьРасчетМетрик` :
247-
248- | Параметр | Рекомендуемое значение |
249- |----------|------------------------|
250- | Расписание | Каждые 30-60 секунд |
251- | Многопоточность | Включить (`пэмМногопоточныйРасчетМетрик = Истина`) |
317+ ---
252318
253- # ## Роли
319+ # ## Сводная таблица метрик
254320
255- | Роль | Назначение |
256- |------|------------|
257- | `пэмПолучениеМетрик` | Доступ к HTTP-сервису `/prometheus/polling` |
258- | `пэмНастройкаМетрик` | Настройка справочника метрик и констант |
321+ | Метрика | Тип | Источник | Лейблы |
322+ |---------|-----|----------|--------|
323+ | `pde_queue_length` | Gauge | Статусные регистры | `queue` |
324+ | `pde_oldest_pending_age_seconds` | Gauge | Статусные регистры | `queue` |
325+ | `pde_error_count` | Gauge | Статусные регистры | `flow_name`, `error_type`, `direction` |
326+ | `pde_retry_count` | Gauge | Статусные регистры | `flow_name`, `direction` |
327+ | `pde_formation_duration_seconds` | Gauge | Статистика | `flow_name`, `aggregation` |
328+ | `pde_send_duration_seconds` | Gauge | Статистика | `flow_name`, `aggregation` |
329+ | `pde_incoming_duration_seconds` | Gauge | Статистика | `flow_name`, `aggregation` |
330+ | `pde_sync_incoming_duration_seconds` | Gauge | Статистика | `flow_name`, `aggregation`, `status` |
331+ | `pde_messages_per_minute` | Gauge | Статистика | `flow_name`, `operation`, `status` |
332+ | `pde_last_refresh` | Counter | Служебная | — |
333+ | `pde_scrape_duration` | Gauge | Служебная | `label` |
259334
260- # ## Добавление пользовательских метрик
335+ # # Добавление пользовательских метрик
261336
262337Метрики хранятся в справочнике `пэмМетрики`. Для добавления новой метрики :
263338
264- 1. Создайте макет `CommonTemplate` с алгоритмом расчёта
339+ 1. Создайте общий макет ( `CommonTemplate`) с алгоритмом расчёта
2653402. Добавьте элемент справочника с настройками :
266341 - **Код** — имя метрики в Prometheus (например, `my_custom_metric`)
267342 - **Тип метрики** — `Counter` или `Gauge`
268- - **Алгоритм** — ссылка на макет
343+ - **Метод получения** — `Pull` (HTTP scrape) или `Push` (Pushgateway)
344+ - **Алгоритм** — текст BSL-кода из макета
269345
270346**Формат алгоритма:**
271347
@@ -284,23 +360,6 @@ pde_messages_per_minute{status="error"} /
284360
285361# # Интеграция с Grafana
286362
287- # ## Prometheus scrape config
288-
289- ` ` ` yaml
290- scrape_configs:
291- - job_name: '1c_integration'
292- scrape_interval: 30s
293- scrape_timeout: 10s
294- metrics_path: /integration_base/hs/prometheus/polling
295- basic_auth:
296- username: prometheus_user
297- password: secret
298- static_configs:
299- - targets: ['1c-server.local:80']
300- labels:
301- instance: 'prod-erp'
302- ` ` `
303-
304363# ## Рекомендуемые панели Grafana
305364
306365| Панель | Метрики | Тип визуализации |
@@ -309,6 +368,7 @@ scrape_configs:
309368| Ошибки по потокам | `pde_error_count` | Bar chart |
310369| Пропускная способность | `pde_messages_per_minute` | Time series |
311370| Время обработки | `pde_*_duration_seconds` | Heatmap / Time series |
371+ | Синхронные входящие | `pde_sync_incoming_duration_seconds` | Time series |
312372| Застрявшие сообщения | `pde_oldest_pending_age_seconds` | Gauge / Alert list |
313373| Повторные попытки | `pde_retry_count` | Stat / Table |
314374
@@ -335,6 +395,12 @@ scrape_configs:
335395 "targets": [
336396 { "expr": "sum(pde_error_count) by (error_type)" }
337397 ]
398+ },
399+ {
400+ "title": "Sync Incoming Duration",
401+ "targets": [
402+ { "expr": "pde_sync_incoming_duration_seconds{aggregation=\" avg\" }", "legendFormat": "{{ flow_name }} ({{ status }})" }
403+ ]
338404 }
339405 ]
340406}
@@ -383,6 +449,14 @@ groups:
383449 severity: warning
384450 annotations:
385451 summary: "Медленная обработка в потоке {{ $labels.flow_name }}"
452+
453+ - alert: SyncIncomingErrors
454+ expr: pde_sync_incoming_duration_seconds{status="error"} > 0
455+ for: 1m
456+ labels:
457+ severity: warning
458+ annotations:
459+ summary: "Ошибки синхронной обработки в потоке {{ $labels.flow_name }}"
386460` ` `
387461
388462# # Диагностика через журнал регистрации
0 commit comments