From eb83a8b08faa980ee3ff95b754615f690d7378f6 Mon Sep 17 00:00:00 2001 From: igor04091968 Date: Tue, 5 May 2026 01:56:30 +0300 Subject: [PATCH] docs(wiki): add GitHub wiki pages for documentation - Home page with navigation and quick start - Architecture overview with layers and data flows - Components documentation for all system parts - Interactive map guide with usage instructions - DLP Endpoint Monitoring detailed guide - Browser Domains Monitoring guide - WebUI Russian Patches documentation - Windows Installation guide - Server Setup guide - Monitoring Setup with Prometheus/Grafana Generated with [Devin](https://cli.devin.ai/docs) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- docs/wiki/Architecture.md | 71 ++++++ docs/wiki/Browser-Domains-Monitoring.md | 145 ++++++++++++ docs/wiki/Components.md | 108 +++++++++ docs/wiki/DLP-Endpoint-Monitoring.md | 124 ++++++++++ docs/wiki/Home.md | 79 +++++++ docs/wiki/Interactive-Map.md | 78 +++++++ docs/wiki/Monitoring-Setup.md | 292 ++++++++++++++++++++++++ docs/wiki/Server-Setup.md | 248 ++++++++++++++++++++ docs/wiki/WebUI-Russian-Patches.md | 131 +++++++++++ docs/wiki/Windows-Installation.md | 172 ++++++++++++++ 10 files changed, 1448 insertions(+) create mode 100644 docs/wiki/Architecture.md create mode 100644 docs/wiki/Browser-Domains-Monitoring.md create mode 100644 docs/wiki/Components.md create mode 100644 docs/wiki/DLP-Endpoint-Monitoring.md create mode 100644 docs/wiki/Home.md create mode 100644 docs/wiki/Interactive-Map.md create mode 100644 docs/wiki/Monitoring-Setup.md create mode 100644 docs/wiki/Server-Setup.md create mode 100644 docs/wiki/WebUI-Russian-Patches.md create mode 100644 docs/wiki/Windows-Installation.md diff --git a/docs/wiki/Architecture.md b/docs/wiki/Architecture.md new file mode 100644 index 0000000..6c0332b --- /dev/null +++ b/docs/wiki/Architecture.md @@ -0,0 +1,71 @@ +# Архитектура системы + +## Обзор + +ActivityWatch-Russian состоит из нескольких слоев: + +``` +Windows Clients (сбор данных) + ↓ HTTP API +Linux Server (хранение и обработка) + ↓ TCP +Integration Layer (интеграции) + ↓ HTTP/TCP +Monitoring Stack (визуализация) +``` + +## Слои архитектуры + +### 1. Windows Clients - Сбор данных +- **DLP Endpoint Collector** - мониторинг clipboard, печати, USB +- **Browser Domains Collector** - мониторинг браузеров +- **Email Outbound Collector** - мониторинг почты +- **Worktime Session Collector** - учет рабочего времени + +### 2. Linux Server - Хранение и обработка +- **ActivityWatch Server** - основной сервер (Rust) +- **PostgreSQL Database** - хранилище данных +- **WebUI with RU Patches** - веб-интерфейс с русификацией + +### 3. Integration Layer - Интеграции +- **pfSense Poller** - сбор логов firewall +- **DLP Aggregation Scripts** - агрегация DLP событий +- **Prometheus Exporter** - экспорт метрик + +### 4. Monitoring Stack - Мониторинг +- **Prometheus** - сбор метрик +- **Grafana** - визуализация +- **SQL Exporter** - прямые SQL запросы + +## Потоки данных + +### DLP инцидент +``` +User → DLP Collector → Проверка правил → AW Server → PostgreSQL → Grafana +``` + +### Браузер мониторинг +``` +Browser → Browser Collector → Категоризация → AW Server → WebUI +``` + +### Метрики +``` +AW Server → Exporter → Prometheus → Grafana +``` + +## Порты + +| Компонент | Порт | Протокол | +|-----------|------|----------| +| ActivityWatch API | 5600 | HTTP | +| ActivityWatch WebSocket | 5666 | WebSocket | +| PostgreSQL | 5432 | TCP | +| Prometheus | 9090 | HTTP | +| Grafana | 3000 | HTTP | +| Prometheus Exporter | 9398 | HTTP | + +## Подробнее + +- [Компоненты системы](Components) - детальное описание компонентов +- [Интерактивная карта](Interactive-Map) - визуальная схема связей diff --git a/docs/wiki/Browser-Domains-Monitoring.md b/docs/wiki/Browser-Domains-Monitoring.md new file mode 100644 index 0000000..292fb10 --- /dev/null +++ b/docs/wiki/Browser-Domains-Monitoring.md @@ -0,0 +1,145 @@ +# Browser Domains Monitoring + +Мониторинг посещаемых доменов в браузерах с категоризацией и проверкой DLP правил. + +## Обзор + +Browser Domains Collector отслеживает: +- Посещаемые веб-сайты +- Категоризацию доменов +- DLP проверку запрещенных сайтов +- Скриншоты при нарушениях + +## Архитектура + +``` +Browser → Window Detection → URL Extraction → Domain Parsing → Categorization → DLP Check → ActivityWatch +``` + +## Функции + +### Domain Detection +- Определение активного окна браузера +- Извлечение URL из заголовка окна +- Парсинг домена из URL +- Определение корневого домена + +### Categorization +- Кастомные правила категорий +- Web Category API (опционально) +- Кэширование результатов +- Автоопределение категорий + +### DLP Checking +- Проверка по спискам доменов +- DLP правила для доменов +- Временные окна +- Блокировка нарушений + +## Поддерживаемые браузеры + +- Google Chrome +- Mozilla Firefox +- Microsoft Edge +- Opera +- Яндекс.Браузер + +## Конфигурация + +### Custom Category Rules +```json +{ + "custom_categories": { + "social_media": [ + "*.facebook.com", + "*.twitter.com", + "*.instagram.com" + ], + "news": [ + "*.news.com", + "*.media.com" + ], + "blocked": [ + "*.malware.com", + "*.phishing.com" + ] + } +} +``` + +### DLP Domain Rules +```json +{ + "domain_rules": [ + { + "pattern": "*gambling*", + "category": "gambling", + "action": "alert", + "severity": "medium" + }, + { + "pattern": "*adult*", + "category": "adult", + "action": "block", + "severity": "high" + } + ] +} +``` + +## События + +### Browsing Event +```json +{ + "timestamp": "2024-01-01T12:00:00Z", + "type": "browsing", + "data": { + "url": "https://www.example.com/page", + "domain": "example.com", + "root_domain": "example.com", + "category": "technology", + "browser": "chrome.exe", + "title": "Example Page Title", + "user": "user1", + "host": "WORKSTATION01" + } +} +``` + +### DLP Incident Event +```json +{ + "timestamp": "2024-01-01T12:00:00Z", + "type": "dlp_incident", + "source": "browser_domain", + "rule_id": "blocked_domains", + "severity": "high", + "data": { + "url": "https://blocked.com", + "domain": "blocked.com", + "category": "malicious", + "screenshot": "path/to/screenshot.png" + } +} +``` + +## Производительность + +### Оптимизации +- Кэширование категорий (TTL 24h) +- Batch запросы к category API +- Debouncing быстрых переходов +- Асинхронная отправка событий + +## Мониторинг + +- Количество уникальных доменов +- Распределение по категориям +- Частота DLP инцидентов +- Кэш hit rate + +## Подробнее + +- [Детальная диаграмма](https://github.com/igor04091968/AWatch-rus/blob/main/docs/diagrams/browser-domains-monitoring.md) +- [Категоризация сайтов](Web-Categorization) diff --git a/docs/wiki/Components.md b/docs/wiki/Components.md new file mode 100644 index 0000000..c910394 --- /dev/null +++ b/docs/wiki/Components.md @@ -0,0 +1,108 @@ +# Компоненты системы + +## Windows Collectors + +### DLP Endpoint Collector +Мониторинг конечных точек для обнаружения утечек данных. + +**Функции:** +- Clipboard мониторинг +- Print job мониторинг +- USB write блокировка +- DLP правило evaluation +- Скриншоты при инцидентах + +**Файл:** `windows/dlp-endpoint-signals-collector.ps1` + +### Browser Domains Collector +Отслеживание посещаемых доменов с категоризацией. + +**Функции:** +- Определение домена из URL +- Категоризация сайтов +- DLP проверка доменов +- Скриншоты при нарушениях + +**Файл:** `windows/browser-domains-native-collector.ps1` + +### Email Outbound Collector +Мониторинг исходящей почты. + +**Функции:** +- Outlook Sent Items мониторинг +- SMTP соединения +- Email правило evaluation +- Блокировка нарушений + +**Файл:** `windows/email-outbound-collector.ps1` + +### Worktime Session Collector +Учет рабочего времени. + +**Функции:** +- Определение сессий +- Учет перерывов +- Агрегация по дням + +**Файл:** `windows/worktime-session-collector.ps1` + +## Server Components + +### ActivityWatch Server +Основной сервер для приема и хранения событий. + +**Технологии:** Rust +**API:** HTTP на порту 5600 + +### PostgreSQL Database +Основное хранилище данных. + +**Таблицы:** +- `dlp_events` - DLP инциденты +- `aggregation_state` - состояние агрегации +- `dlp_statistics` - статистика + +### WebUI with RU Patches +Веб-интерфейс с русской локализацией. + +**Файлы:** `aw-server/aw-ru-patch.js`, `aw-server/aw-sw-cleanup.js` + +## Integration Components + +### pfSense Poller +Сбор логов с pfSense firewall. + +**Файл:** `pfsense/pfsense-aw-poller.py` + +### DLP Aggregation Scripts +Агрегация DLP событий в PostgreSQL. + +**Файл:** `scripts/aggregate_dlp_events.py` + +### Prometheus Exporter +Экспорт метрик в формате Prometheus. + +**Файл:** `grafana-1c/sql-exporter/collectors/aw_activitywatch.py` + +## Monitoring Components + +### Prometheus +Сбор и хранение метрик. + +**Порт:** 9090 + +### Grafana +Визуализация метрик и дашборды. + +**Порт:** 3000 + +### SQL Exporter +Прямые SQL запросы к PostgreSQL. + +**Порт:** 9398 + +## Подробнее + +- [DLP Endpoint Monitoring](DLP-Endpoint-Monitoring) - детально о DLP коллекторе +- [Browser Domains Monitoring](Browser-Domains-Monitoring) - детально о браузерном коллекторе +- [WebUI Русификация](WebUI-Russian-Patches) - детально о патчах интерфейса diff --git a/docs/wiki/DLP-Endpoint-Monitoring.md b/docs/wiki/DLP-Endpoint-Monitoring.md new file mode 100644 index 0000000..5c67e49 --- /dev/null +++ b/docs/wiki/DLP-Endpoint-Monitoring.md @@ -0,0 +1,124 @@ +# DLP Endpoint Monitoring + +Мониторинг конечных точек для обнаружения утечек данных через clipboard, печать и USB. + +## Обзор + +DLP Endpoint Collector отслеживает: +- **Clipboard** - буфер обмена +- **Print** - задания на печать +- **USB** - запись на USB накопители + +## Архитектура + +``` +User Activity → DLP Collector → Rule Evaluation → Enforcement → ActivityWatch +``` + +## Функции + +### Clipboard Monitoring +- Перехват clipboard событий +- Проверка по паттернам (credit cards, passport data, etc.) +- Блокировка копирования +- Скриншот при нарушении + +### Print Monitoring +- Перехват print job событий +- Проверка принтеров и документов +- Блокировка печати +- Логирование попыток + +### USB Monitoring +- Обнаружение USB устройств +- Блокировка записи +- Логирование подключений +- Политики по device ID + +## Конфигурация + +### DLP Policy +```json +{ + "clipboard_rules": [ + { + "pattern": "\\b\\d{4}-\\d{4}-\\d{4}-\\d{4}\\b", + "description": "Credit card numbers", + "severity": "high", + "action": "block" + } + ], + "print_rules": [ + { + "printer_match": "*", + "document_keywords": ["confidential", "secret"], + "action": "block" + } + ], + "usb_rules": [ + { + "device_id": "*", + "action": "block_write" + } + ] +} +``` + +### Deployment Config +```json +{ + "aw_server_url": "http://aw-server:5600", + "bucket_prefix": "aw-watcher-dlp-endpoint", + "heartbeat_interval": 60, + "screenshot_on_incident": true, + "enforcement_enabled": true +} +``` + +## Установка + +```powershell +# Копирование коллектора +Copy-Item windows/dlp-endpoint-signals-collector.ps1 C:\ProgramData\AWatch-rus\ + +# Настройка scheduled task +Register-ScheduledTask -TaskName "DLP Endpoint Collector" -Trigger $trigger -Action $action +``` + +## События + +### DLP Incident Event +```json +{ + "timestamp": "2024-01-01T12:00:00Z", + "type": "dlp_incident", + "source": "clipboard", + "rule_id": "credit_card_pattern", + "severity": "high", + "data": { + "matched_text": "****-****-****-1234", + "user": "user1", + "host": "WORKSTATION01", + "screenshot": "path/to/screenshot.png" + } +} +``` + +## Требования + +- Windows 10/11 +- PowerShell 5.1+ +- ActivityWatch installed +- Административные права (для enforcement) + +## Мониторинг + +- Количество инцидентов по типам +- Частота срабатываний правил +- Успешность enforcement действий +- Heartbeat статус + +## Подробнее + +- [Детальная диаграмма](https://github.com/igor04091968/AWatch-rus/blob/main/docs/diagrams/dlp-endpoint-monitoring.md) +- [DLP Правила](DLP-Rules) diff --git a/docs/wiki/Home.md b/docs/wiki/Home.md new file mode 100644 index 0000000..3237f9a --- /dev/null +++ b/docs/wiki/Home.md @@ -0,0 +1,79 @@ +# ActivityWatch-Russian Documentation + +Добро пожаловать в документацию ActivityWatch-Russian - корпоративной системы мониторинга активности на базе ActivityWatch с русификацией и DLP функциями. + +## 📚 Содержание + +### Архитектура +- [Обзор архитектуры](Architecture) - высокоуровневая архитектура системы +- [Компоненты системы](Components) - описание всех компонентов +- [Интерактивная карта](Interactive-Map) - визуальная карта связей + +### Компоненты +- [DLP Endpoint Monitoring](DLP-Endpoint-Monitoring) - мониторинг clipboard, печати, USB +- [Browser Domains Monitoring](Browser-Domains-Monitoring) - мониторинг браузеров +- [Email Outbound Monitoring](Email-Outbound-Monitoring) - мониторинг почты +- [WebUI Русификация](WebUI-Russian-Patches) - патчи интерфейса +- [DLP Агрегация](DLP-Aggregation) - обработка DLP событий +- [Prometheus Exporter](Prometheus-Exporter) - метрики для мониторинга + +### Развертывание +- [Установка на Windows](Windows-Installation) - установка коллекторов +- [Настройка сервера](Server-Setup) - настройка Linux сервера +- [Grafana + Prometheus](Monitoring-Setup) - мониторинг стек + +### Конфигурация +- [DLP Правила](DLP-Rules) - настройка DLP политик +- [Категоризация сайтов](Web-Categorization) - настройка категорий +- [Группы хостов](Host-Groups) - управление группами + +## 🚀 Быстрый старт + +### Минимальная конфигурация +```bash +# 1. Установка на Windows workstation +.\windows\deploy-domain-users.ps1 + +# 2. Запуск ActivityWatch Server +./aw-server/aw-server + +# 3. Применение RU патчей +node aw-server/aw-ru-patch.js +``` + +### Полная конфигурация +```bash +# 1. Развертывание на Windows +.\windows\deploy-domain-users.ps1 + +# 2. Настройка сервера +cd ansible +ansible-playbook server-setup.yml + +# 3. Запуск мониторинга стека +cd ../grafana-1c +docker-compose up -d + +# 4. Агрегация DLP событий +python3 scripts/aggregate_dlp_events.py +``` + +## 📊 Обзор системы + +ActivityWatch-Russian - это корпоративная система мониторинга активности пользователей с: + +- **DLP мониторинг** - clipboard, печать, USB, браузеры, email +- **Русификация** - полный перевод интерфейса на русский +- **Аналитика** - агрегация данных и отчеты +- **Мониторинг** - Prometheus + Grafana дашборды +- **Автоматизация** - Ansible деплой на Windows и Linux + +## 🔗 Ссылки + +- [GitHub Repository](https://github.com/igor04091968/AWatch-rus) +- [ActivityWatch Official](https://activitywatch.net/) +- [Примеры конфигураций](https://github.com/igor04091968/AWatch-rus/tree/main/grafana-1c) + +## 📝 Поддержка + +Для вопросов и предложений используйте [Issues](https://github.com/igor04091968/AWatch-rus/issues). diff --git a/docs/wiki/Interactive-Map.md b/docs/wiki/Interactive-Map.md new file mode 100644 index 0000000..cc40d8c --- /dev/null +++ b/docs/wiki/Interactive-Map.md @@ -0,0 +1,78 @@ +# Интерактивная карта архитектуры + +Для визуального исследования связей между компонентами используйте интерактивную HTML карту. + +## Как использовать + +### Локально +```bash +# Открыть в браузере +xdg-open docs/diagrams/architecture-map.html + +# Или +file:///path/to/AWatch-rus/docs/diagrams/architecture-map.html +``` + +### С GitHub +1. Скачайте файл: [architecture-map.html](https://github.com/igor04091968/AWatch-rus/blob/main/docs/diagrams/architecture-map.html) +2. Откройте в браузере + +## Функции карты + +### Визуальные компоненты +- **Windows Clients** (красный) - коллекторы данных +- **Linux Server** (бирюзовый) - сервер и БД +- **Integration** (желтый) - интеграции +- **Monitoring** (зеленый) - мониторинг стек +- **External** (фиолетовый) - внешние системы + +### Интерактивность +- **Клик по компоненту** - показывает детальную информацию +- **Подсветка связей** - выделяет связанные компоненты +- **Поиск** - быстрый поиск по названию +- **Потоки данных** - визуализация процесса + +### Информация о компоненте +При клике на компонент показывается: +- Описание +- Связи с другими компонентами +- Потоки данных +- Порты и протоколы + +## Слои архитектуры + +### 1. Windows Clients +- DLP Endpoint Collector +- Browser Domains Collector +- Email Outbound Collector +- Worktime Session Collector + +### 2. Linux Server +- ActivityWatch Server +- PostgreSQL Database +- WebUI with RU Patches + +### 3. Integration Layer +- pfSense Poller +- DLP Aggregation Scripts +- Prometheus Exporter + +### 4. Monitoring Stack +- Prometheus +- Grafana +- SQL Exporter + +### 5. External Systems +- pfSense Firewall +- Domain Controller + +## Альтернативные визуализации + +### ASCII схема +Для быстрого понимания: [architecture-simple.md](https://github.com/igor04091968/AWatch-rus/blob/main/docs/architecture-simple.md) + +### Mermaid диаграммы +Для технических деталей: [architecture-diagram.md](https://github.com/igor04091968/AWatch-rus/blob/main/docs/architecture-diagram.md) + +### Graphify knowledge graph +Для анализа кода: [graphify-out/index.html](https://github.com/igor04091968/AWatch-rus/blob/main/graphify-out/index.html) diff --git a/docs/wiki/Monitoring-Setup.md b/docs/wiki/Monitoring-Setup.md new file mode 100644 index 0000000..302619d --- /dev/null +++ b/docs/wiki/Monitoring-Setup.md @@ -0,0 +1,292 @@ +# Monitoring Setup + +Настройка Prometheus + Grafana стека для мониторинга ActivityWatch. + +## Требования + +- Docker & Docker Compose +- 2GB+ RAM +- 20GB+ disk space + +## Установка через Docker Compose + +```bash +cd grafana-1c +docker-compose up -d +``` + +## Компоненты + +### Prometheus +Сбор и хранение метрик. + +**Порт:** 9090 +**Конфиг:** `prometheus/prometheus.yml` + +### Grafana +Визуализация метрик и дашборды. + +**Порт:** 3000 +**Конфиг:** `grafana/provisioning/` + +### SQL Exporter +Прямые SQL запросы к PostgreSQL. + +**Порт:** 9398 +**Конфиг:** `sql-exporter/` + +### AW Exporter +Экспорт метрик ActivityWatch. + +**Порт:** 9398 +**Файл:** `sql-exporter/collectors/aw_activitywatch.py` + +## Конфигурация Prometheus + +```yaml +# prometheus/prometheus.yml +global: + scrape_interval: 15s + +scrape_configs: + - job_name: 'activitywatch' + static_configs: + - targets: ['aw-exporter:9398'] + scrape_interval: 60s + + - job_name: 'prometheus' + static_configs: + - targets: ['localhost:9090'] +``` + +## Конфигурация Grafana + +### Datasources + +```yaml +# grafana/provisioning/datasources/prometheus.yml +apiVersion: 1 + +datasources: + - name: Prometheus + type: prometheus + access: proxy + url: http://prometheus:9090 +``` + +```yaml +# grafana/provisioning/datasources/postgres.yml +apiVersion: 1 + +datasources: + - name: PostgreSQL + type: postgres + access: proxy + url: postgres:5432 + database: activitywatch + user: aw + password: aw_password +``` + +### Dashboards + +```yaml +# grafana/provisioning/dashboards/dashboards.yml +apiVersion: 1 + +providers: + - name: 'ActivityWatch' + orgId: 1 + folder: 'ActivityWatch' + type: file + disableDeletion: false + updateIntervalSeconds: 10 + allowUiUpdates: true + options: + path: /etc/grafana/provisioning/dashboards +``` + +## Дашборды + +### ActivityWatch Overview +- Активные хосты +- События по buckets +- Скорость поступления событий +- Статус коллекторов + +**Файл:** `grafana/grafana/dashboards/aw_overview.json` + +### DLP Incidents +- Количество инцидентов по типам +- Инциденты по пользователям +- Инциденты по серьезности +- Временные тренды + +### Browser Monitoring +- Посещаемые домены +- Категории сайтов +- DLP нарушения + +## Запуск + +```bash +# Запуск всех сервисов +docker-compose up -d + +# Проверка статуса +docker-compose ps + +# Просмотр логов +docker-compose logs -f + +# Остановка +docker-compose down +``` + +## Доступ + +- **Grafana:** http://localhost:3000 (admin/admin) +- **Prometheus:** http://localhost:9090 +- **AW Exporter:** http://localhost:9398/metrics + +## Настройка алертов + +### Prometheus Alerting Rules + +```yaml +groups: + - name: activitywatch_alerts + rules: + - alert: AWCollectorDown + expr: aw_host_active == 0 + for: 5m + labels: + severity: warning + annotations: + summary: "ActivityWatch collector down on {{ $labels.host }}" + + - alert: AWExporterDown + expr: aw_exporter_up == 0 + for: 2m + labels: + severity: critical + annotations: + summary: "ActivityWatch exporter is down" +``` + +### Grafana Notification Channels + +1. Откройте Grafana +2. Configuration → Alerting → Notification channels +3. Add new channel (Email, Slack, etc.) +4. Настройте правила алертов в дашбордах + +## Мониторинг + +### Ключевые метрики + +**ActivityWatch:** +- `aw_bucket_events_total` - общее количество событий +- `aw_host_active` - активность хостов +- `aw_exporter_scrape_duration_seconds` - время scrape + +**Prometheus:** +- `up` - статус целей +- `scrape_duration_seconds` - время сбора + +**Grafana:** +- `grafana_statistic` - статистика Grafana + +### Health Checks + +```bash +# Prometheus +curl http://localhost:9090/-/healthy + +# Grafana +curl http://localhost:3000/api/health + +# AW Exporter +curl http://localhost:9398/health +``` + +## Backup + +```bash +# Backup Grafana dashboards +docker exec grafana grafana-cli admin export-dashboard > dashboards_backup.json + +# Backup Prometheus data +docker exec prometheus tar -czf /tmp/prometheus_data.tar.gz /prometheus +docker cp prometheus:/tmp/prometheus_data.tar.gz ./backup/ +``` + +## Устранение проблем + +### Grafana не доступна +```bash +# Проверьте контейнер +docker-compose ps grafana + +# Проверьте логи +docker-compose logs grafana + +# Перезапустите +docker-compose restart grafana +``` + +### Prometheus не собирает метрики +```bash +# Проверьте конфиг +docker exec prometheus promtool check config /etc/prometheus/prometheus.yml + +# Проверьте цели +curl http://localhost:9090/api/v1/targets + +# Проверьте логи +docker-compose logs prometheus +``` + +### AW Exporter не работает +```bash +# Проверьте соединение с AW Server +docker exec aw-exporter curl http://aw-server:5600/api/0/buckets + +# Проверьте логи +docker-compose logs aw-exporter + +# Проверьте метрики +curl http://localhost:9398/metrics +``` + +## Производительность + +### Оптимизация Prometheus + +```yaml +# prometheus/prometheus.yml +global: + scrape_interval: 30s # Увеличьте интервал + evaluation_interval: 30s + +storage: + tsdb: + retention.time: 30d # Уменьшите retention +``` + +### Оптимизация Grafana + +```bash +# Увеличьте память +# docker-compose.yml +grafana: + environment: + - GF_INSTALL_PLUGINS= + - GF_SERVER_ROOT_URL=http://localhost:3000 + - GF_ANALYTICS_ENABLED=false +``` + +## Подробнее + +- [Prometheus Exporter](Prometheus-Exporter) +- [Компоненты](Components) diff --git a/docs/wiki/Server-Setup.md b/docs/wiki/Server-Setup.md new file mode 100644 index 0000000..a383881 --- /dev/null +++ b/docs/wiki/Server-Setup.md @@ -0,0 +1,248 @@ +# Настройка сервера + +Настройка Linux сервера для ActivityWatch-Russian. + +## Требования + +- Linux (Ubuntu 20.04+, Debian 11+, CentOS 8+) +- Python 3.8+ +- PostgreSQL 12+ +- 4GB+ RAM +- 50GB+ disk space + +## Установка через Ansible + +```bash +cd ansible +ansible-playbook server-setup.yml +``` + +## Ручная установка + +### 1. Установка ActivityWatch Server + +```bash +# Скачайте binaries +wget https://github.com/ActivityWatch/activitywatch/releases/download/v0.13.1/activitywatch-v0.13.1-linux-x86_64.zip + +# Распакуйте +unzip activitywatch-v0.13.1-linux-x86_64.zip +cd activitywatch-v0.13.1-linux-x86_64 + +# Запустите сервер +./aw-server +``` + +### 2. Установка PostgreSQL + +```bash +# Ubuntu/Debian +sudo apt update +sudo apt install postgresql postgresql-contrib + +# CentOS/RHEL +sudo yum install postgresql-server postgresql-contrib +sudo postgresql-setup initdb +sudo systemctl start postgresql +sudo systemctl enable postgresql + +# Создайте базу данных +sudo -u postgres psql +CREATE DATABASE activitywatch; +CREATE USER aw WITH PASSWORD 'your_password'; +GRANT ALL PRIVILEGES ON DATABASE activitywatch TO aw; +\q +``` + +### 3. Применение RU патчей + +```bash +# Скопируйте патчи +cp aw-server/aw-ru-patch.js /path/to/aw-server/ +cp aw-server/aw-sw-cleanup.js /path/to/aw-server/ + +# Примените патчи +cd /path/to/aw-server/ +node aw-ru-patch.js +``` + +### 4. Настройка systemd service + +```bash +sudo nano /etc/systemd/system/aw-server.service +``` + +```ini +[Unit] +Description=ActivityWatch Server +After=network.target + +[Service] +Type=simple +User=aw +WorkingDirectory=/opt/activitywatch +ExecStart=/opt/activitywatch/aw-server +Restart=always +RestartSec=10 + +[Install] +WantedBy=multi-user.target +``` + +```bash +sudo systemctl enable aw-server +sudo systemctl start aw-server +``` + +## Конфигурация + +### ActivityWatch Config + +```toml +# /opt/activitywatch/server-config.toml +[server] +host = "0.0.0.0" +port = 5600 + +[logging] +level = "INFO" +file = "/var/log/activitywatch/aw-server.log" +``` + +### PostgreSQL Config + +```bash +# /etc/postgresql/12/main/postgresql.conf +listen_addresses = '*' +max_connections = 100 +shared_buffers = 256MB +``` + +## Установка Python зависимостей + +```bash +# Создайте virtual environment +python3 -m venv /opt/aw-venv +source /opt/aw-venv/bin/activate + +# Установите зависимости +pip install psycopg2-binary requests prometheus_client +``` + +## Настройка скриптов агрегации + +```bash +# Скопируйте скрипты +cp scripts/aggregate_dlp_events.py /opt/activitywatch/ + +# Настройте cron job +crontab -e +``` + +```cron +*/5 * * * * /opt/aw-venv/bin/python /opt/activitywatch/aggregate_dlp_events.py +``` + +## Firewall + +```bash +# Ubuntu/Debian (ufw) +sudo ufw allow 5600/tcp +sudo ufw allow 5432/tcp +sudo ufw enable + +# CentOS/RHEL (firewalld) +sudo firewall-cmd --permanent --add-port=5600/tcp +sudo firewall-cmd --permanent --add-port=5432/tcp +sudo firewall-cmd --reload +``` + +## Проверка + +```bash +# Проверка ActivityWatch Server +curl http://localhost:5600/api/0/buckets + +# Проверка PostgreSQL +sudo -u postgres psql -c "SELECT version();" + +# Проверка логов +sudo journalctl -u aw-server -f +``` + +## Мониторинг + +```bash +# Проверка статуса +sudo systemctl status aw-server + +# Проверка ресурсов +htop + +# Проверка диска +df -h + +# Проверка PostgreSQL +sudo -u postgres psql -c "SELECT pg_stat_database.datname, pg_stat_database.numbackends FROM pg_stat_database;" +``` + +## Backup + +```bash +# Backup PostgreSQL +sudo -u postgres pg_dump activitywatch > backup_$(date +%Y%m%d).sql + +# Backup ActivityWatch data +sudo tar -czf aw-backup_$(date +%Y%m%d).tar.gz /opt/activitywatch/data + +# Restore +sudo -u postgres psql activitywatch < backup_20240101.sql +``` + +## Обновление + +```bash +# Остановите сервер +sudo systemctl stop aw-server + +# Backup +sudo cp -r /opt/activitywatch /opt/activitywatch.backup + +# Обновите binaries +wget https://github.com/ActivityWatch/activitywatch/releases/download/v0.14.0/activitywatch-v0.14.0-linux-x86_64.zip +unzip activitywatch-v0.14.0-linux-x86_64.zip -d /opt/activitywatch/ + +# Запустите сервер +sudo systemctl start aw-server +``` + +## Устранение проблем + +### Server не запускается +```bash +# Проверьте логи +sudo journalctl -u aw-server -n 50 + +# Проверьте порт +sudo netstat -tlnp | grep 5600 + +# Проверьте права +sudo ls -la /opt/activitywatch +``` + +### PostgreSQL connection refused +```bash +# Проверьте статус +sudo systemctl status postgresql + +# Проверьте конфиг +sudo cat /etc/postgresql/12/main/postgresql.conf | grep listen_addresses + +# Проверьте firewall +sudo ufw status +``` + +## Подробнее + +- [Мониторинг стек](Monitoring-Setup) +- [DLP Агрегация](DLP-Aggregation) diff --git a/docs/wiki/WebUI-Russian-Patches.md b/docs/wiki/WebUI-Russian-Patches.md new file mode 100644 index 0000000..ba652de --- /dev/null +++ b/docs/wiki/WebUI-Russian-Patches.md @@ -0,0 +1,131 @@ +# WebUI Русификация + +Система патчей для русификации и адаптации ActivityWatch WebUI под российские требования. + +## Обзор + +WebUI патчи добавляют: +- Полный перевод интерфейса на русский +- DLP центр для просмотра инцидентов +- Центр управления правилами +- Группы хостов +- Русские стили и шрифты + +## Архитектура + +``` +Original WebUI → Patch Loader → DOM Injection → Style Injection → Translation → RU WebUI +``` + +## Компоненты патчей + +### Navigation Patches +- Скрытие лишних пунктов меню +- Добавление DLP навигации +- Обновление ссылок + +### DLP Center Injection +- Центр просмотра инцидентов +- Менеджер правил +- Центр алертов +- Архивирование + +### Host Groups Center +- Управление группами хостов +- Визуализация по группам +- Агрегированная статистика + +### Translation +- Перевод всех текстовых элементов +- Русские форматы дат/чисел +- Кириллические шрифты + +## Установка + +```bash +# Применение патчей +node aw-server/aw-ru-patch.js + +# Очистка старых патчей +node aw-server/aw-sw-cleanup.js +``` + +## Конфигурация + +### Host Groups Config +```json +{ + "host_groups": [ + { + "id": "workstations", + "name": "Рабочие станции", + "hosts": ["WORKSTATION01", "WORKSTATION02"], + "color": "#4ecdc4" + }, + { + "id": "servers", + "name": "Серверы", + "hosts": ["SERVER01", "SERVER02"], + "color": "#ff6b6b" + } + ] +} +``` + +### DLP Settings +```json +{ + "dlp_enabled": true, + "review_center_enabled": true, + "alerts_center_enabled": true, + "auto_refresh_interval": 30, + "default_severity_filter": "all" +} +``` + +## Функции WebUI + +### DLP Review Center +- Список инцидентов +- Фильтрация по типам +- Детальный просмотр +- Архивирование +- Экспорт + +### DLP Rules Manager +- Список правил +- Создание/редактирование +- Включение/выключение +- Тестирование правил + +### Host Groups Center +- Управление группами +- Визуализация +- Статистика по группам + +## Совместимость + +- ActivityWatch v0.12.x - v0.14.x +- Chrome 90+, Firefox 88+, Edge 90+, Safari 14+ + +## Производительность + +- Lazy loading патчей +- Кэширование переводов +- Debouncing обновлений DOM +- Virtual scrolling + +## Отладка + +```javascript +// Режим разработки +const DEBUG_MODE = true; + +// Логирование патчей +console.log('[AW-RU-Patch] Applying patch:', patchName); +``` + +## Подробнее + +- [Детальная диаграмма](https://github.com/igor04091968/AWatch-rus/blob/main/docs/diagrams/webui-patches.md) +- [Группы хостов](Host-Groups) diff --git a/docs/wiki/Windows-Installation.md b/docs/wiki/Windows-Installation.md new file mode 100644 index 0000000..0619207 --- /dev/null +++ b/docs/wiki/Windows-Installation.md @@ -0,0 +1,172 @@ +# Установка на Windows + +Установка ActivityWatch коллекторов на Windows рабочие станции. + +## Требования + +- Windows 10/11 +- PowerShell 5.1+ +- Административские права +- Доступ к ActivityWatch Server + +## Автоматическая установка + +### Через Domain Controller (GPO) + +```powershell +# На Domain Controller +.\windows\deploy-domain-users.ps1 +``` + +Этот скрипт: +1. Создает GPO для развертывания +2. Копирует коллекторы на рабочие станции +3. Настраивает scheduled tasks +4. Конфигурирует DLP политики + +### Для одиночного пользователя + +```powershell +# Локально на workstation +.\windows\deploy-single-user.ps1 +``` + +## Ручная установка + +### 1. Установка ActivityWatch + +```powershell +# Скачайте installer с сайта ActivityWatch +# Запустите installer + +# Или через InnoSetup installer +.\install-kit-awindows-*.exe +``` + +### 2. Копирование коллекторов + +```powershell +# Создайте директорию +New-Item -ItemType Directory -Path "C:\ProgramData\AWatch-rus" -Force + +# Скопируйте коллекторы +Copy-Item windows\dlp-endpoint-signals-collector.ps1 "C:\ProgramData\AWatch-rus\" +Copy-Item windows\browser-domains-native-collector.ps1 "C:\ProgramData\AWatch-rus\" +Copy-Item windows\email-outbound-collector.ps1 "C:\ProgramData\AWatch-rus\" +``` + +### 3. Настройка конфигурации + +```powershell +# Создайте конфигурационный файл +@{ + aw_server_url = "http://aw-server:5600" + bucket_prefix = "aw-watcher-dlp-endpoint" + heartbeat_interval = 60 +} | ConvertTo-Json | Out-File "C:\ProgramData\AWatch-rus\deployment-config.json" +``` + +### 4. Настройка Scheduled Task + +```powershell +$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 5) +$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-File C:\ProgramData\AWatch-rus\dlp-endpoint-signals-collector.ps1" +Register-ScheduledTask -TaskName "DLP Endpoint Collector" -Trigger $trigger -Action $action -RunLevel Highest +``` + +## Конфигурация DLP политик + +### Создание файла политик + +```powershell +@{ + clipboard_rules = @( + @{ + pattern = "\b\d{4}-\d{4}-\d{4}-\d{4}\b" + description = "Credit card numbers" + severity = "high" + action = "block" + } + ) + print_rules = @( + @{ + printer_match = "*" + document_keywords = @("confidential", "secret") + action = "block" + } + ) +} | ConvertTo-Json -Depth 10 | Out-File "C:\ProgramData\AWatch-rus\dlp-policy.json" +``` + +## Проверка установки + +```powershell +# Проверка статуса службы +Get-ScheduledTask | Where-Object {$_.TaskName -like "*DLP*"} + +# Проверка логов +Get-Content "C:\ProgramData\AWatch-rus\logs\*.log" -Tail 50 + +# Проверка соединения с сервером +Test-NetConnection -ComputerName aw-server -Port 5600 +``` + +## Устранение проблем + +### Коллектор не запускается +```powershell +# Проверьте execution policy +Get-ExecutionPolicy +Set-ExecutionPolicy RemoteSigned -Scope CurrentUser + +# Проверьте права +# Запустите PowerShell от администратора +``` + +### Нет соединения с сервером +```powershell +# Проверьте firewall +New-NetFirewallRule -DisplayName "Allow AW Server" -Direction Outbound -Protocol TCP -RemotePort 5600 -Action Allow + +# Проверьте URL в конфиге +Get-Content "C:\ProgramData\AWatch-rus\deployment-config.json" +``` + +### DLP не работает +```powershell +# Проверьте файл политик +Test-Path "C:\ProgramData\AWatch-rus\dlp-policy.json" + +# Проверьте формат JSON +Get-Content "C:\ProgramData\AWatch-rus\dlp-policy.json" | ConvertFrom-Json +``` + +## Обновление + +```powershell +# Остановите задачи +Unregister-ScheduledTask -TaskName "DLP Endpoint Collector" -Confirm:$false + +# Обновите файлы +Copy-Item windows\dlp-endpoint-signals-collector.ps1 "C:\ProgramData\AWatch-rus\" -Force + +# Перезапустите задачи +Register-ScheduledTask -TaskName "DLP Endpoint Collector" -Trigger $trigger -Action $action +``` + +## Удаление + +```powershell +# Остановите задачи +Get-ScheduledTask | Where-Object {$_.TaskName -like "*DLP*"} | Unregister-ScheduledTask -Confirm:$false + +# Удалите файлы +Remove-Item "C:\ProgramData\AWatch-rus" -Recurse -Force + +# Удалите ActivityWatch (через Programs and Features) +``` + +## Подробнее + +- [DLP Правила](DLP-Rules) +- [Компоненты](Components)