Files
pd-guard/monitoring/grafana/dashboards/pd-guard.json
T

2647 lines
60 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"uid": "pd-guard",
"title": "Модуль безопасности персональных данных",
"description": "Бизнес-показатели защиты данных и техническое наблюдение за модулем.",
"tags": [
"pd-guard",
"пдн",
"безопасность"
],
"timezone": "browser",
"schemaVersion": 39,
"version": 1,
"refresh": "5s",
"time": {
"from": "now-15m",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m"
]
},
"editable": true,
"panels": [
{
"type": "row",
"title": "Защита данных — что происходит с точки зрения бизнеса",
"id": 1,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 0
},
"collapsed": false
},
{
"type": "stat",
"title": "Обращений в секунду",
"id": 2,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 4,
"x": 0,
"y": 1
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(rate(pdguard_process_seconds_count[$__rate_interval]))",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "reqps",
"custom": {},
"decimals": 1,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"description": "Все обращения к контракту: и маскирование, и обратное преобразование.",
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Защищено фрагментов ПД за период",
"id": 3,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 5,
"x": 4,
"y": 1
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(increase(pdguard_pd_detected_total[$__range]))",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {},
"decimals": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"description": "Сколько персональных данных не ушло в языковую модель за выбранный период.",
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Фрагментов ПД на запрос",
"id": 4,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 4,
"x": 9,
"y": 1
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(rate(pdguard_pd_detected_total[$__rate_interval])) / clamp_min(sum(rate(pdguard_process_seconds_count{direction=\"mask\"}[$__rate_interval])), 0.001)",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {},
"decimals": 2,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"description": "Насколько насыщен трафик персональными данными.",
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Токенов в секунду",
"id": 5,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 4,
"x": 13,
"y": 1
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(rate(pdguard_tokens_processed_total[$__rate_interval]))",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {},
"decimals": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"description": "Оценка TPS: объём текста, прошедшего через модуль.",
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Систем-потребителей в работе",
"id": 6,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 3,
"x": 17,
"y": 1
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "count(count by (system) (rate(pdguard_process_seconds_count[$__rate_interval]) > 0))",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {},
"decimals": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Размер хранилища соответствий",
"id": 7,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 4,
"x": 20,
"y": 1
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(pdguard_store_chars)",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "none",
"custom": {},
"decimals": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"description": "Знаков в памяти узла. Записи живут ограниченное время и вытесняются по объёму.",
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "timeseries",
"title": "Типы персональных данных в секунду",
"id": 8,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 9,
"w": 14,
"x": 0,
"y": 6
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum by (type) (rate(pdguard_pd_detected_total[$__rate_interval]))",
"refId": "A",
"instant": false,
"legendFormat": "{{type}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {
"fillOpacity": 45,
"lineWidth": 2,
"showPoints": "never",
"stacking": {
"mode": "normal"
}
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"description": "Что именно находит модуль. Провал по типу при живом трафике — повод смотреть правила.",
"options": {
"legend": {
"displayMode": "table",
"placement": "bottom",
"calcs": [
"mean",
"max"
],
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}
},
{
"type": "bargauge",
"title": "Топ типов ПД за период",
"id": 9,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 9,
"w": 10,
"x": 14,
"y": 6
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "topk(18, sum by (type) (increase(pdguard_pd_detected_total[$__range])))",
"refId": "A",
"instant": false,
"legendFormat": "{{type}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {},
"decimals": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"displayMode": "gradient",
"orientation": "horizontal",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
}
}
},
{
"type": "timeseries",
"title": "Обращения по системам-потребителям",
"id": 10,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 8,
"w": 14,
"x": 0,
"y": 15
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum by (system) (rate(pdguard_process_seconds_count[$__rate_interval]))",
"refId": "A",
"instant": false,
"legendFormat": "{{system}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "reqps",
"custom": {
"fillOpacity": 45,
"lineWidth": 2,
"showPoints": "never",
"stacking": {
"mode": "normal"
}
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"legend": {
"displayMode": "table",
"placement": "bottom",
"calcs": [
"mean",
"max"
],
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}
},
{
"type": "piechart",
"title": "Доля систем за период",
"id": 11,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 8,
"w": 10,
"x": 14,
"y": 15
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum by (system) (increase(pdguard_process_seconds_count[$__range]))",
"refId": "A",
"instant": false,
"legendFormat": "{{system}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"legend": {
"displayMode": "table",
"placement": "right",
"values": [
"percent"
],
"showLegend": true
},
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
}
}
},
{
"type": "row",
"title": "Задержка и SLA",
"id": 12,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 23
},
"collapsed": false
},
{
"type": "stat",
"title": "p95 маскирования",
"id": 13,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 4,
"x": 0,
"y": 24
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "histogram_quantile(0.95, sum by (le) (rate(pdguard_process_seconds_bucket{direction=\"mask\"}[$__rate_interval])))",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "s",
"custom": {},
"decimals": 4,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "orange",
"value": 0.25
},
{
"color": "red",
"value": 0.5
}
]
}
},
"overrides": []
},
"description": "Ориентир критериев — 0,5 с. Жёлтый с 0,25 с, красный с 0,5 с.",
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Доля в пределах 0,5 с",
"id": 14,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 4,
"x": 4,
"y": 24
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(rate(pdguard_process_seconds_bucket{le=\"0.5\"}[$__rate_interval])) / clamp_min(sum(rate(pdguard_process_seconds_count[$__rate_interval])), 0.001)",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "percentunit",
"custom": {},
"decimals": 3,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "red",
"value": null
},
{
"color": "orange",
"value": 0.99
},
{
"color": "green",
"value": 0.999
}
]
}
},
"overrides": []
},
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Среднее время маскирования",
"id": 15,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 4,
"x": 8,
"y": 24
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(rate(pdguard_process_seconds_sum{direction=\"mask\"}[$__rate_interval])) / clamp_min(sum(rate(pdguard_process_seconds_count{direction=\"mask\"}[$__rate_interval])), 0.001)",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "s",
"custom": {},
"decimals": 5,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Худший запрос за период",
"id": 16,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 4,
"x": 12,
"y": 24
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "max(pdguard_process_seconds_max)",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "s",
"custom": {},
"decimals": 4,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "orange",
"value": 0.25
},
{
"color": "red",
"value": 0.5
}
]
}
},
"overrides": []
},
"description": "Одиночный выброс. Смотреть вместе с p95: единичный всплеск на него не влияет.",
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Предел одновременных запросов",
"id": 17,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 4,
"x": 16,
"y": 24
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "max(pdguard_concurrency_limit)",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {},
"decimals": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"description": "Подстраивается сам под задержку. Резкое падение — признак перегрузки.",
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Запросов в работе",
"id": 18,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 4,
"x": 20,
"y": 24
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(pdguard_concurrency_in_flight)",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {},
"decimals": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "timeseries",
"title": "Перцентили маскирования",
"id": 19,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 29
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "histogram_quantile(0.50, sum by (le) (rate(pdguard_process_seconds_bucket{direction=\"mask\"}[$__rate_interval])))",
"refId": "A",
"instant": false,
"legendFormat": "p50"
},
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "histogram_quantile(0.95, sum by (le) (rate(pdguard_process_seconds_bucket{direction=\"mask\"}[$__rate_interval])))",
"refId": "B",
"instant": false,
"legendFormat": "p95"
},
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "histogram_quantile(0.99, sum by (le) (rate(pdguard_process_seconds_bucket{direction=\"mask\"}[$__rate_interval])))",
"refId": "C",
"instant": false,
"legendFormat": "p99"
}
],
"fieldConfig": {
"defaults": {
"unit": "s",
"custom": {
"fillOpacity": 12,
"lineWidth": 2,
"showPoints": "never",
"stacking": {
"mode": "none"
}
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"legend": {
"displayMode": "table",
"placement": "bottom",
"calcs": [
"mean",
"max"
],
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}
},
{
"type": "timeseries",
"title": "p95 по системам",
"id": 20,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 9,
"w": 12,
"x": 12,
"y": 29
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "histogram_quantile(0.95, sum by (le, system) (rate(pdguard_process_seconds_bucket{direction=\"mask\"}[$__rate_interval])))",
"refId": "A",
"instant": false,
"legendFormat": "{{system}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "s",
"custom": {
"fillOpacity": 12,
"lineWidth": 2,
"showPoints": "never",
"stacking": {
"mode": "none"
}
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"description": "Какой потребитель приносит самые тяжёлые запросы.",
"options": {
"legend": {
"displayMode": "table",
"placement": "bottom",
"calcs": [
"mean",
"max"
],
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}
},
{
"type": "timeseries",
"title": "Запросы по направлениям",
"id": 21,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 38
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum by (direction) (rate(pdguard_process_seconds_count[$__rate_interval]))",
"refId": "A",
"instant": false,
"legendFormat": "{{direction}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "reqps",
"custom": {
"fillOpacity": 12,
"lineWidth": 2,
"showPoints": "never",
"stacking": {
"mode": "none"
}
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"description": "Маскирование и обратное преобразование должны идти примерно поровну: контракт проверяется парами.",
"options": {
"legend": {
"displayMode": "table",
"placement": "bottom",
"calcs": [
"mean",
"max"
],
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}
},
{
"type": "timeseries",
"title": "Предел и фактическая загрузка",
"id": 22,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 38
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "max(pdguard_concurrency_limit)",
"refId": "A",
"instant": false,
"legendFormat": "предел"
},
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(pdguard_concurrency_in_flight)",
"refId": "B",
"instant": false,
"legendFormat": "в работе"
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {
"fillOpacity": 12,
"lineWidth": 2,
"showPoints": "never",
"stacking": {
"mode": "none"
}
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"legend": {
"displayMode": "table",
"placement": "bottom",
"calcs": [
"mean",
"max"
],
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}
},
{
"type": "row",
"title": "Отказы и устойчивость",
"id": 23,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 46
},
"collapsed": false
},
{
"type": "stat",
"title": "Доля успешных ответов",
"id": 24,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 4,
"x": 0,
"y": 47
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(rate(http_server_requests_seconds_count{status=\"200\"}[$__rate_interval])) / clamp_min(sum(rate(http_server_requests_seconds_count[$__rate_interval])), 0.001)",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "percentunit",
"custom": {},
"decimals": 4,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "red",
"value": null
},
{
"color": "orange",
"value": 0.98
},
{
"color": "green",
"value": 0.999
}
]
}
},
"overrides": []
},
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Отказов по перегрузке за период",
"id": 25,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 5,
"x": 4,
"y": 47
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(increase(pdguard_requests_rejected_total{reason=\"overload\"}[$__range]))",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {},
"decimals": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "orange",
"value": 1
}
]
}
},
"overrides": []
},
"description": "Ответы 429. Допустимы под нагрузкой, но устойчивый рост означает нехватку мощности.",
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Внутренних сбоев за период",
"id": 26,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 5,
"x": 9,
"y": 47
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(increase(pdguard_requests_rejected_total{reason=\"internal_error\"}[$__range]))",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {},
"decimals": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 1
}
]
}
},
"overrides": []
},
"description": "При сбое отдаётся безопасный ответ без данных запроса. Любое ненулевое значение — повод смотреть логи.",
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Отказано системам за период",
"id": 27,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 5,
"x": 14,
"y": 47
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(increase(pdguard_requests_rejected_total{reason=~\"system_disabled|forbidden\"}[$__range]))",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {},
"decimals": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"description": "Выключенная система или неверный ключ.",
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Битых запросов за период",
"id": 28,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 5,
"x": 19,
"y": 47
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(increase(pdguard_requests_rejected_total{reason=\"malformed\"}[$__range]))",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {},
"decimals": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "timeseries",
"title": "Отказы по причинам",
"id": 29,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 52
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum by (reason) (rate(pdguard_requests_rejected_total[$__rate_interval]))",
"refId": "A",
"instant": false,
"legendFormat": "{{reason}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "reqps",
"custom": {
"fillOpacity": 45,
"lineWidth": 2,
"showPoints": "never",
"stacking": {
"mode": "normal"
}
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"legend": {
"displayMode": "table",
"placement": "bottom",
"calcs": [
"mean",
"max"
],
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}
},
{
"type": "timeseries",
"title": "Ответы по кодам",
"id": 30,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 52
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum by (status) (rate(http_server_requests_seconds_count{uri!=\"/metrics\"}[$__rate_interval]))",
"refId": "A",
"instant": false,
"legendFormat": "{{status}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "reqps",
"custom": {
"fillOpacity": 45,
"lineWidth": 2,
"showPoints": "never",
"stacking": {
"mode": "normal"
}
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"legend": {
"displayMode": "table",
"placement": "bottom",
"calcs": [
"mean",
"max"
],
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}
},
{
"type": "row",
"title": "Вторая ступень распознавания",
"id": 31,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 60
},
"collapsed": false
},
{
"type": "stat",
"title": "Доля обращений, дошедших до модели",
"id": 32,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 5,
"x": 0,
"y": 61
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(rate(pdguard_ner_requests_total{outcome=\"engaged\"}[$__rate_interval])) / clamp_min(sum(rate(pdguard_process_seconds_count{direction=\"mask\"}[$__rate_interval])), 0.001)",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "percentunit",
"custom": {},
"decimals": 3,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"description": "От неё зависит, посильна ли тяжёлая модель: вызов стоит на два порядка дороже правил.",
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Участков на обращение",
"id": 33,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 5,
"x": 5,
"y": 61
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(rate(pdguard_ner_candidates_total[$__rate_interval])) / clamp_min(sum(rate(pdguard_ner_requests_total{outcome=\"engaged\"}[$__rate_interval])), 0.001)",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {},
"decimals": 2,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "p95 второй ступени",
"id": 34,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 5,
"x": 10,
"y": 61
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "histogram_quantile(0.95, sum by (le) (rate(pdguard_ner_duration_seconds_bucket[$__rate_interval])))",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "s",
"custom": {},
"decimals": 4,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Пул был занят за период",
"id": 35,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 4,
"x": 15,
"y": 61
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(increase(pdguard_ner_requests_total{outcome=\"busy\"}[$__range]))",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {},
"decimals": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "orange",
"value": 1
}
]
}
},
"overrides": []
},
"description": "Запрос обошёлся правилами, не дожидаясь модели. Рост означает нехватку распознавателей.",
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Разобрано правилами за период",
"id": 36,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 5,
"x": 19,
"y": 61
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(increase(pdguard_ner_requests_total{outcome=\"no_candidates\"}[$__range]))",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {},
"decimals": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "timeseries",
"title": "Исходы обращений ко второй ступени",
"id": 37,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 66
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum by (outcome) (rate(pdguard_ner_requests_total[$__rate_interval]))",
"refId": "A",
"instant": false,
"legendFormat": "{{outcome}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "reqps",
"custom": {
"fillOpacity": 45,
"lineWidth": 2,
"showPoints": "never",
"stacking": {
"mode": "normal"
}
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"legend": {
"displayMode": "table",
"placement": "bottom",
"calcs": [
"mean",
"max"
],
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}
},
{
"type": "timeseries",
"title": "Время второй ступени",
"id": 38,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 66
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "histogram_quantile(0.50, sum by (le) (rate(pdguard_ner_duration_seconds_bucket[$__rate_interval])))",
"refId": "A",
"instant": false,
"legendFormat": "p50"
},
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "histogram_quantile(0.95, sum by (le) (rate(pdguard_ner_duration_seconds_bucket[$__rate_interval])))",
"refId": "B",
"instant": false,
"legendFormat": "p95"
}
],
"fieldConfig": {
"defaults": {
"unit": "s",
"custom": {
"fillOpacity": 12,
"lineWidth": 2,
"showPoints": "never",
"stacking": {
"mode": "none"
}
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"legend": {
"displayMode": "table",
"placement": "bottom",
"calcs": [
"mean",
"max"
],
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}
},
{
"type": "row",
"title": "Ресурсы узла",
"id": 39,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 74
},
"collapsed": false
},
{
"type": "stat",
"title": "Процессор",
"id": 40,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 4,
"x": 0,
"y": 75
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "process_cpu_usage",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "percentunit",
"custom": {},
"decimals": 3,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "orange",
"value": 0.7
},
{
"color": "red",
"value": 0.9
}
]
}
},
"overrides": []
},
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Куча занята",
"id": 41,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 4,
"x": 4,
"y": 75
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum(jvm_memory_used_bytes{area=\"heap\"})",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "bytes",
"custom": {},
"decimals": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Потоков",
"id": 42,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 4,
"x": 8,
"y": 75
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "jvm_threads_live_threads",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {},
"decimals": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Пауза сборщика, максимум",
"id": 43,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 4,
"x": 12,
"y": 75
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "max(jvm_gc_pause_seconds_max)",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "s",
"custom": {},
"decimals": 4,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "orange",
"value": 0.1
},
{
"color": "red",
"value": 0.5
}
]
}
},
"overrides": []
},
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Время работы узла",
"id": 44,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 4,
"x": 16,
"y": 75
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "max(process_uptime_seconds)",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "s",
"custom": {},
"decimals": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "stat",
"title": "Узлов на связи",
"id": 45,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 5,
"w": 4,
"x": 20,
"y": 75
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "count(up{job=~\"pd-guard.*\"} == 1)",
"refId": "A",
"instant": false
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"custom": {},
"decimals": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "red",
"value": null
},
{
"color": "green",
"value": 1
}
]
}
},
"overrides": []
},
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto",
"colorMode": "value",
"graphMode": "area"
}
},
{
"type": "timeseries",
"title": "Память по областям",
"id": 46,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 80
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum by (area) (jvm_memory_used_bytes)",
"refId": "A",
"instant": false,
"legendFormat": "{{area}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "bytes",
"custom": {
"fillOpacity": 12,
"lineWidth": 2,
"showPoints": "never",
"stacking": {
"mode": "none"
}
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"legend": {
"displayMode": "table",
"placement": "bottom",
"calcs": [
"mean",
"max"
],
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}
},
{
"type": "timeseries",
"title": "Паузы сборщика мусора",
"id": 47,
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 80
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PDGUARD_PROM"
},
"expr": "sum by (cause) (rate(jvm_gc_pause_seconds_sum[$__rate_interval]))",
"refId": "A",
"instant": false,
"legendFormat": "{{cause}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "s",
"custom": {
"fillOpacity": 12,
"lineWidth": 2,
"showPoints": "never",
"stacking": {
"mode": "none"
}
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "text",
"value": null
}
]
}
},
"overrides": []
},
"description": "Доля времени, проведённого в паузах. Растёт вместе с задержкой ответа.",
"options": {
"legend": {
"displayMode": "table",
"placement": "bottom",
"calcs": [
"mean",
"max"
],
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}
}
]
}