Files
AWatch-rus/docs/architecture-simple.md
T
igor04091968andDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> db1998c428 docs(architecture): add readable architecture diagrams
- Add Mermaid diagram for high-level architecture
- Add simple ASCII architecture for quick understanding
- Document data flows for all monitoring scenarios
- Include deployment steps and port mappings
- Add quick start guide and key scenarios

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-05 01:46:50 +03:00

14 KiB

ActivityWatch-Russian - Простая архитектура

Общая схема (сверху вниз)

┌─────────────────────────────────────────────────────────────────┐
│                        ПОЛЬЗОВАТЕЛИ                              │
│                    (Windows рабочие станции)                     │
└──────────────────────────┬──────────────────────────────────────┘
                           │
                           │ Коллекторы (PowerShell)
                           │
┌──────────────────────────▼──────────────────────────────────────┐
│              Windows Collectors (на каждой машине)               │
├──────────────────────────────────────────────────────────────────┤
│  • DLP Endpoint Collector   - буфер, печать, USB                 │
│  • Browser Domains Collector - посещаемые сайты                  │
│  • Email Outbound Collector - исходящая почта                    │
│  • Worktime Session Collector - рабочее время                   │
└──────────────────────────┬──────────────────────────────────────┘
                           │
                           │ HTTP API (отправка событий)
                           │
┌──────────────────────────▼──────────────────────────────────────┐
│                  ActivityWatch Server (Linux)                    │
├──────────────────────────────────────────────────────────────────┤
│  • Принимает события от коллекторов                              │
│  • Хранит в базе данных                                          │
│  • Предоставляет WebUI и API                                     │
└──────────────────────────┬──────────────────────────────────────┘
                           │
                           │ Хранение данных
                           │
┌──────────────────────────▼──────────────────────────────────────┐
│                    PostgreSQL Database                           │
├──────────────────────────────────────────────────────────────────┤
│  • События активности                                            │
│  • DLP инциденты                                                 │
│  • Метаданные хостов и пользователей                             │
└──────────────────────────┬──────────────────────────────────────┘
                           │
                           │ Чтение/Обработка
                           │
┌──────────────────────────▼──────────────────────────────────────┐
│                 Обработка и Агрегация                            │
├──────────────────────────────────────────────────────────────────┤
│  • aggregate_dlp_events.py   - агрегация DLP событий             │
│  • pfSense Poller            - логи firewall                    │
│  • Prometheus Exporter       - метрики для мониторинга           │
└──────────────────────────┬──────────────────────────────────────┘
                           │
                           │ Визуализация
                           │
┌──────────────────────────▼──────────────────────────────────────┐
│                 Grafana + Prometheus Stack                       │
├──────────────────────────────────────────────────────────────────┤
│  • Prometheus  - сбор метрик                                     │
│  • Grafana     - дашборды и визуализация                         │
│  • SQL Exporter - прямой доступ к PostgreSQL                     │
└──────────────────────────────────────────────────────────────────┘

Потоки данных (по направлениям)

Поток 1: DLP мониторинг

Пользователь → DLP Collector → Проверка правил → AW Server → PostgreSQL → Grafana

Поток 2: Мониторинг браузеров

Браузер → Browser Collector → Категоризация → AW Server → WebUI Dashboard

Поток 3: Мониторинг почты

Outlook/SMTP → Email Collector → Проверка правил → AW Server → Grafana

Поток 4: pfFirewall логи

pfSense → Poller (Python) → HTTP API → AW Server → Grafana

Поток 5: Метрики

AW Server → Exporter (Python) → /metrics → Prometheus → Grafana

Компоненты по уровням

Уровень 1: Сбор данных (Windows)

┌─────────────────────────────────────┐
│  Windows Collectors (PowerShell)    │
│  ┌───────────────────────────────┐  │
│  │ • dlp-endpoint-signals-collector│  │
│  │ • browser-domains-collector    │  │
│  │ • email-outbound-collector     │  │
│  │ • worktime-session-collector   │  │
│  └───────────────────────────────┘  │
└─────────────────────────────────────┘

Уровень 2: Хранение и обработка (Linux Server)

┌─────────────────────────────────────┐
│  ActivityWatch Server + PostgreSQL  │
│  ┌───────────────────────────────┐  │
│  │ • aw-server (Rust)            │  │
│  │ • PostgreSQL Database        │  │
│  │ • WebUI (с RU патчами)        │  │
│  └───────────────────────────────┘  │
└─────────────────────────────────────┘

