节点在线、应用在线、配置在线使用令牌查询
|
# StarAgent æž¶æž„
> 版本:v1.0 | 日期:2026-07-15
> 对应模å—:NODE 节点管ç†
> 忍¡å—文档:[NODE-9-指令下å‘](/NewLife/Stardust/Blob/master/Doc/NODE-9-指令下å‘.md) | [NODE-14-防ç«å¢™ç®¡ç†](/NewLife/Stardust/Blob/master/Doc/NODE-14-防ç«å¢™ç®¡ç†.md) | [NODE-15-StarAgent远程部署](/NewLife/Stardust/Blob/master/Doc/NODE-15-StarAgent远程部署.md)
---
## 1. 概述
StarAgent 是部署在æ¯å°åº”用æœåŠ¡å™¨ä¸Šçš„èŠ‚ç‚¹ä»£ç†ç¨‹åºï¼Œä»¥ç³»ç»ŸæœåŠ¡ï¼ˆWindows Service / Linux systemd)方å¼è¿è¡Œï¼Œè´Ÿè´£ï¼š
- **进程守护**ï¼šç®¡ç†æœ¬åœ°ä¸šåŠ¡åº”ç”¨çš„å¯åЍã€åœæ¢ã€å®ˆæŠ¤ã€è‡ªåЍé‡å¯
- **监控采集**:采集 CPU/内å˜/ç£ç›˜/网络ç‰ç³»ç»ŸæŒ‡æ ‡ï¼Œä¸ŠæŠ¥ç»™ StarServer
- **远程å‘布**:接收 StarServer çš„å‘布指令,下载应用包并执行部署
- **命令执行**:接收并执行远程命令(å¯åЍæœåŠ¡ã€åœæ¢æœåŠ¡ã€è„šæœ¬æ‰§è¡Œç‰ï¼‰
- **自身å‡çº§**:自动检测 StarAgent 新版本并å‡çº§
---
## 2. æ ¸å¿ƒåŠŸèƒ½
### 2.1 注册与心跳
```
å¯åЍ → 读å–ç¡¬ä»¶ä¿¡æ¯ â†’ 计算节点编ç → Login → 获å–令牌 → 心跳循环
```
- 节点编ç å…¬å¼ï¼š`Crc({ProductCode}@{UUID}@{DiskID}@{Macs})`
- 心跳周期:60 ç§’ï¼ŒåŒæ—¶ä¸ŠæŠ¥ CPU/内å˜/ç£ç›˜/ç½‘ç»œç‰æŒ‡æ ‡
- 在线会è¯ï¼šé€šè¿‡ WebSocket é•¿è¿žæŽ¥ä¿æŒï¼Œæ–线自动é‡è¿ž
### 2.2 进程守护
`ServiceManager` ç®¡ç†æœ¬åœ°åº”用的完整生命周期:
| 功能 | 说明 |
|------|------|
| å¯åŠ¨è¿›ç¨‹ | 按部署模å¼ï¼ˆStandard/Shadow/Hosted/Task)å¯åЍ |
| 自动é‡å¯ | 进程异常退出时自动拉起 |
| 内å˜é™åˆ¶ | 内å˜è¶…é™è‡ªåЍé‡å¯ |
| 文件监控 | 文件å˜åŒ–自动é‡å¯ï¼ˆçƒæ›´æ–°ï¼‰ |
| ä¼˜é›…å…³é— | SIGTERM → è¶…æ—¶ → SIGKILL |
### 2.3 监控采集
`MachineInfoProvider` é‡‡é›†ç³»ç»ŸæŒ‡æ ‡ï¼š
- CPU 使用率
- 内å˜ä½¿ç”¨çŽ‡ï¼ˆæ€»/已用/å¯ç”¨ï¼‰
- ç£ç›˜ä½¿ç”¨çއ
- 网络æµé‡
- 进程列表
- è‡ªå®šä¹‰æŒ‡æ ‡
### 2.4 命令执行
通过 WebSocket åŒé€šé“接收命令:
| 命令类型 | 说明 |
|----------|------|
| `StartService` | å¯åŠ¨æŒ‡å®šéƒ¨ç½²åº”ç”¨ |
| `StopService` | åœæ¢æŒ‡å®šéƒ¨ç½²åº”用 |
| `RestartService` | é‡å¯æŒ‡å®šéƒ¨ç½²åº”用 |
| `InstallService` | 安装系统æœåŠ¡ |
| `UninstallService` | å¸è½½ç³»ç»ŸæœåŠ¡ |
| `ExecuteCommand` | 执行 Shell 命令 |
| `Upgrade` | å‡çº§ StarAgent 自身 |
---
## 3. 通信架构
```
┌─────────────────┠HTTP/WebSocket ┌─────────────────â”
│ StarAgent │ ◄────────────────────────────► │ StarServer │
│ │ Login / Ping / Command │ │
│ ┌───────────┠│ │ ┌───────────┠│
│ │ StarClient │ │ │ │NodeCtrl │ │
│ └───────────┘ │ │ └───────────┘ │
│ ┌───────────┠│ │ ┌───────────┠│
│ │ServiceMgr │ │ │ │ DeploySvc │ │
│ └───────────┘ │ │ └───────────┘ │
│ ┌───────────┠│ │ │
│ │MachineInfo│ │ │ │
│ └───────────┘ │ │ │
└─────────────────┘ └─────────────────┘
```
---
## 4. 部署模å¼
| æ¨¡å¼ | 说明 | 进程关系 |
|------|------|----------|
| **Standard** | 直接è¿è¡Œå进程 | StarAgent → å进程 |
| **Shadow** | 影忍¡å¼ï¼Œæ–°ç‰ˆå…ˆå¯åЍå†åˆ‡æ¢ | StarAgent → å进程(旧)→ å进程(新)|
| **Hosted** | 宿主进程托管 | StarAgent → Host → æ’ä»¶ |
| **Task** | 一次性任务 | StarAgent → 任务进程(执行åŽé€€å‡ºï¼‰ |
---
## 5. 关键é…ç½®
通过 `StarAgent/Setting.cs` 管ç†ï¼š
| é…置项 | 说明 |
|--------|------|
| `ServerUrl` | StarServer åœ°å€ |
| `NodeCode` | 节点编ç (自动计算) |
| `Secret` | 节点密钥(自动注册åŽèŽ·å–) |
| `LocalPort` | 本地 API 端å£ï¼ˆä¾› StarGateway 调用) |
| `HeartbeatPeriod` | 心跳周期(默认 60 秒) |
| `StartTimeout` | 应用å¯åŠ¨è¶…æ—¶ï¼ˆé»˜è®¤ 30 秒) |
| `StopTimeout` | åº”ç”¨åœæ¢è¶…时(默认 10 秒) |
| `MemoryLimit` | 内å˜é™åˆ¶ï¼ˆMB,0 ä¸é™åˆ¶ï¼‰ |
| `AutoStart` | å¼€æœºè‡ªå¯ |
## 6. Web 管ç†é¢æ¿
### 6.1 概述
StarAgent 基于 NewLife.Agent 内置的 `AgentWebPanel` 框架,æä¾›äº†è½»é‡çº§ Web 管ç†é¢æ¿ã€‚è¯¥é¢æ¿å†…嵌于 StarAgent 进程ä¸ï¼Œé€šè¿‡ HTTP è®¿é—®ï¼Œæ— éœ€é¢å¤–部署。
- **框架**:`NewLife.Agent.WebPanel.AgentWebPanel`
- **实现**:`StarAgent.WebPanel.StarPanel`(继承定制)
- **API**:`StarAgent.WebPanel.StarApi`
- **å‰ç«¯**ï¼šåµŒå…¥å¼ `index.html` SPA(å•页应用)
- **监å¬ç«¯å£**:默认 5580(由 `agent.config` ä¸ `WebPort` é…置)
### 6.2 颿¿åŠŸèƒ½
颿¿é‡‡ç”¨ 7 个 Tab 的布局:
| Tab | 类型 | 功能 |
|-----|------|------|
| 📊 **状æ€** | 增强 | æœåŠ¡çŠ¶æ€ã€èµ„æºç›‘控(CPU/内å˜/线程/奿Ÿ„/网络/ç£ç›˜IOï¼‰ã€æœ¬æœºè¯¦æƒ…(ç£ç›˜åˆ†åŒº/网å¡/进程 Top/系统信æ¯ï¼‰ |
| 📦 **åæœåŠ¡** | 新增 | åæœåŠ¡ CRUDï¼ˆæ·»åŠ /编辑/åˆ é™¤ï¼‰ã€å¯åœé‡å¯æ“作ã€è¿è¡Œçжæ€å®žæ—¶æŸ¥çœ‹ |
| âš¡ **控制** | ä¿ç•™ | StarAgent 自身æœåŠ¡å¯åœæŽ§åˆ¶ |
| âš™ **é…ç½®** | ä¿ç•™ | AgentSetting é…置查看与修改 |
| 🌠**星尘设置** | 新增 | StarSetting(Server/AppKey/Secret)+ StarAgentSetting(LocalPort/Code/Channel/Delay ç‰ï¼‰é…置查看与修改 |
| 📋 **日志** | ä¿ç•™ | 日志文件æµè§ˆä¸Žå®žæ—¶æŸ¥çœ‹ |
| 🕠**看门狗** | ä¿ç•™ | 看门狗æœåŠ¡çŠ¶æ€ç›‘控 |
### 6.3 架构说明
```
æµè§ˆå™¨ ──HTTP──► StarAgent Web 颿¿ (Port 5580)
│
┌──────────┴──────────â”
â–¼ â–¼
HttpServer EmbeddedResource
┌─────────────┠┌──────────────â”
│ /api/* │ │ /* │
│ ApiController│ │ index.html │
│ (内置) │ │ favicon.ico │
│ │ └──────────────┘
│ /api/star/* │
│ StarAgentApi│
│ Controller │
└──────┬──────┘
│
â–¼
ServiceManager / StarSetting / StarAgentSetting
```
- **内置 API**(`/api/*`):登录鉴æƒã€æœåŠ¡çŠ¶æ€ã€Agenté…ç½®ã€æ—¥å¿—ã€çœ‹é—¨ç‹— — ç”± `AgentWebPanel.ApiController` æä¾›
- **StarAgent API**(`/api/star/*`ï¼‰ï¼šåæœåŠ¡ç®¡ç†ã€æ˜Ÿå°˜é…ç½®ã€æœ¬æœºä¿¡æ¯ — ç”± `StarApi` æä¾›
- **陿€æ–‡ä»¶**:`/` æ ¹è·¯å¾„æ˜ å°„åˆ°åµŒå…¥å¼ `index.html`
### 6.4 扩展机制
`AgentWebPanel` æä¾› `GetExtensions()` 虚方法,支æŒé€šè¿‡ `PanelExtension` æ³¨å†Œè‡ªå®šä¹‰é¢æ¿ã€‚æœªæ¥æ’ä»¶å¯é€šè¿‡é‡å†™æ¤æ–¹æ³•åŠ¨æ€æ·»åŠ Tab。
### 6.5 鉴æƒç–ç•¥
| 级别 | 说明 |
|------|------|
| `None` | ä¸é‰´æƒï¼Œä»»ä½•人都å¯è®¿é—® |
| `LocalOnly`(默认) | 本地地å€ï¼ˆ127.0.0.1)å…鉴æƒï¼Œè¿œç¨‹è®¿é—®éœ€ç™»å½• |
| `Full` | 全部请求需登录 |
凿®åœ¨ `agent.config` ä¸é€šè¿‡ `WebUserName` / `WebPassword` é…置。登录åŽç¾å‘ Bearer Token,有效期 24 å°æ—¶ã€‚
---
> è¯¦ç»†åæ¨¡å—文档è§ï¼š[NODE-9-指令下å‘](/NewLife/Stardust/Blob/master/Doc/NODE-9-指令下å‘.md)ã€[NODE-15-StarAgent远程部署](/NewLife/Stardust/Blob/master/Doc/NODE-15-StarAgent远程部署.md)ã€[NODE-14-防ç«å¢™ç®¡ç†](/NewLife/Stardust/Blob/master/Doc/NODE-14-防ç«å¢™ç®¡ç†.md)
|