Skip to content

NodeGet 总览

NodeGet 是本项目的基础服务接口模块,提供服务端状态查询、版本信息获取、配置管理等功能

所有方法均位于 nodeget-server 命名空间下

方法列表

方法名描述权限要求
hello测试服务是否正常运行
version获取服务端版本信息
uuid获取当前 Server UUID
list_all_agent_uuid获取所有 Agent UUID 列表(已废弃)NodeGet::ListAllAgentUuidMonitoringUuid::List
read_config读取服务端配置文件原文SuperToken
edit_config写入并触发服务端配置热重载SuperToken
database_storage查询数据库各表存储占用SuperToken
log查询内存日志缓冲区SuperToken
stream_log实时流式日志订阅(WebSocket)SuperToken
exec_sql在主数据库执行原始 SQLNodeGet::ExecSql
get_database_type获取主数据库后端类型NodeGet::ExecSql
self_update触发自更新SuperToken

如需对本地 SQLite 数据库执行 SQL 操作,请使用 Db 命名空间

版本信息结构体

调用 nodeget-server_version 返回的 NodeGetVersion 结构如下:

json
{
  "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 返回的结构如下:

json
{
  "uuids": [
    "e8583352-39e8-5a5b-b66c-e450689088fd",
    "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
  ]
}

该方法从 monitoring_uuid 缓存中获取所有 Agent UUID,该缓存是 Agent UUID 的权威数据源。

返回的 UUID 列表是去重后按字母顺序排序的

数据库存储信息结构体

调用 nodeget-server_database_storage 返回的结构如下:

json
{
  "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):

  1. static_monitoring - 静态监控数据表
  2. dynamic_monitoring - 动态监控数据表
  3. dynamic_monitoring_summary - 动态监控摘要表
  4. task - 任务数据表
  5. token - 令牌数据表
  6. kv - 键值存储表
  7. monitoring_uuid - Agent UUID 缓存表
  8. crontab - 定时任务表
  9. crontab_result - 定时任务结果表
  10. js_worker - JS Worker 表
  11. js_result - JS 执行结果表

不同数据库后端的查询方式:

  • PostgreSQL: 使用 pg_total_relation_size() 获取各表总大小(含索引和 TOAST 数据)
  • SQLite: 使用 dbstat 虚拟表查询各表占用的页面总大小

内存日志结构体

调用 nodeget-server_log 返回一个 JSON 数组,每个元素的结构如下:

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_capacitymemory_log_filter 设置,详见 Server 配置

流式日志事件结构体

stream_log 订阅推送的每条日志事件结构与内存日志格式一致:

json
{
  "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_secretusername|password 两种格式。