Уровень 3: Интеграции и обработка

┌─────────────────────────────────────┐
│  Интеграции и Скрипты (Python)       │
│  ┌───────────────────────────────┐  │
│  │ • aggregate_dlp_events.py    │  │
│  │ • pfsense-aw-poller.py        │  │
│  │ • aw_activitywatch_exporter   │  │
│  └───────────────────────────────┘  │
└─────────────────────────────────────┘

Уровень 4: Визуализация и мониторинг

┌─────────────────────────────────────┐
│  Grafana + Prometheus (Docker)       │
│  ┌───────────────────────────────┐  │
│  │ • Prometheus (порт 9090)       │  │
│  │ • Grafana (порт 3000)          │  │
│  │ • SQL Exporter (порт 9398)    │  │
│  └───────────────────────────────┘  │
└─────────────────────────────────────┘

Развертывание

На Windows рабочих станциях

1. Установка ActivityWatch (через InnoSetup installer)
2. Развертывание коллекторов (deploy-domain-users.ps1)
3. Настройка scheduled tasks
4. Конфигурация DLP политик

На Linux сервере

1. Установка ActivityWatch Server
2. Настройка PostgreSQL
3. Применение RU патчей к WebUI
4. Запуск скриптов агрегации
5. Запуск Prometheus Exporter

Мониторинг стек

1. Docker Compose развертывание
2. Настройка Prometheus scrape config
3. Импорт Grafana дашбордов
4. Настройка алертов

Ключевые файлы

ActivityWatch-Russian/
├── windows/                    # Windows коллекторы
│   ├── dlp-endpoint-signals-collector.ps1
│   ├── browser-domains-native-collector.ps1
│   ├── email-outbound-collector.ps1
│   └── deploy-domain-users.ps1
│
├── scripts/                    # Серверные скрипты
│   └── aggregate_dlp_events.py
│
├── aw-server/                  # Патчи WebUI
│   └── aw-ru-patch.js
│
├── pfsense/                    # Интеграция pfSense
│   └── pfsense-aw-poller.py
│
└── grafana-1c/                 # Мониторинг стек
    ├── docker-compose.yml
    ├── prometheus/prometheus.yml
    └── grafana/dashboards/

Порты

Компонент Порт Протокол
ActivityWatch WebUI 5600 HTTP
ActivityWatch API 5666 WebSocket
Prometheus 9090 HTTP
Prometheus Exporter 9398 HTTP
Grafana 3000 HTTP
PostgreSQL 5432 TCP

Быстрый старт

Запуск мониторинг стека

cd grafana-1c
docker-compose up -d

Развертывание на Windows

.\windows\deploy-domain-users.ps1

Агрегация DLP событий

python3 scripts/aggregate_dlp_events.py

Связи между компонентами

Windows Collectors
    │
    ├─► ActivityWatch Server (HTTP API)
    │       │
    │       ├─► PostgreSQL (хранение)
    │       │
    │       ├─► WebUI (RU патчи)
    │       │
    │       └─► Prometheus Exporter (метрики)
    │               │
    │               └─► Prometheus
    │                       │
    │                       └─► Grafana
    │
pfSense Firewall
    │
    └─► pfSense Poller
            │
            └─► ActivityWatch Server
                    │
                    └─► PostgreSQL

Основные сценарии

Сценарий 1: Пользователь копирует конфиденциальные данные

1. Пользователь копирует текст в буфер обмена
2. DLP Collector перехватывает событие
3. Проверка по DLP правилам
4. При совпадении → скриншот + запись инцидента
5. Отправка в ActivityWatch Server
6. Сохранение в PostgreSQL
7. Отображение в Grafana DLP Dashboard

Сценарий 2: Пользователь посещает запрещенный сайт

1. Пользователь открывает сайт в браузере
2. Browser Collector определяет домен
3. Проверка по спискам и DLP правилам
4. Категоризация сайта
5. Отправка события в ActivityWatch
6. Отображение в WebUI Dashboard

Сценарий 3: Мониторинг метрик

1. Prometheus Exporter опрашивает AW API
2. Сбор метрик (события, хосты, коллекторы)
3. Экспорт в формате Prometheus
4. Prometheus scrapes endpoint /metrics
5. Grafana строит графики