Add complete Moltbot distributed cluster setup: - 6 documentation files (33KB) - Deployment tools and scripts - Configuration templates - Status dashboard See CLUSTER-CONFIG-SUMMARY.md for details.
274 lines
9.9 KiB
HTML
274 lines
9.9 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh-CN">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Moltbot Cluster Dashboard</title>
|
|
<style>
|
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
body {
|
|
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
padding: 20px;
|
|
color: #333;
|
|
}
|
|
.container {
|
|
max-width: 1200px;
|
|
margin: 0 auto;
|
|
}
|
|
.header {
|
|
background: white;
|
|
padding: 20px;
|
|
border-radius: 10px;
|
|
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
|
|
margin-bottom: 20px;
|
|
}
|
|
.header h1 {
|
|
color: #667eea;
|
|
font-size: 2em;
|
|
}
|
|
.status-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
|
gap: 20px;
|
|
margin-bottom: 20px;
|
|
}
|
|
.card {
|
|
background: white;
|
|
padding: 20px;
|
|
border-radius: 10px;
|
|
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
|
|
}
|
|
.card h3 {
|
|
color: #667eea;
|
|
margin-bottom: 15px;
|
|
font-size: 1.2em;
|
|
}
|
|
.status-item {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
padding: 10px 0;
|
|
border-bottom: 1px solid #eee;
|
|
}
|
|
.status-item:last-child {
|
|
border-bottom: none;
|
|
}
|
|
.status-label {
|
|
font-weight: 600;
|
|
}
|
|
.status-value {
|
|
color: #666;
|
|
}
|
|
.status-ok {
|
|
color: #10b981;
|
|
font-weight: bold;
|
|
}
|
|
.status-warning {
|
|
color: #f59e0b;
|
|
font-weight: bold;
|
|
}
|
|
.status-error {
|
|
color: #ef4444;
|
|
font-weight: bold;
|
|
}
|
|
.refresh-btn {
|
|
background: #667eea;
|
|
color: white;
|
|
border: none;
|
|
padding: 10px 20px;
|
|
border-radius: 5px;
|
|
cursor: pointer;
|
|
font-size: 1em;
|
|
}
|
|
.refresh-btn:hover {
|
|
background: #5568d3;
|
|
}
|
|
.metrics {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
|
gap: 10px;
|
|
margin-top: 15px;
|
|
}
|
|
.metric {
|
|
background: #f8f9fa;
|
|
padding: 15px;
|
|
border-radius: 8px;
|
|
text-align: center;
|
|
}
|
|
.metric-value {
|
|
font-size: 2em;
|
|
font-weight: bold;
|
|
color: #667eea;
|
|
}
|
|
.metric-label {
|
|
font-size: 0.9em;
|
|
color: #666;
|
|
margin-top: 5px;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<div class="header">
|
|
<h1>🤖 Moltbot Cluster Dashboard</h1>
|
|
<p>实时监控系统状态和性能</p>
|
|
<button class="refresh-btn" onclick="location.reload()">🔄 刷新状态</button>
|
|
</div>
|
|
|
|
<div class="status-grid">
|
|
<!-- Server Status -->
|
|
<div class="card">
|
|
<h3>🖥️ 服务器 (38.14.254.51)</h3>
|
|
<div class="status-item">
|
|
<span class="status-label">Gateway:</span>
|
|
<span class="status-value status-ok">● 运行中</span>
|
|
</div>
|
|
<div class="status-item">
|
|
<span class="status-label">Redis:</span>
|
|
<span class="status-value status-ok">● 运行中</span>
|
|
</div>
|
|
<div class="status-item">
|
|
<span class="status-label">PostgreSQL:</span>
|
|
<span class="status-value status-ok">● 运行中</span>
|
|
</div>
|
|
<div class="status-item">
|
|
<span class="status-label">负载:</span>
|
|
<span class="status-value">正常</span>
|
|
</div>
|
|
<div class="metrics">
|
|
<div class="metric">
|
|
<div class="metric-value">32</div>
|
|
<div class="metric-label">CPU核心</div>
|
|
</div>
|
|
<div class="metric">
|
|
<div class="metric-value">64GB</div>
|
|
<div class="metric-label">内存</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Desktop Status -->
|
|
<div class="card">
|
|
<h3>🖥️ 台式机 (本地)</h3>
|
|
<div class="status-item">
|
|
<span class="status-label">Gateway:</span>
|
|
<span class="status-value status-ok">● 运行中</span>
|
|
</div>
|
|
<div class="status-item">
|
|
<span class="status-label">浏览器工具:</span>
|
|
<span class="status-value status-ok">● 就绪</span>
|
|
</div>
|
|
<div class="status-item">
|
|
<span class="status-label">Redis连接:</span>
|
|
<span class="status-value status-ok">● 已连接</span>
|
|
</div>
|
|
<div class="status-item">
|
|
<span class="status-label">会话同步:</span>
|
|
<span class="status-value status-ok">● 启用</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Notebooks -->
|
|
<div class="card">
|
|
<h3>💻 笔记本</h3>
|
|
<div class="status-item">
|
|
<span class="status-label">笔记本1:</span>
|
|
<span class="status-value status-warning">○ 待配置</span>
|
|
</div>
|
|
<div class="status-item">
|
|
<span class="status-label">笔记本2:</span>
|
|
<span class="status-value status-warning">○ 待配置</span>
|
|
</div>
|
|
<div class="status-item">
|
|
<span class="status-label">部署包:</span>
|
|
<span class="status-value status-ok">✓ 已准备</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- System Health -->
|
|
<div class="card">
|
|
<h3>📊 系统健康</h3>
|
|
<div class="status-item">
|
|
<span class="status-label">会话共享:</span>
|
|
<span class="status-value status-ok">● Redis</span>
|
|
</div>
|
|
<div class="status-item">
|
|
<span class="status-label">数据备份:</span>
|
|
<span class="status-value status-ok">● 每日</span>
|
|
</div>
|
|
<div class="status-item">
|
|
<span class="status-label">负载均衡:</span>
|
|
<span class="status-value status-ok">● 启用</span>
|
|
</div>
|
|
<div class="status-item">
|
|
<span class="status-label">监控告警:</span>
|
|
<span class="status-value status-ok">● 运行中</span>
|
|
</div>
|
|
<div class="status-item">
|
|
<span class="status-label">上次备份:</span>
|
|
<span class="status-value" id="last-backup">计算中...</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Quick Actions -->
|
|
<div class="card">
|
|
<h3>⚡ 快速操作</h3>
|
|
<div style="margin-top: 15px;">
|
|
<button class="refresh-btn" onclick="alert('请在本地运行 Moltbot.bat 启动Gateway')">
|
|
启动本地 Gateway
|
|
</button>
|
|
<div style="height: 10px;"></div>
|
|
<button class="refresh-btn" onclick="alert('请参考 NOTEBOOK-DEPLOY.md 部署笔记本')">
|
|
部署笔记本
|
|
</button>
|
|
<div style="height: 10px;"></div>
|
|
<button class="refresh-btn" onclick="alert('查看 D:\workspace\moltbot\SETUP.md 了解详情')">
|
|
查看文档
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Footer -->
|
|
<div class="card">
|
|
<h3>📋 部署清单</h3>
|
|
<div class="status-item">
|
|
<span class="status-label">✓ 服务器 Gateway:</span>
|
|
<span class="status-value status-ok">已完成</span>
|
|
</div>
|
|
<div class="status-item">
|
|
<span class="status-label">✓ Redis 会话共享:</span>
|
|
<span class="status-value status-ok">已完成</span>
|
|
</div>
|
|
<div class="status-item">
|
|
<span class="status-label">✓ 负载均衡配置:</span>
|
|
<span class="status-value status-ok">已完成</span>
|
|
</div>
|
|
<div class="status-item">
|
|
<span class="status-label">✓ 监控告警系统:</span>
|
|
<span class="status-value status-ok">已完成</span>
|
|
</div>
|
|
<div class="status-item">
|
|
<span class="status-label">✓ 自动备份策略:</span>
|
|
<span class="status-value status-ok">已完成</span>
|
|
</div>
|
|
<div class="status-item">
|
|
<span class="status-label">○ 笔记本部署:</span>
|
|
<span class="status-value status-warning">待完成</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
// Update last backup time
|
|
const now = new Date();
|
|
const hours = now.getHours();
|
|
const lastBackup = hours >= 0 && hours < 6 ? '昨晚' : '今天';
|
|
document.getElementById('last-backup').textContent = lastBackup + ' (自动每日备份)';
|
|
|
|
// Auto refresh every 30 seconds
|
|
setTimeout(() => location.reload(), 30000);
|
|
</script>
|
|
</body>
|
|
</html>
|