feat: 添加节点可观测性查询功能,支持获取节点的系统配置、指标快照、流量报告和健康事件

This commit is contained in:
ryan
2026-03-14 11:07:32 +08:00
parent d9d02e749a
commit 1f294d72b9
7 changed files with 307 additions and 0 deletions
+40
View File
@@ -12,6 +12,11 @@ type nodeAgentUpdateRequest struct {
TagName string `json:"tag_name"`
}
type nodeObservabilityQuery struct {
Hours int `form:"hours"`
Limit int `form:"limit"`
}
// CreateNode godoc
// @Summary Create node
// @Tags Nodes
@@ -207,3 +212,38 @@ func GetNodeAgentRelease(c *gin.Context) {
}
respondSuccess(c, release)
}
// GetNodeObservability godoc
// @Summary Get node observability details
// @Tags Nodes
// @Produce json
// @Security BearerAuth
// @Param id path int true "Node ID"
// @Param hours query int false "Lookback window in hours"
// @Param limit query int false "Max records per section"
// @Success 200 {object} map[string]interface{}
// @Failure 400 {object} map[string]interface{}
// @Router /api/nodes/{id}/observability [get]
func GetNodeObservability(c *gin.Context) {
id, err := strconv.ParseUint(c.Param("id"), 10, 64)
if err != nil || id == 0 {
respondBadRequest(c, "")
return
}
var query nodeObservabilityQuery
if err = c.ShouldBindQuery(&query); err != nil {
respondBadRequest(c, "")
return
}
view, err := service.GetNodeObservability(uint(id), service.NodeObservabilityQuery{
Hours: query.Hours,
Limit: query.Limit,
})
if err != nil {
respondFailure(c, err.Error())
return
}
respondSuccess(c, view)
}