- DLP Endpoint Monitoring diagram with data flows - Browser Domains Monitoring with categorization - WebUI Russian Localization patches structure - DLP Events Aggregation pipeline - Prometheus Metrics Exporter architecture - System overview with all components and connections Generated with [Devin](https://cli.devin.ai/docs) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
339 lines
14 KiB
Markdown
339 lines
14 KiB
Markdown
# ActivityWatch-Russian - Обзор компонентов и связей
|
|
|
|
## Полная архитектура системы
|
|
|
|
```mermaid
|
|
graph TB
|
|
subgraph "Windows Clients"
|
|
subgraph "Workstation 1"
|
|
W1A[DLP Endpoint Collector]
|
|
W1B[Browser Domains Collector]
|
|
W1C[Email Outbound Collector]
|
|
W1D[Worktime Session Collector]
|
|
end
|
|
|
|
subgraph "Workstation 2"
|
|
W2A[DLP Endpoint Collector]
|
|
W2B[Browser Domains Collector]
|
|
W2C[Email Outbound Collector]
|
|
end
|
|
end
|
|
|
|
subgraph "Linux Server"
|
|
S1[ActivityWatch Server]
|
|
S2[PostgreSQL Database]
|
|
S3[WebUI with RU Patches]
|
|
end
|
|
|
|
subgraph "Integration Layer"
|
|
I1[pfSense Poller]
|
|
I2[DLP Aggregation Scripts]
|
|
I3[Prometheus Exporter]
|
|
end
|
|
|
|
subgraph "Monitoring Stack"
|
|
M1[Prometheus]
|
|
M2[Grafana]
|
|
M3[SQL Exporter]
|
|
end
|
|
|
|
subgraph "External Systems"
|
|
E1[pfSense Firewall]
|
|
E2[Domain Controller]
|
|
end
|
|
|
|
W1A -->|Events| S1
|
|
W1B -->|Events| S1
|
|
W1C -->|Events| S1
|
|
W1D -->|Events| S1
|
|
W2A -->|Events| S1
|
|
W2B -->|Events| S1
|
|
W2C -->|Events| S1
|
|
|
|
S1 -->|Store| S2
|
|
S1 -->|Serve| S3
|
|
|
|
I1 -->|Logs| E1
|
|
I1 -->|Events| S1
|
|
|
|
I2 -->|Read/Write| S2
|
|
I2 -->|Read| S1
|
|
|
|
I3 -->|Metrics| S1
|
|
I3 -->|Scrape| M1
|
|
|
|
M1 -->|Query| I3
|
|
M2 -->|Query| M1
|
|
M2 -->|Query| S2
|
|
M3 -->|Query| S2
|
|
|
|
E2 -->|Deploy| W1A
|
|
E2 -->|Deploy| W1B
|
|
E2 -->|Deploy| W1C
|
|
E2 -->|Deploy| W2A
|
|
E2 -->|Deploy| W2B
|
|
E2 -->|Deploy| W2C
|
|
|
|
style S1 fill:#4ecdc4
|
|
style S2 fill:#ff6b6b
|
|
style M1 fill:#ffe66d
|
|
style M2 fill:#95e1d3
|
|
```
|
|
|
|
## Матрица связей компонентов
|
|
|
|
| Компонент | Тип | Подключается к | Протокол | Назначение |
|
|
|-----------|-----|----------------|-----------|------------|
|
|
| DLP Endpoint Collector | Windows Client | AW Server | HTTP API | Отправка DLP событий |
|
|
| Browser Domains Collector | Windows Client | AW Server | HTTP API | Отправка браузерных событий |
|
|
| Email Outbound Collector | Windows Client | AW Server | HTTP API | Отправка email событий |
|
|
| Worktime Session Collector | Windows Client | AW Server | HTTP API | Отправка сессий |
|
|
| ActivityWatch Server | Server | PostgreSQL | TCP | Хранение данных |
|
|
| ActivityWatch Server | Server | WebUI | HTTP | Отдача интерфейса |
|
|
| pfSense Poller | Integration | pfSense | HTTP API | Сбор логов firewall |
|
|
| pfSense Poller | Integration | AW Server | HTTP API | Отправка событий |
|
|
| DLP Aggregation | Integration | PostgreSQL | TCP | Обработка событий |
|
|
| DLP Aggregation | Integration | AW Server | HTTP API | Чтение событий |
|
|
| Prometheus Exporter | Integration | AW Server | HTTP API | Сбор метрик |
|
|
| Prometheus Exporter | Integration | Prometheus | HTTP | Отдача метрик |
|
|
| Prometheus | Monitoring | Exporter | HTTP | Scraping метрик |
|
|
| Grafana | Monitoring | Prometheus | HTTP | Запросы метрик |
|
|
| Grafana | Monitoring | PostgreSQL | TCP | Прямые запросы |
|
|
| SQL Exporter | Monitoring | PostgreSQL | TCP | SQL запросы |
|
|
|
|
## Потоки данных по уровням
|
|
|
|
### Уровень 1: Сбор данных (Windows)
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ Windows Clients │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ Workstation 1 Workstation 2 Workstation N │
|
|
│ ┌─────────────┐ ┌─────────────┐ ┌──────────┐ │
|
|
│ │ DLP Collector│ │ DLP Collector│ │ DLP Coll.│ │
|
|
│ │ Browser Coll.│ │ Browser Coll.│ │ Browser │ │
|
|
│ │ Email Coll. │ │ Email Coll. │ │ Email │ │
|
|
│ │ Worktime │ │ │ │ │ │
|
|
│ └──────┬──────┘ └──────┬──────┘ └────┬─────┘ │
|
|
│ │ │ │ │
|
|
│ └──────────────────────┼───────────────────┘ │
|
|
│ │ │
|
|
└────────────────────────────────┼────────────────────────────┘
|
|
│ HTTP API
|
|
▼
|
|
```
|
|
|
|
### Уровень 2: Хранение и обработка (Linux)
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ Linux Server Layer │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ ┌───────────────┐ │
|
|
│ │ AW Server │◄────── Events │
|
|
│ │ (Rust) │ │
|
|
│ └───────┬───────┘ │
|
|
│ │ Store │
|
|
│ ▼ │
|
|
│ ┌───────────────┐ │
|
|
│ │ PostgreSQL │ │
|
|
│ └───────┬───────┘ │
|
|
│ │ │
|
|
└────────────────────────────┼───────────────────────────────┘
|
|
│
|
|
▼
|
|
```
|
|
|
|
### Уровень 3: Интеграции
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ Integration Layer │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|
│ │ pfSense │ │ DLP Aggreg. │ │ Prometheus │ │
|
|
│ │ Poller │ │ Scripts │ │ Exporter │ │
|
|
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
|
|
│ │ │ │ │
|
|
│ ▼ ▼ ▼ │
|
|
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|
│ │ pfSense FW │ │ PostgreSQL │ │ AW Server │ │
|
|
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
|
│ │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
### Уровень 4: Визуализация
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ Monitoring & Visualization │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|
│ │ Prometheus │◄───┤ Exporter │ │ Grafana │ │
|
|
│ │ │ │ │ │ │ │
|
|
│ └──────┬───────┘ └──────────────┘ └──────┬───────┘ │
|
|
│ │ │ │
|
|
│ │ Query │ Query │
|
|
│ ▼ ▼ │
|
|
│ ┌──────────────┐ ┌──────────────┐ │
|
|
│ │ Grafana │ │ PostgreSQL │ │
|
|
│ │ Dashboards │ │ │ │
|
|
│ └──────────────┘ └──────────────┘ │
|
|
│ │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
## Сценарии использования
|
|
|
|
### Сценарий 1: DLP инцидент
|
|
```
|
|
User copies sensitive data
|
|
↓
|
|
DLP Endpoint Collector detects
|
|
↓
|
|
Evaluates against rules
|
|
↓
|
|
Creates incident event
|
|
↓
|
|
Sends to AW Server
|
|
↓
|
|
Stored in PostgreSQL
|
|
↓
|
|
Aggregated by scripts
|
|
↓
|
|
Visible in Grafana DLP Dashboard
|
|
```
|
|
|
|
### Сценарий 2: Мониторинг браузера
|
|
```
|
|
User visits website
|
|
↓
|
|
Browser Domains Collector detects
|
|
↓
|
|
Extracts domain
|
|
↓
|
|
Categorizes website
|
|
↓
|
|
Checks DLP rules
|
|
↓
|
|
Sends event to AW Server
|
|
↓
|
|
Visible in WebUI Dashboard
|
|
```
|
|
|
|
### Сценарий 3: Метрики
|
|
```
|
|
Prometheus scrapes Exporter
|
|
↓
|
|
Exporter queries AW API
|
|
↓
|
|
Collects metrics
|
|
↓
|
|
Returns in Prometheus format
|
|
↓
|
|
Prometheus stores metrics
|
|
↓
|
|
Grafana visualizes in dashboards
|
|
```
|
|
|
|
## Зависимости развертывания
|
|
|
|
### Минимальная конфигурация
|
|
```
|
|
1 Linux Server:
|
|
- ActivityWatch Server
|
|
- PostgreSQL
|
|
- WebUI with patches
|
|
|
|
1+ Windows Workstations:
|
|
- DLP Endpoint Collector
|
|
- Browser Domains Collector
|
|
- Email Outbound Collector
|
|
```
|
|
|
|
### Полная конфигурация
|
|
```
|
|
1 Linux Server:
|
|
- ActivityWatch Server
|
|
- PostgreSQL
|
|
- WebUI with patches
|
|
- DLP Aggregation Scripts
|
|
- Prometheus Exporter
|
|
|
|
1+ Windows Workstations:
|
|
- DLP Endpoint Collector
|
|
- Browser Domains Collector
|
|
- Email Outbound Collector
|
|
- Worktime Session Collector
|
|
|
|
1 pfSense Firewall:
|
|
- pfSense Poller
|
|
|
|
1 Monitoring Server:
|
|
- Prometheus
|
|
- Grafana
|
|
- SQL Exporter
|
|
```
|
|
|
|
## Порты и протоколы
|
|
|
|
| Компонент | Порт | Протокол | Направление |
|
|
|-----------|------|----------|-------------|
|
|
| ActivityWatch API | 5600 | HTTP | Inbound |
|
|
| ActivityWatch WebSocket | 5666 | WebSocket | Inbound |
|
|
| PostgreSQL | 5432 | TCP | Inbound |
|
|
| Prometheus | 9090 | HTTP | Inbound |
|
|
| Grafana | 3000 | HTTP | Inbound |
|
|
| Prometheus Exporter | 9398 | HTTP | Inbound |
|
|
| pfSense API | 443 | HTTPS | Outbound |
|
|
|
|
## Резервное копирование
|
|
|
|
### PostgreSQL Backup
|
|
```bash
|
|
# Daily backup
|
|
pg_dump activitywatch > backup_$(date +%Y%m%d).sql
|
|
|
|
# Restore
|
|
psql activitywatch < backup_20240101.sql
|
|
```
|
|
|
|
### AW Server Backup
|
|
```bash
|
|
# Backup SQLite databases (if used)
|
|
cp /var/lib/activitywatch/*.db /backup/
|
|
|
|
# Backup configuration
|
|
cp /etc/activitywatch/config.toml /backup/
|
|
```
|
|
|
|
## Масштабирование
|
|
|
|
### Горизонтальное масштабирование
|
|
- Добавление Windows workstation не требует изменений сервера
|
|
- Каждый workstation автономно отправляет события
|
|
- Server обрабатывает события от множества клиентов
|
|
|
|
### Вертикальное масштабирование
|
|
- Увеличение ресурсов PostgreSQL для больших объемов данных
|
|
- Разделение AW Server и PostgreSQL на разные машины
|
|
- Добавление реплик PostgreSQL для высокой доступности
|
|
|
|
## Мониторинг системы
|
|
|
|
### Ключевые метрики
|
|
- Количество активных хостов
|
|
- Скорость поступления событий
|
|
- Размер базы данных
|
|
- Latency обработки событий
|
|
- Статус коллекторов
|
|
|
|
### Алерты
|
|
- Коллектор неактивен > 5 минут
|
|
- Высокий процент DLP инцидентов
|
|
- PostgreSQL connection pool exhausted
|
|
- Диск > 80% заполнен
|
|
- AW Server недоступен
|