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>
This commit is contained in:
co-authored by
Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
parent
7a89f33e3b
commit
eb83a8b08f
@@ -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) - визуальная схема связей
|
||||||
@@ -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)
|
||||||
@@ -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) - детально о патчах интерфейса
|
||||||
@@ -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)
|
||||||
@@ -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).
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
Reference in New Issue
Block a user