Приложение. Исходные тексты схем Mermaid¶
Приложение содержит исходный Mermaid-код графических схем И3. Диаграммы остаются в основных разделах и приложениях документа, а этот раздел предназначен для копирования, проверки и редактирования кода схем в Mermaid-редакторе.
Перечень схем¶
| Код | Раздел / приложение | Расположение |
|---|---|---|
| И3-MER-001 | 1.1. Назначение и логика работы системы | Раздел 1. Общие сведения о системе |
| И3-MER-002 | 1.2. Ландшафты и схема размещения, схема 2 | Раздел 1. Общие сведения о системе |
| И3-MER-003 | 1.2. Ландшафты и схема размещения, схема 3 | Раздел 1. Общие сведения о системе |
| И3-MER-004 | Раздел 2. Администрирование системы | Раздел 2. Администрирование системы |
| И3-MER-005 | 1. Общая схема сбора | Приложение. Метрики мониторинга |
| И3-MER-006 | 9. Система логирования | Приложение. Метрики мониторинга |
Исходные тексты Mermaid¶
И3-MER-001. 1.1. Назначение и логика работы системы¶
Расположение схемы: Раздел 1. Общие сведения о системе.
flowchart LR
user["Пользователь<br/>администратор, эксперт, аналитик, ОТиПБ"]
keycloak["Keycloak / OIDC"]
ui["ui-nginx + Web UI"]
gateway["ui-rest-to-gprc<br/>REST / GraphQL / WebSocket"]
stat["statistics<br/>пользователи, камеры, события, отчёты, аудит"]
inf["inference<br/>медиасервер, балансировщик, NRI"]
svr["severstal<br/>ПК-КОТ, CSVN/VMS, АСУ ТП, сценарии"]
ds["data-storage<br/>MinIO / DTS"]
kafka["Kafka<br/>события, команды, heartbeat"]
obs["elk-log<br/>Prometheus / Loki"]
user --> keycloak --> ui --> gateway
gateway --> stat
gateway --> inf
gateway --> svr
stat <--> kafka
inf <--> kafka
svr <--> kafka
stat --> ds
inf --> ds
svr --> ds
stat --> obs
inf --> obs
svr --> obs
И3-MER-002. 1.2. Ландшафты и схема размещения, схема 2¶
Расположение схемы: Раздел 1. Общие сведения о системе.
flowchart LR
dev["DEV-контур<br/>10.114.47.6<br/>1 машина, без кластера"]
test["TEST-контур<br/>10.114.47.2<br/>1 мастер + 2 вычислительные ноды"]
prod["PROD-контур<br/>10.97.145.147<br/>1 мастер + 11 вычислительных нод"]
dev -->|"перенос версии и конфигурации"| test
test -->|"после проверки"| prod
И3-MER-003. 1.2. Ландшафты и схема размещения, схема 3¶
Расположение схемы: Раздел 1. Общие сведения о системе.
flowchart TB
classDef external fill:#e3f2fd,stroke:#1565c0,stroke-width:2px,color:#0d47a1;
classDef node fill:#e8f5e9,stroke:#2e7d32,stroke-width:3px,color:#1b5e20;
classDef container fill:#c8e6c9,stroke:#388e3c,stroke-width:1px,color:#1b5e20;
classDef backend fill:#f3e5f5,stroke:#6a1b9a,stroke-width:2px,color:#4a148c;
classDef lb fill:#fff8e1,stroke:#f9a825,stroke-width:2px,color:#e65100;
classDef storage fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#bf360c;
classDef monitor fill:#eceff1,stroke:#37474f,stroke-width:2px,color:#263238;
classDef network fill:#fce4ec,stroke:#c62828,stroke-width:2px,color:#b71c1c,stroke-dasharray:5 5;
classDef sandbox fill:#fff7ed,stroke:#c2410c,stroke-width:2px,color:#7c2d12;
subgraph EXTERNAL["Внешние системы"]
direction TB
EXT_USERS["Пользователи, камеры,<br>CSVN/VMS, ПК-КОТ,<br>АСУ ТП, OIDC, SMTP"]:::external
REGISTRY["GitLab / Registry<br>артефакты поставки"]:::external
end
PUBLISHED["Публикуемые входы PROD<br>10.97.145.147<br>HTTP/HTTPS, RTSP, архивы"]:::external
MASTER_APP["Мастер-нода / Swarm manager<br>ctd-sova-cpu02.severstal.<br>severstalgroup.com<br>labels: db, rest<br>UI/API: ui-nginx, ui-react, ui-rest-to-gprc<br>Backend: statistics, severstal<br>CODE: ~/CODE/box3"]:::node
subgraph COMPUTE["Вычислительный GPU-контур<br>Docker label: inference"]
direction TB
INF_CTRL["Inference control-plane<br>inf-load-balancer, inf-monitoring,<br>inf-image-storage, inf-flows-manager,<br>svr-models-registry, converters,<br>report-video-extractor, Guardant, Coturn"]:::lb
subgraph GPU_NODES["Вычислительные GPU-ноды PROD (11)"]
direction LR
subgraph CTD["CTD GPU-ноды (6)<br>ctd-sova-gpu01, 02, 03, 04, 05, 11"]
direction TB
CTD_RUNTIME["inf-mediaserver -> IPC/tmpfs<br>-> inf-nri-inference -> модели AI<br>/converted, /mnt/ram0, /tsm_tmpfs"]:::node
CTD_SANDBOX["Node-RED Sandbox<br>размещён на CTD GPU-ноде<br>nr-sbx-nginx, nr-sbx-frontend,<br>nr-sbx-backend, nr-sbx-node-red-vl,<br>nr-sbx-nri, nr-sbx-kafka,<br>nr-sbx-redis, nr-sbx-celery,<br>nr-sbx-flower, nr-sbx-mm-conversion,<br>nr-sbx-yolo-conversion<br>labels: nr_sandbox,<br>flows_manager, events_validator"]:::sandbox
end
METIZ["Metiz GPU-нода (1)<br>metiz-sova-gpu1<br>inf-mediaserver -> IPC/tmpfs<br>-> inf-nri-inference -> модели AI<br>/converted, /mnt/ram0, /tsm_tmpfs"]:::node
BLG["BLG GPU-ноды (4)<br>blg-sova-gpu01, 02, 03, 04<br>inf-mediaserver -> IPC/tmpfs<br>-> inf-nri-inference -> модели AI<br>/converted, /mnt/ram0, /tsm_tmpfs"]:::node
end
end
MASTER_DATA["Хранилища и шины мастер-ноды<br>PostgreSQL/Redis, ClickHouse,<br>MinIO/DTS, inf-kafka,<br>runtime YAML/config state"]:::storage
OBS["Мониторинг и логи<br>log-prometheus, log-loki"]:::monitor
subgraph SUPPORT["Эксплуатационный обмен"]
direction TB
NETWORK["Логические сети<br>Docker Swarm overlay bx_default,<br>node-red-sandbox,<br>per-node COMPOSE_DATA"]:::network
GRAFANA["Grafana заказчика<br>показатели и логи"]:::external
end
EXT_USERS ==>|"вход"| PUBLISHED
PUBLISHED ==>|"HTTP(S)"| MASTER_APP
PUBLISHED ==>|"RTSP/файлы"| COMPUTE
EXT_USERS <-->|"справочники,<br>статусы, OIDC/SMTP"| MASTER_APP
REGISTRY -.->|"образы"| MASTER_APP
MASTER_APP ==>|"API"| COMPUTE
MASTER_APP ==>|"/sandbox/"| CTD_SANDBOX
MASTER_APP ==>|"данные"| MASTER_DATA
INF_CTRL ==>|"камеры, flows,<br>модели"| GPU_NODES
GPU_NODES ==>|"events, media"| MASTER_DATA
CTD_SANDBOX -.->|"сценарии,<br>модели, ассеты"| MASTER_DATA
MASTER_APP -.->|"metrics/logs"| OBS
MASTER_DATA -.->|"metrics/logs"| OBS
COMPUTE -.->|"metrics/logs"| OBS
CTD_SANDBOX -.->|"metrics/logs"| OBS
MASTER_DATA ==>|"витрины ClickHouse"| GRAFANA
OBS ==>|"показатели и логи"| GRAFANA
MASTER_APP -.-> NETWORK
COMPUTE -.-> NETWORK
CTD_SANDBOX -.-> NETWORK
class COMPUTE node;
class SUPPORT network;
И3-MER-004. Раздел 2. Администрирование системы¶
Расположение схемы: Раздел 2. Администрирование системы.
flowchart LR
admin["Администратор"]
sso["Внешний контур авторизации<br/>Keycloak"]
ui["Web UI BOX5-DIT-MGSN<br/>рабочие разделы"]
gateway["ui-nginx + ui-rest-to-gprc<br/>/api/*"]
auth["st-auth<br/>профили и роли пользователей"]
access["st-access<br/>права на камеры и объекты"]
camera["st-camera-storage<br/>камеры, объекты, сценарии"]
inference["inference<br/>балансировка, мониторинг, модели"]
audit["st-audit<br/>журнал действий"]
host["Хост поставки<br/>compose.sh, docker, data"]
admin --> sso --> ui --> gateway
gateway --> auth
gateway --> access
gateway --> camera
gateway --> inference
gateway --> audit
admin --> host
host --> gateway
host --> inference
И3-MER-005. 1. Общая схема сбора¶
Расположение схемы: Приложение. Метрики мониторинга.
flowchart LR
services["Сервисы BOX5-DIT-MGSN<br/>GET /metrics"] --> prom["log-prometheus<br/>Prometheus TSDB"]
push["inf-pushgateway<br/>агрегированные samples"] --> prom
logs["Docker logs"] --> loki["log-loki<br/>журналы контейнеров"]
clickhouse["ClickHouse<br/>бизнес-метрики<br/>события, счётчики, витрины"] --> grafana["Grafana заказчика<br/>внешний мониторинг"]
prom -.->|"при согласованном подключении"| grafana
И3-MER-006. 9. Система логирования¶
Расположение схемы: Приложение. Метрики мониторинга.
flowchart LR
app["Сервис BOX5-DIT-MGSN<br/>stdout / stderr"] --> docker["Docker log driver"]
docker -->|"loki"| loki["log-loki<br/>/loki/api/v1/push"]
docker -.->|"local / none<br/>исключения"| local["docker logs<br/>локальные файлы Docker"]
loki --> grafana["Grafana Loki datasource<br/>поиск по labels"]
filelogs["Диагностические файловые логи<br/>NRI/TSM, report-video-extractor"] -.-> admin["администратор<br/>ручной сбор при инциденте"]