NodeGet 总览
NodeGet 是本项目的基础服务接口模块,提供服务端状态查询、版本信息获取、配置管理等功能
所有方法均位于 nodeget-server 命名空间下
方法列表
| 方法名 | 描述 | 权限要求 |
|---|---|---|
| hello | 测试服务是否正常运行 | 无 |
| version | 获取服务端版本信息 | 无 |
| uuid | 获取当前 Server UUID | 无 |
| list_all_agent_uuid | NodeGet::ListAllAgentUuid 或 MonitoringUuid::List | |
| read_config | 读取服务端配置文件原文 | SuperToken |
| edit_config | 写入并触发服务端配置热重载 | SuperToken |
| database_storage | 查询数据库各表存储占用 | SuperToken |
| log | 查询内存日志缓冲区 | SuperToken |
| stream_log | 实时流式日志订阅(WebSocket) | SuperToken |
| exec_sql | 在主数据库执行原始 SQL | NodeGet::ExecSql |
| get_database_type | 获取主数据库后端类型 | NodeGet::ExecSql |
| self_update | 触发自更新 | SuperToken |
如需对本地 SQLite 数据库执行 SQL 操作,请使用 Db 命名空间。
版本信息结构体
调用 nodeget-server_version 返回的 NodeGetVersion 结构如下:
{
"binary_type": "Server",
// 二进制类型
"build_time": "2026-02-08T10:44:02.848471700Z",
// 构建时间
"cargo_target_triple": "x86_64-pc-windows-msvc",
// 编译目标
"cargo_version": "0.0.1",
// Cargo 版本号
"git_branch": "main",
// Git 分支
"git_commit_date": "2026-02-08T07:25:09.000000000Z",
// 提交日期
"git_commit_message": "Feat: ...",
// 提交信息
"git_commit_sha": "73d9589",
// 提交 SHA
"rustc_channel": "nightly",
// Rust 编译器通道
"rustc_commit_date": "2025-12-30",
// Rust 编译器提交日期
"rustc_commit_hash": "0e8999942552691afc20495af6227eca8ab0af05",
// Rust 编译器提交 Hash
"rustc_llvm_version": "21.1",
// LLVM 版本
"rustc_version": "1.94.0-nightly"
// Rust 版本
}Agent UUID 列表结构体
调用 nodeget-server_list_all_agent_uuid 返回的结构如下:
{
"uuids": [
"e8583352-39e8-5a5b-b66c-e450689088fd",
"a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
]
}该方法从 monitoring_uuid 缓存中获取所有 Agent UUID,该缓存是 Agent UUID 的权威数据源。
返回的 UUID 列表是去重后按字母顺序排序的
数据库存储信息结构体
调用 nodeget-server_database_storage 返回的结构如下:
{
"tables": {
"crontab": 4096,
// crontab 表大小(字节)
"crontab_result": 8192,
// crontab_result 表大小(字节)
"dynamic_monitoring": 16384,
// dynamic_monitoring 表大小(字节)
"dynamic_monitoring_summary": 4096,
// dynamic_monitoring_summary 表大小(字节)
"js_result": 4096,
// js_result 表大小(字节)
"js_worker": 4096,
// js_worker 表大小(字节)
"kv": 8192,
// kv 表大小(字节)
"monitoring_uuid": 4096,
// monitoring_uuid 表大小(字节)
"static_monitoring": 8192,
// static_monitoring 表大小(字节)
"task": 4096,
// task 表大小(字节)
"token": 4096
// token 表大小(字节)
},
"total": 69632
// 所有表大小之和(字节)
}tables 字段为各表名到存储大小(字节)的映射,按表名字母顺序排列
total 字段为所有表存储大小之和
查询范围包含以下 11 张业务表(不含 seaql_migrations):
static_monitoring- 静态监控数据表dynamic_monitoring- 动态监控数据表dynamic_monitoring_summary- 动态监控摘要表task- 任务数据表token- 令牌数据表kv- 键值存储表monitoring_uuid- Agent UUID 缓存表crontab- 定时任务表crontab_result- 定时任务结果表js_worker- JS Worker 表js_result- JS 执行结果表
不同数据库后端的查询方式:
- PostgreSQL: 使用
pg_total_relation_size()获取各表总大小(含索引和 TOAST 数据) - SQLite: 使用
dbstat虚拟表查询各表占用的页面总大小
内存日志结构体
调用 nodeget-server_log 返回一个 JSON 数组,每个元素的结构如下:
{
"timestamp": "2026-04-11T12:00:00.000+08:00",
// ISO 8601 时间戳(含时区)
"level": "DEBUG",
// 日志级别: TRACE / DEBUG / INFO / WARN / ERROR
"target": "rpc",
// 日志 target(数据库相关统一为 "db")
"message": "success",
// 日志消息
"fields": {
// 结构化字段(可为空对象)
"token_key": "abc123",
"response_len": "42"
},
"spans": [
// span 上下文(可为空数组)
{
"name": "kv::get_value",
"fields": "namespace=test key=foo"
}
]
}内存日志缓冲区为固定容量的环形缓冲区,满时自动淘汰最旧的条目。容量和过滤级别可在 [logging] 配置段中通过 memory_log_capacity 和 memory_log_filter 设置,详见 Server 配置
流式日志事件结构体
stream_log 订阅推送的每条日志事件结构与内存日志格式一致:
{
"timestamp": "2026-04-11T12:00:01.234+08:00",
// ISO 8601 时间戳(含时区)
"level": "DEBUG",
// 日志级别: TRACE / DEBUG / INFO / WARN / ERROR
"target": "rpc",
// 日志 target(数据库相关统一为 "db")
"message": "success",
// 日志消息
"fields": {
// 结构化字段(可为空对象)
"token_key": "abc123"
},
"spans": [
// span 上下文(可为空数组)
{
"name": "kv::get_value",
"fields": "namespace=test key=foo"
}
]
}与 log 方法的区别:
log返回内存缓冲区中的历史日志快照(一次性返回数组)stream_log是 WebSocket 订阅,建立连接后实时推送新产生的日志事件,每次推送一条
订阅者可通过 log_filter 参数指定过滤规则(语法同 RUST_LOG),仅接收匹配的日志。 log_filter 同样支持虚拟 target db(自动展开为 sea_orm / sea_orm_migration / sqlx)
注意事项
所有方法均位于 nodeget-server 命名空间下,调用时请使用 nodeget-server_<method> 格式的完整方法名。
hello / version / uuid 三个方法不需要任何鉴权,可直接调用。
list_all_agent_uuid(已废弃,推荐使用 agent-uuid_list_all)需要 Token 拥有 NodeGet::ListAllAgentUuid或 MonitoringUuid::List 权限。返回结果受 Scope 限制:仅当 Token 在对应 AgentUuid Scope 下同时拥有 "List 权限" 和 "至少一种非 List 操作权限" 时,才能看到该 UUID;全局 Scope 下拥有 List 权限则返回所有 UUID。
exec_sql 返回结果中,data 字段最多包含 10,000 条 SELECT 行。当实际行数超过 10,000 时,响应会额外包含 "truncated": true 字段,且 row_count 仍为实际总行数。DML/DDL 语句不受此限制影响。
read_config / edit_config / database_storage / log / stream_log / self_update 仅允许 SuperToken 调用,token 支持 token_key:token_secret 或 username|password 两种格式。
