Files
momentry_core/MOMENTRY_INTEGRATION_GUIDE.md
accusys 75edf0aa71 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
2026-03-25 14:53:41 +08:00

444 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 | 新增服務添加規範 (第九章)、模板文件 |