ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Open-Falcon 监控系统 API 指南:获取全部 DashboardScreen 屏幕列表(GET /api/v1/dashboard/screens)

Open-Falcon 监控系统 API 指南:获取全部 DashboardScreen 屏幕列表(GET /api/v1/dashboard/screens) 运维观测指标监控告警【免费下载链接】falcon-plusAn open-source and enterprise-level monitoring system.项目地址https://gitcode.com/gh_mirrors/fa/falcon-plus点击查看免费下载本篇技术指南聚焦 falcon-plusOpen-Falcon 企业级监控系统中DashboardScreen监控大屏全量列表查询接口的完整使用方式包含请求格式、limit分页参数说明、返回数据结构以及该接口在 API 模块中的路由注册、鉴权中间件与底层数据库查询实现。读完本文你将能够独立调用该接口获取系统内所有监控大屏并理解其与 Screen 树形层级、Graph 图表绑定的关系。接口概述DashboardScreen 是 falcon-plus 中用于组织监控图表的屏幕Screen资源每个 Screen 可以拥有父级pid从而形成树形层级同一屏幕下可挂载多个 dashboard graph 图表。本文讲解的获取全部屏幕接口用于一次性拉取整个系统中所有 Screen 记录常用于 dashboard 前端初始化、屏幕列表导航或数据迁移场景。项目说明请求方法GET请求路径/api/v1/dashboard/screens请求 Content-typeapplication/x-www-form-urlencoded鉴权要求需要有效 SessionApitoken返回状态码200成功文档原始出处docs/_posts/DashboardScreen/2017-01-01-dashboard_screen_gets_all.md该接口对应的路由在源码中的注册位置为 dashboard_screen_routes.go由GET(/screens, ScreenGetsAll)定义并统一挂载在鉴权分组/api/v1/dashboard之下authapi : r.Group(/api/v1/dashboard) authapi.Use(utils.AuthSessionMidd) authapi.POST(/screen, ScreenCreate) authapi.GET(/screen/:screen_id, ScreenGet) authapi.GET(/screens/pid/:pid, ScreenGetsByPid) authapi.GET(/screens, ScreenGetsAll) authapi.DELETE(/screen/:screen_id, ScreenDelete) authapi.PUT(/screen/:screen_id, ScreenUpdate)路由组在 controller/routes.go 中通过dashboard_screen.Routes(r)注册到全局 gin 引擎随 API 模块一起启动。请求说明鉴权Session Required该接口属于受保护资源调用前必须通过会话校验。falcon-plus 的 API 采用Apitoken请求头传递会话信息格式为 JSON 字符串{ Apitoken: {\name\:\root\,\sig\:\427d6803b78311e68afd0242ac130006\} }其中name为用户名sig为会话签名。请求处理时中间件AuthSessionMidd见 auth_middle.go会调用h.SessionChecking完成校验先读取Apitoken头解析出name与sig若配置了default_token且sig与之相等则直接放行用于服务端内部访问否则在user表与session表中比对用户名和签名两者均存在才返回auth true见 session.go。需要注意的是配置项skip_auth为true时会跳过鉴权检查生产环境不建议开启。若鉴权失败接口返回401 Unauthorized。完整的会话建立方式可参考 2017-01-01-authentication.md 文档。参数说明参数必填说明默认值limit否查询最大数据量控制返回的记录条数上限如limit10只查询最多 10 条数据500参数以 URL query 形式传递GET请求Content-type 声明为application/x-www-form-urlencoded。参考请求GET /api/v1/dashboard/screens?limit10从源码看limit的读取逻辑为c.DefaultQuery(limit, 500)见 dashboard_screen_controller.go即未显式传参时默认返回最多 500 条记录传入非法数值时可能被 ORM 层忽略或返回空列表建议显式传入正整数。响应说明成功响应Status: 200接口成功时返回 HTTP200响应体为 JSON 数组数组中的每个元素对应一条dashboard_screen记录字段包括id屏幕 ID、name屏幕名称、pid父屏幕 ID0 表示顶级屏幕。参考响应示例[ { id: 952, name: a1, pid: 0 }, { id: 953, name: aa1, pid: 952 }, { id: 968, name: laiwei-screen2, pid: 1 }, { id: 972, name: laiwei-sceen1, pid: 0 }, { id: 991, name: xnew, pid: 972 }, { id: 993, name: clone3, pid: 972 }, { id: 995, name: op, pid: 0 } ]从示例数据可以直观理解 Screen 的树形结构id952与id972均为顶级屏幕pid0而id953、id991、id993分别挂在952、972之下作为子屏幕。响应中未包含数据库中的time字段这是因为 ORM 模型只序列化了id、pid、name三个字段见 dashboard_screen.go。响应封装逻辑位于 simple_reponse.go当状态码为 200 且消息体为非字符串时直接以原结构体序列化输出出错时则返回{error: ...}形式的错误对象。错误响应关于鉴权失败、参数非法等错误场景的状态码约定请参见 response status codes 文档。底层实现与数据模型处理器实现ScreenGetsAll是获取全部屏幕的核心处理器位于 dashboard_screen_controller.gofunc ScreenGetsAll(c *gin.Context) { limit : c.DefaultQuery(limit, 500) screens : []m.DashboardScreen{} dt : db.Dashboard.Table(dashboard_screen).Limit(limit).Find(screens) if dt.Error ! nil { h.JSONR(c, badstatus, dt.Error) return } h.JSONR(c, screens) }其执行链路为解析limitquery 参数默认 500→ 通过 GORM 在db.Dashboard连接池中查询dashboard_screen全表并应用Limit→ 将结果绑定到[]DashboardScreen切片 → 查询出错时返回400 Bad Request成功则直接输出 JSON 数组。这里使用db.Dashboard而不是主库说明 Screen 数据存放于独立的 dashboard 数据库连接池对应config/下 API 配置中的 dashboard 数据源与 falcon_portal、uic 等业务库分离。数据表结构dashboard_screen表定义见 3_dashboard-db-schema.sqlCREATE TABLE dashboard_screen ( id int(11) unsigned NOT NULL AUTO_INCREMENT, pid int(11) unsigned NOT NULL DEFAULT 0, name char(128) NOT NULL, time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_pid (pid), UNIQUE KEY idx_pid_n (pid,name) ) ENGINEInnoDB DEFAULT CHARSETutf8;几个值得注意的设计点pid默认 0 表示顶级屏幕配合idx_pid索引使按父屏幕查询子屏幕即GET /screens/pid/:pid接口参见 dashboard_screen_gets_by_pid 文档高效执行(pid, name)上的唯一键保证同一父屏幕下不允许重名创建接口 dashboard_screen_create 文档 中使用insert ignore写入重复创建同名屏幕会被静默忽略ORM 模型 dashboard_screen.go 中TableName()方法返回dashboard_screen与上述表结构严格对应。与相邻接口的关联本接口是 DashboardScreen 六件套 API创建 / 按 ID 查询 / 按 PID 查询 / 全量查询 / 删除 / 更新中的全量查询成员全部由 dashboard_screen_routes.go 统一注册。在实际使用中前端通常先调用本接口获取全部屏幕列表再配合GET /api/v1/dashboard/screen/:screen_id或按pid过滤来定位具体屏幕最后通过 dashboard graph 相关接口见 dashboard_graph_routes.go加载屏幕下的图表数据。使用建议控制返回规模全量接口默认上限 500 条若系统内屏幕数量较大建议始终显式携带limit并结合按pid查询接口进行分页或分片拉取避免一次性返回过多数据鉴权前置调用前需先通过登录接口获取有效会话签名sig并检查 API 配置中skip_auth与default_token的设置确保请求头携带正确的Apitoken利用树形结构响应中的pid字段可直接用于在前端构建屏幕 → 子屏幕的树形导航与name一起渲染屏幕选择器或分组视图。如需查看更多 DashboardScreen 相关接口的用法可继续阅读 DashboardScreen 文档目录 下的创建、按 ID 查询、更新与删除文档或直接在 API 源码目录 中查看对应处理器实现。赞分享运维观测指标监控告警【免费下载链接】falcon-plusAn open-source and enterprise-level monitoring system.项目地址https://gitcode.com/gh_mirrors/fa/falcon-plus点击查看免费下载相关推荐Open-Falcon API 实战按 pid 查询 DashboardScreen 屏幕列表Gets DashboardScreens by pidOpen Falcon API 实战按 pid 查询 DashboardScreen 屏幕列表Gets DashboardScreens by pid 本运维观测指标监控告警Notepad--跨平台轻量级文本编辑器的 6 个实战场景Notepad 跨平台轻量级文本编辑器的 6 个实战场景 你大概也有过这种时刻改一个 nginx.conf、翻一段服务器日志、对比两份配置却不想为此打开一运维观测指标监控告警WinUI NumberBox 控件实战指南数值输入、表达式计算、步进与格式化WinUI NumberBox 控件实战指南数值输入、表达式计算、步进与格式化 导读 本文基于本仓库的 NumberBox 设计规范 https://link运维观测指标监控告警上一篇如何3步实现PPT到图片的高效转换PPT2Image完整指南下一篇小米智能家居终极集成指南如何通过Xiaomi Miot Auto快速接入Home Assistant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表