Перейти к содержанию

Приложение. Исходные тексты схем 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/>ручной сбор при инциденте"]