1 个不稳定版本
0.1.0 | 2024 年 7 月 12 日 |
---|
#184 在 魔法豆
197 每月下载
用于 40 个 crates (11 个直接)
28KB
540 行
健康监控
为节点组件提供健康检查基础设施,允许组件报告其当前健康状态。节点运行的所有组件的健康状态将被汇总,并以 HTTP GET /health
端点形式公开,绑定到专门的健康检查端口,适用于主节点和外部节点。此端点可以用作 Kubernetes 的就绪探测,或用于其他自动化。
主要概念
组件 是节点的一个逻辑上隔离的部分,它影响节点处理请求的能力(即节点健康)。组件应该无限期运行,直到节点收到停止信号。
- 内部组件对应一个或多个 Tokio 任务。内部组件的例子包括:JSON-RPC API 服务器、默克尔树、一致性检查器、重组检测器。
- 外部组件对应与节点通信的另一个进程。外部组件的例子包括:Postgres 连接池、主节点 JSON-RPC(对于外部节点)。
每个组件都可以报告其健康状态,它由两部分组成
- 状态,例如,“未就绪”、“就绪”、“关闭”、“恐慌”;请参见 crate 代码以获取完整列表。
- 详细信息,一个具有特定组件模式的 JSON 值。例如,默克尔树将其 L1 批次“游标”作为此信息的一部分报告。
所有组件的健康状态汇总为 应用程序健康,它具有自己的状态,该状态是组件状态的最低值。应用程序健康由 /health
端点返回。
/health
端点格式
/health
将返回当前应用的编码为 JSON 对象的健康状态。如果应用健康,则响应的 HTTP 状态为 20x;如果不健康,则为 50x。
警告。目前
/health
端点返回的数据模式不稳定,可能会在没有通知的情况下更改。请自行承担风险。
外部节点端点输出示例
{
"status": "ready",
"components": {
"sync_state": {
"status": "ready",
"details": {
"is_synced": true,
"local_block": 91,
"main_node_block": 91
}
},
"connection_pool": {
"status": "ready",
"details": {
"max_size": 50,
"pool_size": 10
}
},
"tree": {
"status": "ready",
"details": {
"leaf_count": 12624,
"mode": "full",
"next_l1_batch_number": 26,
"root_hash": "0x54d537798f9ebd1b6463e3773c3549a389709987d559fdcd8d402a652a33fb68",
"stage": "main_loop"
}
},
"snapshot_recovery": {
"status": "ready",
"details": {
"factory_deps_recovered": true,
"snapshot_l1_batch": 24,
"snapshot_miniblock": 89,
"storage_logs_chunk_count": 10,
"storage_logs_chunks_left_to_process": 0,
"tokens_recovered": true
}
},
"consistency_checker": {
"status": "ready",
"details": {
"first_checked_batch": 25,
"last_checked_batch": 25
}
},
"ws_api": {
"status": "ready"
},
"prometheus_exporter": {
"status": "ready"
},
"reorg_detector": {
"status": "ready",
"details": {
"last_correct_l1_batch": 25,
"last_correct_miniblock": 91
}
},
"main_node_http_rpc": {
"status": "ready"
},
"batch_status_updater": {
"status": "ready",
"details": {
"last_committed_l1_batch": 25,
"last_executed_l1_batch": 25,
"last_proven_l1_batch": 25
}
},
"commitment_generator": {
"status": "ready",
"details": {
"l1_batch_number": 25
}
},
"http_api": {
"status": "ready"
}
}
}
依赖项
~5–12MB
~122K SLoC