NodeGet CRUD
Hello
测试服务是否正常运行,返回固定字符串。
方法
调用方法名为 nodeget-server_hello,无需任何参数。
权限要求
该方法不需要鉴权,可直接调用。
返回值
返回固定字符串 "NodeGet Server Is Running!",可用于判断服务端是否在线。
完整示例
请求:
{
"jsonrpc": "2.0",
"method": "nodeget-server_hello",
"params": [],
// 无参数
"id": 1
}响应:
{
"jsonrpc": "2.0",
"result": "NodeGet Server Is Running!",
"id": 1
}Version
获取服务端的版本、构建、编译器等详细信息。
方法
调用方法名为 nodeget-server_version,无需任何参数。
权限要求
该方法不需要鉴权,可直接调用。
返回值
返回 NodeGetVersion 结构体,包含完整的编译时信息,所有字段均为字符串类型,详细说明参考 NodeGet 总览。
{
"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 版本
}完整示例
请求:
{
"jsonrpc": "2.0",
"method": "nodeget-server_version",
"params": [], // 无参数
"id": 1
}响应:
{
"jsonrpc": "2.0",
"result": {
"binary_type": "Server",
"build_time": "2026-02-08T10:44:02.848471700Z",
"cargo_target_triple": "x86_64-pc-windows-msvc",
"cargo_version": "0.0.1",
"git_branch": "main",
"git_commit_date": "2026-02-08T07:25:09.000000000Z",
"git_commit_message": "Feat: ...",
"git_commit_sha": "73d9589",
"rustc_channel": "nightly",
"rustc_commit_date": "2025-12-30",
"rustc_commit_hash": "0e8999942552691afc20495af6227eca8ab0af05",
"rustc_llvm_version": "21.1",
"rustc_version": "1.94.0-nightly"
},
"id": 1
}UUID
获取当前 Server 的 UUID。
方法
调用方法名为 nodeget-server_uuid,无需任何参数。
权限要求
该方法不需要鉴权,可直接调用。
返回值
返回当前服务端的 UUID 字符串,该 UUID 在配置文件中通过 server_uuid 字段设定。
完整示例
请求:
{
"jsonrpc": "2.0",
"method": "nodeget-server_uuid",
"params": [], // 无参数
"id": 1
}响应:
{
"jsonrpc": "2.0",
"result": "e8583352-39e8-5a5b-b66c-e450689088fd", // Server UUID
"id": 1
}List All Agent UUID
获取 Server 中所有 Agent 的 UUID 列表。
方法
调用方法名为 nodeget-server_list_all_agent_uuid,需要提供以下参数:
{
"token": "demo_token" // Token 字符串
}权限要求
- Permission:
NodeGet::ListAllAgentUuid - Scope 行为:
GlobalScope 下拥有该权限: 返回系统内所有 Agent UUIDAgentUuid(xxx)Scope 下拥有该权限: 可参与返回xxx- 最终返回结果会再过滤为"当前 token 在该
AgentUuid下至少有一种可操作权限(任一非NodeGet::ListAllAgentUuid权限)"的 UUID
返回值
返回包含 uuids 字段的对象,其值为 Vec<Uuid> 数组。
该方法会从以下三个表中获取所有不同的 Agent UUID:
static_monitoring- 静态监控数据表dynamic_monitoring- 动态监控数据表task- 任务数据表
返回的 UUID 列表是去重后按字母顺序排序的。
完整示例
请求:
{
"jsonrpc": "2.0",
"method": "nodeget-server_list_all_agent_uuid",
"params": {
"token": "demo_token"
},
"id": 1
}响应:
{
"jsonrpc": "2.0",
"result": {
"uuids": [
"e8583352-39e8-5a5b-b66c-e450689088fd",
"a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
]
},
"id": 1
}Read Config
读取当前 Server 使用的配置文件原文(config.toml 文本)。
方法
调用方法名为 nodeget-server_read_config,需要提供以下参数:
{
"token": "SUPER_TOKEN_KEY:SUPER_TOKEN_SECRET" // SuperToken 字符串
}权限要求
该方法仅允许 SuperToken 调用。
token 支持以下格式之一:
token_key:token_secretusername|password
返回值
返回配置文件在磁盘上的原始文本内容,为 String 类型。
完整示例
请求:
{
"jsonrpc": "2.0",
"method": "nodeget-server_read_config",
"params": {
"token": "SUPER_TOKEN_KEY:SUPER_TOKEN_SECRET"
},
"id": 1
}响应:
{
"jsonrpc": "2.0",
"result": "ws_listener = \"0.0.0.0:3000\"\\nserver_uuid = \"auto_gen\"\\n\\n[logging]\\nlog_filter = \"info\"\\n\\n[database]\\ndatabase_url = \"sqlite://nodeget.db?mode=rwc\"\\n...", // 配置文件原始文本
"id": 1
}Edit Config
写入新的 Server 配置文本,并触发服务端配置热重载。
方法
调用方法名为 nodeget-server_edit_config,需要提供以下参数:
{
"token": "SUPER_TOKEN_KEY:SUPER_TOKEN_SECRET", // SuperToken 字符串
"config_string": "ws_listener = \"0.0.0.0:3000\"\\n..." // 完整的 TOML 配置文本
}权限要求
该方法仅允许 SuperToken 调用。
token 支持以下格式之一:
token_key:token_secretusername|password
返回值
返回 bool 类型,true 表示配置写入成功并已触发热重载。
行为说明:
- 服务端会先校验
config_string是否是可解析的 Server TOML 配置 - 校验通过后写入配置文件
- 写入成功后触发配置重载流程
完整示例
请求:
{
"jsonrpc": "2.0",
"method": "nodeget-server_edit_config",
"params": {
"token": "SUPER_TOKEN_KEY:SUPER_TOKEN_SECRET",
"config_string": "ws_listener = \"0.0.0.0:3000\"\\nserver_uuid = \"auto_gen\"\\njsonrpc_max_connections = 100\\n\\n[logging]\\nlog_filter = \"info\"\\n\\n[database]\\ndatabase_url = \"sqlite://data/server.db?mode=rwc\""
},
"id": 1
}响应:
{
"jsonrpc": "2.0",
"result": true, // 写入成功
"id": 1
}Database Storage
查询数据库中各业务表的存储占用大小(字节)。
方法
调用方法名为 nodeget-server_database_storage,需要提供以下参数:
{
"token": "SUPER_TOKEN_KEY:SUPER_TOKEN_SECRET" // SuperToken 字符串
}权限要求
该方法仅允许 SuperToken 调用。
token 支持以下格式之一:
token_key:token_secretusername|password
返回值
返回包含 tables 和 total 两个字段的对象,详细说明参考 NodeGet 总览。
tables: 各表名到存储大小(字节)的映射,按表名字母顺序排列total: 所有表存储大小之和(字节)
查询范围为 9 张业务表,不含 seaql_migrations。
不同数据库后端的查询方式不同:
- PostgreSQL: 使用
pg_total_relation_size()获取各表总大小(含索引和 TOAST 数据) - SQLite: 使用
dbstat虚拟表查询各表占用的页面总大小
完整示例
请求:
{
"jsonrpc": "2.0",
"method": "nodeget-server_database_storage",
"params": {
"token": "SUPER_TOKEN_KEY:SUPER_TOKEN_SECRET"
},
"id": 1
}响应:
{
"jsonrpc": "2.0",
"result": {
"tables": {
"crontab": 4096,
"crontab_result": 8192,
"dynamic_monitoring": 16384,
"js_result": 4096,
"js_worker": 4096,
"kv": 8192,
"static_monitoring": 8192,
"task": 4096,
"token": 4096
},
"total": 61440
},
"id": 1
}Log
查询服务端内存日志缓冲区中的所有日志条目。
方法
调用方法名为 nodeget-server_log,需要提供以下参数:
{
"token": "SUPER_TOKEN_KEY:SUPER_TOKEN_SECRET"
// SuperToken 字符串
}权限要求
该方法仅允许 SuperToken 调用。
token 支持以下格式之一:
token_key:token_secretusername|password
返回值
返回一个 JSON 数组,每个元素为一条日志记录,包含以下字段:
timestamp: ISO 8601 格式的时间戳(含时区)level: 日志级别(TRACE/DEBUG/INFO/WARN/ERROR)target: 日志 target(数据库相关日志统一重映射为"db")message: 日志消息文本fields: 结构化字段对象(无额外字段时为空对象{})spans: span 上下文数组(无 span 时为空数组[])
缓冲区为固定容量的环形缓冲区,满时自动淘汰最旧的条目。返回顺序为时间正序(最旧在前)。
容量和过滤级别可在 config.toml 的 [logging] 段中通过 memory_log_capacity 和 memory_log_filter 配置。
完整示例
请求:
{
"jsonrpc": "2.0",
"method": "nodeget-server_log",
"params": {
"token": "SUPER_TOKEN_KEY:SUPER_TOKEN_SECRET"
},
"id": 1
}响应:
{
"jsonrpc": "2.0",
"result": [
{
"timestamp": "2026-04-11T12:00:00.000+08:00",
"level": "INFO",
"target": "server",
"message": "Starting nodeget-server",
"fields": {},
"spans": []
},
{
"timestamp": "2026-04-11T12:00:01.234+08:00",
"level": "DEBUG",
"target": "rpc",
"message": "success",
"fields": {},
"spans": [
{
"name": "kv::get_value",
"fields": "token_key=demo namespace=test key=foo"
}
]
},
{
"timestamp": "2026-04-11T12:00:01.240+08:00",
"level": "DEBUG",
"target": "db",
"message": "SELECT \"kv\".\"key\", \"kv\".\"value\" FROM \"kv\" WHERE \"kv\".\"namespace\" = $1 AND \"kv\".\"key\" = $2",
"fields": {},
"spans": []
}
],
"id": 1
}Stream Log
实时订阅服务端日志流。该方法是 JSON-RPC Subscription(基于 WebSocket),建立订阅后服务端会持续推送匹配过滤条件的日志事件。
方法
订阅方法名为 nodeget-server_stream_log,取消订阅方法名为 nodeget-server_unsubscribe_stream_log。
需要提供以下参数:
{
"token": "SUPER_TOKEN_KEY:SUPER_TOKEN_SECRET", // SuperToken 字符串
"log_filter": "info,rpc=debug,db=trace" // 日志过滤规则,语法同 RUST_LOG
}log_filter 参数说明:
- 语法与
RUST_LOG环境变量相同,支持target=level的逗号分隔组合 - 支持虚拟 target
db,会自动展开为sea_orm/sea_orm_migration/sqlx - 可用的 target:
server,rpc,db,kv,monitoring,task,token,js_worker,js_result,crontab,crontab_result,js_runtime,terminal - 示例:
"info"接收所有 INFO 及以上级别,"debug,db=trace"接收 DEBUG 级别 + 数据库 TRACE 级别
权限要求
该方法仅允许 SuperToken 调用。
token 支持以下格式之一:
token_key:token_secretusername|password
认证失败时,服务端会拒绝订阅请求(reject),WebSocket 连接不会建立订阅通道。
返回值
订阅建立成功后,服务端通过 WebSocket 持续推送 JSON-RPC notification,每条 notification 的 params.result 为一个日志事件对象:
timestamp: ISO 8601 格式的时间戳(含时区)level: 日志级别(TRACE/DEBUG/INFO/WARN/ERROR)target: 日志 target(数据库相关日志统一重映射为"db")message: 日志消息文本fields: 结构化字段对象(无额外字段时为空对象{})spans: span 上下文数组(无 span 时为空数组[])
行为说明
- 订阅建立后,仅推送新产生的日志事件(不回放历史日志,历史日志请使用
log方法查询) - 每个订阅者拥有独立的 512 容量 channel 缓冲区,当客户端消费速度过慢导致缓冲区满时,新日志会被丢弃
- 客户端断开 WebSocket 连接或发送取消订阅请求后,服务端自动清理对应订阅
- 支持多个客户端同时订阅,各订阅者的
log_filter互相独立
完整示例
订阅请求:
{
"jsonrpc": "2.0",
"method": "nodeget-server_stream_log",
"params": {
"token": "SUPER_TOKEN_KEY:SUPER_TOKEN_SECRET",
"log_filter": "info,rpc=debug"
},
"id": 1
}订阅成功响应(返回 subscription ID):
{
"jsonrpc": "2.0",
"result": "subscription_id_here",
"id": 1
}后续推送的日志事件(JSON-RPC notification):
{
"jsonrpc": "2.0",
"method": "nodeget-server_stream_log",
"params": {
"subscription": "subscription_id_here",
"result": {
"timestamp": "2026-04-11T12:00:05.678+08:00",
"level": "INFO",
"target": "server",
"message": "config reloaded successfully",
"fields": {},
"spans": []
}
}
}{
"jsonrpc": "2.0",
"method": "nodeget-server_stream_log",
"params": {
"subscription": "subscription_id_here",
"result": {
"timestamp": "2026-04-11T12:00:06.123+08:00",
"level": "DEBUG",
"target": "rpc",
"message": "success",
"fields": {},
"spans": [
{
"name": "kv::set_value",
"fields": "token_key=demo namespace=config key=theme"
}
]
}
}
}取消订阅请求:
{
"jsonrpc": "2.0",
"method": "nodeget-server_unsubscribe_stream_log",
"params": {
"subscription": "subscription_id_here"
},
"id": 2
}取消订阅响应:
{
"jsonrpc": "2.0",
"result": true,
"id": 2
}