Initial commit: Momentry Core v0.1
- Rust-based digital asset management system - Video analysis: ASR, OCR, YOLO, Face, Pose - RAG capabilities with Qdrant vector database - Multi-database support: PostgreSQL, Redis, MongoDB - Monitoring system with launchd plists - n8n workflow automation integration
This commit is contained in:
443
MOMENTRY_INTEGRATION_GUIDE.md
Normal file
443
MOMENTRY_INTEGRATION_GUIDE.md
Normal file
@@ -0,0 +1,443 @@
|
||||
# Momentry 系統整合指南 v0.1
|
||||
|
||||
## 一、專案概述
|
||||
|
||||
Momentry 是一個數位資產管理系統,包含服務遷移、監控系統、Storage 架構和用戶管理。
|
||||
|
||||
**設計目標**:
|
||||
- 自動化優先:人類只需處理通知和判斷
|
||||
- 分層監控:七層監控架構
|
||||
- 數據納管:檔案由資料庫統一管理
|
||||
|
||||
---
|
||||
|
||||
## 二、系統架構
|
||||
|
||||
### 硬體
|
||||
- **本地 NVMe**:熱數據 (/Users/accusys/momentry/)
|
||||
- **外部 RAID**:溫數據 (/Volumes/RAID System/)
|
||||
- **Object Storage**:冷數據歸檔
|
||||
|
||||
### 網路
|
||||
- **DDNS**:momentry.ddns.net
|
||||
- **VPN**:Shadowsocks (port 8388)
|
||||
- **反向代理**:Caddy
|
||||
|
||||
### 軟體服務 (15 個)
|
||||
|
||||
| 服務 | Port | 用途 | 狀態 |
|
||||
|------|------|------|------|
|
||||
| PostgreSQL | 5432 | 主資料庫 | ✅ 運行 |
|
||||
| Redis | 6379 | 快取/會話 | ✅ 運行 |
|
||||
| n8n Main | 5678 | 工作流 | ✅ 運行 |
|
||||
| n8n Worker | 5690 | 工作流 | ✅ 運行 |
|
||||
| Caddy | 443/2019 | 反向代理 | ✅ 運行 |
|
||||
| Gitea | 3000 | Git 服務 | ✅ 運行 |
|
||||
| SFTPGo | 2222 | SFTP | ✅ 運行 |
|
||||
| Ollama | 11434 | LLM | ✅ 運行 |
|
||||
| Qdrant | 6333 | 向量資料庫 | ✅ 運行 |
|
||||
| MariaDB | 3306 | WordPress | ✅ 運行 |
|
||||
| PHP-FPM | - | Web 後端 | ✅ 運行 |
|
||||
| RustDesk hbbs | 21116 | 遠程桌面 | ✅ 運行 |
|
||||
| RustDesk hbbr | 21117 | 遠程桌面 | ✅ 運行 |
|
||||
| MongoDB | 27017 | 文檔資料庫 | ✅ 運行 |
|
||||
| Agent | - | 代理服務 | ✅ 運行 |
|
||||
|
||||
---
|
||||
|
||||
## 三、監控系統 (七層架構)
|
||||
|
||||
```
|
||||
Layer 1: External 監控 - DDNS、網關、互聯網
|
||||
Layer 2: Service 監控 - 15 個服務健康檢查
|
||||
Layer 3: Workflow 監控 - n8n Workflow 狀態/閒置分析
|
||||
Layer 4: Portal 監控 - WordPress 頁面/帳號
|
||||
Layer 5: Database 監控 - PostgreSQL/Redis/Qdrant/MariaDB
|
||||
Layer 6: 使用者監控 - 連線/本機/異常檢測
|
||||
Layer 7: Storage 架構 - 冷溫熱/歸檔/檔案註冊
|
||||
```
|
||||
|
||||
### 3.1 Layer 1: External 監控
|
||||
|
||||
**監控項目**:
|
||||
- DDNS 域名解析 (momentry.ddns.net)
|
||||
- 網關連通性 (192.168.110.1)
|
||||
- 互聯網連接 (8.8.8.8)
|
||||
|
||||
**腳本**:`monitor/service/external_monitor.sh`
|
||||
|
||||
### 3.2 Layer 2: Service 監控
|
||||
|
||||
**監控項目**:
|
||||
- 進程狀態
|
||||
- 端口響應
|
||||
- HTTP 狀態碼
|
||||
|
||||
**腳本**:`monitor/service/health_check.sh`
|
||||
|
||||
### 3.3 Layer 3: n8n Workflow 監控
|
||||
|
||||
**監控項目**:
|
||||
- Workflow 數量與啟用狀態
|
||||
- 執行次數與結果
|
||||
- 閒置識別
|
||||
|
||||
**閒置定義**:
|
||||
```
|
||||
閒置 = 無排程 AND 無 API 觸發 AND 超過 30 天未執行
|
||||
```
|
||||
|
||||
**改善建議**:
|
||||
- 建議停用:閒置 > 30 天
|
||||
- 建議刪除:閒置 > 90 天
|
||||
|
||||
**腳本**:`monitor/workflow/n8n_workflow_monitor.sh`
|
||||
|
||||
### 3.4 Layer 4: WordPress Portal 監控
|
||||
|
||||
**變動監控**:
|
||||
- 版本變更 (Core/Theme/Plugin)
|
||||
- 文件變更 (wp-content)
|
||||
- 配置變更 (wp-config.php)
|
||||
- 內容變更 (文章/頁面)
|
||||
- 代碼變更
|
||||
- 帳號創建/刪除/修改
|
||||
|
||||
**使用監控**:
|
||||
- 帳號登入/失敗
|
||||
- 內容操作 (發布/編輯/刪除)
|
||||
- 權限變更
|
||||
- 評論/媒體操作
|
||||
|
||||
**腳本**:`monitor/portal/page_monitor.sh`
|
||||
|
||||
### 3.5 Layer 5: Database 監控
|
||||
|
||||
**PostgreSQL**:
|
||||
- 表數量/行數/大小
|
||||
- 死元組
|
||||
- 慢查詢
|
||||
|
||||
**Redis**:
|
||||
- 連線數
|
||||
- 內存使用
|
||||
- 命中率
|
||||
- 客戶端列表
|
||||
|
||||
**Qdrant**:
|
||||
- Collection 列表
|
||||
- Points 數
|
||||
- 向量維度
|
||||
- 磁盤使用
|
||||
|
||||
**MariaDB**:
|
||||
- 連線數
|
||||
- WordPress 表
|
||||
|
||||
**腳本**:
|
||||
- `monitor/database/postgres_monitor.sh`
|
||||
- `monitor/database/redis_monitor.sh`
|
||||
- `monitor/database/qdrant_monitor.sh`
|
||||
|
||||
### 3.6 Layer 6: 使用者監控
|
||||
|
||||
**連線使用者**:
|
||||
- SSH 登入與命令
|
||||
- Web 服務 (n8n/Gitea/WP)
|
||||
- 資料庫連線
|
||||
- SFTP 傳輸
|
||||
|
||||
**本機使用者**:
|
||||
- 系統登入
|
||||
- sudo 使用
|
||||
- 服務帳戶
|
||||
- 異常檢測
|
||||
|
||||
**異常檢測**:
|
||||
- 暴力破解 (> 5次/分鐘)
|
||||
- 權限提升
|
||||
- 異常時間登入
|
||||
|
||||
**腳本**:`monitor/users/session_tracker.sh`
|
||||
|
||||
### 3.7 Layer 7: Storage 架構
|
||||
|
||||
**目錄結構**:
|
||||
```
|
||||
/Users/accusys/momentry/
|
||||
├── var/ # 服務數據 (熱)
|
||||
├── etc/ # 配置 (溫)
|
||||
├── log/ # 日誌 (溫)
|
||||
├── data/ # 用戶數據
|
||||
│ ├── family/ # 家庭集群
|
||||
│ ├── work/ # 工作集群
|
||||
│ ├── wordpress/ # WP 隔離
|
||||
│ └── shared/ # 共享
|
||||
├── backup/ # 備份
|
||||
│ ├── daily/
|
||||
│ ├── weekly/
|
||||
│ ├── monthly/
|
||||
│ └── archive/
|
||||
└── tmp/ # 臨時
|
||||
```
|
||||
|
||||
**分層標準**:
|
||||
| 等級 | 條件 | 存放 |
|
||||
|------|------|------|
|
||||
| 熱 | 7天內訪問 > 10次 | NVMe |
|
||||
| 溫 | 30天內訪問 > 1次 | RAID |
|
||||
| 冷 | 90天未訪問 | Object |
|
||||
|
||||
**歸檔策略**:
|
||||
- 手動歸檔
|
||||
- 自動歸檔 (90天)
|
||||
- 深度歸檔 (1年)
|
||||
|
||||
**腳本**:`monitor/storage/storage_manager.sh`
|
||||
|
||||
---
|
||||
|
||||
## 四、數據表設計
|
||||
|
||||
### 監控相關
|
||||
```sql
|
||||
monitor_services -- 服務健康狀態
|
||||
monitor_workflows -- n8n Workflow
|
||||
monitor_databases -- 資料庫指標
|
||||
monitor_portal_pages -- WP 頁面
|
||||
monitor_portal_users -- WP 用戶
|
||||
monitor_sessions -- 使用者會話
|
||||
monitor_logins -- 登入歷史
|
||||
monitor_sudo_history -- sudo 記錄
|
||||
monitor_resource_usage -- 資源使用
|
||||
monitor_anomalies -- 異常檢測
|
||||
monitor_external -- 外部監控
|
||||
```
|
||||
|
||||
### Storage 相關
|
||||
```sql
|
||||
file_registry -- 檔案註冊
|
||||
storage_usage_stats -- 存儲統計
|
||||
storage_access_logs -- 訪問日誌
|
||||
file_lifecycle -- 生命週期
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 八、實現文件結構
|
||||
|
||||
```
|
||||
momentry_core_0.1/
|
||||
├── MOMENTRY_INTEGRATION_GUIDE.md # 本文件
|
||||
├── monitor/
|
||||
│ ├── MONITORING.md # 監控詳細文檔
|
||||
│ ├── config/
|
||||
│ │ └── monitor_config.yaml # 配置文件
|
||||
│ ├── control/
|
||||
│ │ └── monitor_control.sh # 控制腳本
|
||||
│ ├── service/
|
||||
│ │ ├── health_check.sh # 服務健康
|
||||
│ │ └── external_monitor.sh # 外部監控
|
||||
│ ├── workflow/
|
||||
│ │ └── n8n_workflow_monitor.sh
|
||||
│ ├── portal/
|
||||
│ │ └── page_monitor.sh
|
||||
│ ├── database/
|
||||
│ │ ├── schema.sql
|
||||
│ │ ├── postgres_monitor.sh
|
||||
│ │ ├── redis_monitor.sh
|
||||
│ │ └── qdrant_monitor.sh
|
||||
│ ├── users/
|
||||
│ │ └── session_tracker.sh
|
||||
│ └── storage/
|
||||
│ └── storage_manager.sh
|
||||
├── momentry_runtime/
|
||||
│ └── plist/
|
||||
│ ├── template.service.plist # 用戶級模板
|
||||
│ ├── template.root.plist # 系統級模板
|
||||
│ └── *.plist # 服務配置文件
|
||||
└── docs/
|
||||
├── SERVICES.md # 服務安裝
|
||||
└── SERVICE_ADDITION_GUIDE.md # 服務添加規範
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 六、快速使用
|
||||
|
||||
### 初始化
|
||||
```bash
|
||||
# 初始化監控資料庫
|
||||
psql -U accusys -h localhost -d momentry -f monitor/database/schema.sql
|
||||
|
||||
# 初始化 Storage 目錄
|
||||
./monitor/storage/storage_manager.sh init
|
||||
```
|
||||
|
||||
### 監控命令
|
||||
```bash
|
||||
cd /Users/accusys/momentry_core_0.1/monitor
|
||||
|
||||
# 查看狀態
|
||||
./control/monitor_control.sh status
|
||||
|
||||
# 執行檢查
|
||||
./control/monitor_control.sh check all # 全部
|
||||
./control/monitor_control.sh check service # 服務
|
||||
./control/monitor_control.sh check workflow # Workflow
|
||||
./control/monitor_control.sh check database # 資料庫
|
||||
./control/monitor_control.sh check users # 使用者
|
||||
./control/monitor_control.sh check storage # Storage
|
||||
|
||||
# 持續監控
|
||||
./control/monitor_control.sh monitor
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 七、優先級
|
||||
|
||||
| 優先級 | 項目 |
|
||||
|--------|------|
|
||||
| P0 | Service 基礎監控 |
|
||||
| P0 | Database 監控 |
|
||||
| P1 | 使用者監控 |
|
||||
| P1 | n8n Workflow 監控 |
|
||||
| P2 | WordPress Portal 監控 |
|
||||
| P2 | External 監控 |
|
||||
| P3 | Storage 架構 |
|
||||
|
||||
---
|
||||
|
||||
## 九、服務添加規範
|
||||
|
||||
### 9.1 概述
|
||||
|
||||
添加新服務到 Momentry 系統的標準流程。
|
||||
|
||||
**重要原則**:
|
||||
- 使用 `launchctl` 管理服務,勿使用 `brew services`
|
||||
- 所有服務使用 `com.momentry.*` 作為 plist Label
|
||||
- 數據存放於 `/Users/accusys/momentry/` 目錄
|
||||
- 每個服務需提供監控腳本
|
||||
|
||||
### 9.2 命名規範
|
||||
|
||||
**Plist 文件命名**:
|
||||
```
|
||||
com.momentry.{service_name}.plist
|
||||
```
|
||||
|
||||
**目錄結構**:
|
||||
```
|
||||
/Users/accusys/momentry/
|
||||
├── var/{service_name}/ # 服務數據
|
||||
├── etc/{service_name}/ # 服務配置
|
||||
└── log/{service_name}.log # 服務日誌
|
||||
```
|
||||
|
||||
### 9.3 Plist 模板
|
||||
|
||||
**用戶級服務模板** (`plist/template.service.plist`):
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Label</key>
|
||||
<string>com.momentry.{service_name}</string>
|
||||
<key>UserName</key>
|
||||
<string>accusys</string>
|
||||
<key>WorkingDirectory</key>
|
||||
<string>/Users/accusys/momentry/var/{service_name}</string>
|
||||
<key>ProgramArguments</key>
|
||||
<array>
|
||||
<string>/opt/homebrew/bin/executable</string>
|
||||
</array>
|
||||
<key>EnvironmentVariables</key>
|
||||
<dict>
|
||||
<key>PATH</key>
|
||||
<string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
|
||||
</dict>
|
||||
<key>RunAtLoad</key>
|
||||
<true/>
|
||||
<key>KeepAlive</key>
|
||||
<true/>
|
||||
<key>StandardOutPath</key>
|
||||
<string>/Users/accusys/momentry/log/{service_name}.log</string>
|
||||
<key>StandardErrorPath</key>
|
||||
<string>/Users/accusys/momentry/log/{service_name}.error.log</string>
|
||||
</dict>
|
||||
</plist>
|
||||
```
|
||||
|
||||
### 9.4 添加步驟
|
||||
|
||||
**步驟 1:創建目錄**
|
||||
```bash
|
||||
mkdir -p /Users/accusys/momentry/var/{service_name}
|
||||
mkdir -p /Users/accusys/momentry/etc/{service_name}
|
||||
```
|
||||
|
||||
**步驟 2:創建 Plist 文件**
|
||||
```bash
|
||||
cp plist/template.service.plist plist/com.momentry.{service_name}.plist
|
||||
# 編輯 plist 文件
|
||||
```
|
||||
|
||||
**步驟 3:複製到系統**
|
||||
```bash
|
||||
# 系統級服務
|
||||
sudo cp plist/com.momentry.{service}.plist /Library/LaunchDaemons/
|
||||
|
||||
# 用戶級服務
|
||||
cp plist/com.momentry.{service}.plist ~/Library/LaunchAgents/
|
||||
```
|
||||
|
||||
**步驟 4:載入服務**
|
||||
```bash
|
||||
sudo launchctl load /Library/LaunchDaemons/com.momentry.{service}.plist
|
||||
```
|
||||
|
||||
**步驟 5:添加監控**
|
||||
在 `monitor/config/monitor_config.yaml` 中添加服務配置。
|
||||
|
||||
### 9.5 服務管理命令
|
||||
|
||||
```bash
|
||||
# 啟動
|
||||
sudo launchctl load /Library/LaunchDaemons/com.momentry.{service}.plist
|
||||
|
||||
# 停止
|
||||
sudo launchctl unload /Library/LaunchDaemons/com.momentry.{service}.plist
|
||||
|
||||
# 查看狀態
|
||||
launchctl list | grep momentry
|
||||
|
||||
# 查看日誌
|
||||
tail -f /Users/accusys/momentry/log/{service}.log
|
||||
```
|
||||
|
||||
### 9.6 服務分類
|
||||
|
||||
| 類型 | Plist 位置 | 示例 |
|
||||
|------|------------|------|
|
||||
| 系統級 | `/Library/LaunchDaemons/` | PostgreSQL, Caddy |
|
||||
| 用戶級 | `~/Library/LaunchAgents/` | Redis, n8n, Ollama |
|
||||
|
||||
### 9.7 模板文件
|
||||
|
||||
| 文件 | 說明 |
|
||||
|------|------|
|
||||
| `plist/template.service.plist` | 用戶級服務模板 |
|
||||
| `plist/template.root.plist` | 系統級服務模板 |
|
||||
| `docs/SERVICE_ADDITION_GUIDE.md` | 完整規範文檔 |
|
||||
|
||||
---
|
||||
|
||||
## 十、版本歷史
|
||||
|
||||
| 版本 | 日期 | 內容 |
|
||||
|------|------|------|
|
||||
| 0.1 | 2026-03-15 | 初始版本:七層監控架構、15 個服務、Storage 設計 |
|
||||
| 0.2 | 2026-03-15 | 新增服務添加規範 (第九章)、模板文件 |
|
||||
Reference in New Issue
Block a user