183 lines
4.8 KiB
Markdown
183 lines
4.8 KiB
Markdown
|
|
# 🎉 PRODUCTION READY - Мониторинг файлов
|
|||
|
|
|
|||
|
|
## ✅ ЧТО РАБОТАЕТ:
|
|||
|
|
|
|||
|
|
### 1️⃣ Nextcloud Activity Monitor
|
|||
|
|
**Скрипт:** `nextcloud_activity_monitor.js`
|
|||
|
|
**Запущен:** ✅ (PID: 2122)
|
|||
|
|
**Лог:** `nextcloud_activity.log`
|
|||
|
|
|
|||
|
|
**Мониторит:**
|
|||
|
|
- Файлы загруженные через Nextcloud WebUI
|
|||
|
|
- Файлы созданные/изменённые в Nextcloud
|
|||
|
|
|
|||
|
|
**Метод:**
|
|||
|
|
- Nextcloud Activity API (polling каждые 30 сек)
|
|||
|
|
- Разбивает агрегированные события на отдельные файлы
|
|||
|
|
- БЕЗ дубликатов!
|
|||
|
|
|
|||
|
|
**Формат события:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"type": "file_created",
|
|||
|
|
"source": "nextcloud_activity",
|
|||
|
|
"timestamp": "2025-10-30T12:53:40+00:00",
|
|||
|
|
"file_id": 73460,
|
|||
|
|
"path": "/experimental_report.xlsx",
|
|||
|
|
"filename": "experimental_report.xlsx",
|
|||
|
|
"user": "admin",
|
|||
|
|
"action": "created"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Команды:**
|
|||
|
|
```bash
|
|||
|
|
# Статус
|
|||
|
|
ps aux | grep nextcloud_activity_monitor
|
|||
|
|
|
|||
|
|
# Логи
|
|||
|
|
tail -f nextcloud_activity.log
|
|||
|
|
|
|||
|
|
# Остановить
|
|||
|
|
pkill -f nextcloud_activity_monitor.js
|
|||
|
|
|
|||
|
|
# Запустить
|
|||
|
|
cd /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage
|
|||
|
|
nohup /usr/bin/nodejs nextcloud_activity_monitor.js > nextcloud_activity.log 2>&1 &
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 2️⃣ S3 Monitor (Docker)
|
|||
|
|
**Контейнер:** `s3-monitor`
|
|||
|
|
**Запущен:** ✅ (Up 40 минут)
|
|||
|
|
**Скрипт:** `s3_monitor_docker.js`
|
|||
|
|
|
|||
|
|
**Мониторит:**
|
|||
|
|
- Файлы загруженные напрямую в S3
|
|||
|
|
- Через S3 Browser, aws-cli, Cyberduck, скрипты
|
|||
|
|
- Любые изменения в bucket
|
|||
|
|
|
|||
|
|
**Метод:**
|
|||
|
|
- S3 ListObjectsV2 API (polling каждые 30 сек)
|
|||
|
|
- Pagination - получает ВСЕ файлы (24,522 файла!)
|
|||
|
|
- Сравнение по ETag
|
|||
|
|
|
|||
|
|
**Bucket:** `f9825c87-4e3558f6-f9b6-405c-ad3d-d1535c49b61c`
|
|||
|
|
|
|||
|
|
**Формат события:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"type": "file_created",
|
|||
|
|
"source": "s3_monitor",
|
|||
|
|
"timestamp": "2025-10-30T20:49:31.593Z",
|
|||
|
|
"path": "crm2/CRM_Active_Files/Documents/file.xlsx",
|
|||
|
|
"filename": "file.xlsx",
|
|||
|
|
"size": 8224,
|
|||
|
|
"etag": "7004954627252c9d0a7e6417f8325d07",
|
|||
|
|
"last_modified": "2025-10-30T20:49:14.132Z",
|
|||
|
|
"action": "created"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Команды:**
|
|||
|
|
```bash
|
|||
|
|
# Статус
|
|||
|
|
docker ps | grep s3-monitor
|
|||
|
|
|
|||
|
|
# Логи
|
|||
|
|
docker logs s3-monitor -f
|
|||
|
|
|
|||
|
|
# Остановить
|
|||
|
|
docker stop s3-monitor
|
|||
|
|
|
|||
|
|
# Запустить
|
|||
|
|
docker start s3-monitor
|
|||
|
|
|
|||
|
|
# Перезапустить
|
|||
|
|
docker restart s3-monitor
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3️⃣ Redis Канал (центральная шина)
|
|||
|
|
**Host:** `147.45.146.17`
|
|||
|
|
**Port:** `6379`
|
|||
|
|
**Password:** `CRM_Redis_Pass_2025_Secure!`
|
|||
|
|
**Channel:** `crm:file:events`
|
|||
|
|
|
|||
|
|
**Подписаться:**
|
|||
|
|
```bash
|
|||
|
|
redis-cli -h 147.45.146.17 -p 6379 -a 'CRM_Redis_Pass_2025_Secure!' \
|
|||
|
|
SUBSCRIBE crm:file:events
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚫 ЧТО ОСТАНОВЛЕНО:
|
|||
|
|
|
|||
|
|
### ❌ redis_bridge.js
|
|||
|
|
**Причина:** Давал неполные данные, много дубликатов
|
|||
|
|
**Заменён на:** Nextcloud Activity Monitor (даёт чистые данные)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📊 СРАВНЕНИЕ ДАННЫХ:
|
|||
|
|
|
|||
|
|
| Поле | Nextcloud Activity | S3 Monitor |
|
|||
|
|
|------|-------------------|------------|
|
|||
|
|
| **type** | ✅ file_created/changed/deleted | ✅ file_created/modified/deleted |
|
|||
|
|
| **source** | nextcloud_activity | s3_monitor |
|
|||
|
|
| **filename** | ✅ | ✅ |
|
|||
|
|
| **path** | ✅ (Nextcloud путь) | ✅ (S3 полный путь) |
|
|||
|
|
| **file_id** | ✅ | ❌ |
|
|||
|
|
| **user** | ✅ | ❌ |
|
|||
|
|
| **size** | ❌ | ✅ |
|
|||
|
|
| **etag** | ❌ | ✅ |
|
|||
|
|
| **mime_type** | ❌ | ❌ |
|
|||
|
|
|
|||
|
|
**Дополняют друг друга!** 🎯
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔧 АВТОЗАПУСК ПРИ ПЕРЕЗАГРУЗКЕ СЕРВЕРА:
|
|||
|
|
|
|||
|
|
### S3 Monitor:
|
|||
|
|
✅ Уже настроен (`--restart unless-stopped`)
|
|||
|
|
|
|||
|
|
### Nextcloud Activity Monitor:
|
|||
|
|
Создам systemd service:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
sudo tee /etc/systemd/system/nextcloud-activity-monitor.service << 'EOF'
|
|||
|
|
[Unit]
|
|||
|
|
Description=Nextcloud Activity Monitor
|
|||
|
|
After=network.target redis.service
|
|||
|
|
|
|||
|
|
[Service]
|
|||
|
|
Type=simple
|
|||
|
|
User=root
|
|||
|
|
WorkingDirectory=/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage
|
|||
|
|
ExecStart=/usr/bin/nodejs nextcloud_activity_monitor.js
|
|||
|
|
Restart=always
|
|||
|
|
RestartSec=10
|
|||
|
|
StandardOutput=append:/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/nextcloud_activity.log
|
|||
|
|
StandardError=append:/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/nextcloud_activity.log
|
|||
|
|
|
|||
|
|
[Install]
|
|||
|
|
WantedBy=multi-user.target
|
|||
|
|
EOF
|
|||
|
|
|
|||
|
|
sudo systemctl daemon-reload
|
|||
|
|
sudo systemctl enable nextcloud-activity-monitor
|
|||
|
|
sudo systemctl start nextcloud-activity-monitor
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 ГОТОВО!
|
|||
|
|
|
|||
|
|
**Система полностью работает в production режиме!** 🚀
|
|||
|
|
|
|||
|
|
Хочешь чтобы я создал systemd service для автозапуска Nextcloud Activity Monitor? 😊
|