尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

OneUptime 仪表板变量与筛选完全指南:用下拉框把一张仪表板变成模板

OneUptime 仪表板变量与筛选完全指南:用下拉框把一张仪表板变成模板 可观测性后端运维前端云原生微服务AI Agent【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址https://gitcode.com/GitHub_Trending/on/oneuptime点击查看免费下载变量Variable是 OneUptime 仪表板从固定报表升级为交互式分析工具的核心机制。它把一张仪表板变成模板添加一个service变量后同一组图表会为checkout、payments或search等不同取值重新渲染观众只需在顶部下拉框切换而无需为每个服务各建一张几乎相同的仪表板。本文基于 OneUptime 文档与仓库源码系统讲解变量的类型与配置、多选与默认值语义、在 Widget 中的引用方式、时间范围与刷新间隔以及一张服务模板化仪表板的完整拼装示例。什么是仪表板变量在仪表板Dashboard→ 设置Settings→ 变量Variables下可以添加变量。每个变量包含三个要素名称name在 Widget 中以{{name}}形式引用可选的标签label用于在界面上友好展示类型type决定选项的来源与交互方式。变量解决了监控场景中最高频的诉求——同一套图表、不同维度服务、环境、集群、地域反复查看。变量让这些维度外置为顶部下拉框而不是散落在每个 Widget 的硬编码筛选条件里。从源码看变量的数据模型定义在 DashboardVariable.ts其中DashboardVariableType枚举声明了五种类型Custom List、Query、Text Input、Telemetry Attribute、Project Labels而DashboardVariable接口还携带customListValues自定义列表值、query查询语句、attributeKey遥测属性键、isMultiSelect是否多选、defaultValue默认值等字段与文档中的概念一一对应。变量类型详解Custom List自定义列表一个完全静态的下拉框选项由你自己输入在数据模型中对应customListValues以逗号分隔存储。适用场景选项数量少且固定不变。典型例子environment取值prod, staging, devregion取值us-east-1, eu-west-1, ap-south-1。这种类型最直观、零查询成本但选项变化时需要手动编辑仪表板。Query查询适用场景历史语义选项随时间变化、希望下拉框始终与数据同步时例如过去 24 小时内出现过的每个客户 ID。在早期版本中此类变量的选项来自对项目数据的一次查询查询结果即下拉项。需要注意当前版本的实际状态英文版官方文档明确说明现有的 Query 变量定义会被保留但从自定义查询加载下拉选项已不再支持Existing query variable definitions are preserved, but loading dropdown options from a custom query is not supported。DashboardVariable接口中query?: string字段依然存在用于兼容旧定义。对于需要从数据自动发现选项的场景官方推荐改用Telemetry Attribute从遥测中自动发现取值或Project Labels从项目标签中选择。印地语版等旧文档仍描述查询驱动选项的语义使用时应以英文版文档与当前仓库行为为准。Text Input文本输入一个自由文本输入框观众输入什么就用什么作为筛选值。适用场景让仪表板承担搜索工具角色按 IP 地址、请求 ID 或任何自由格式的值进行过滤。它不做校验、不提供候选适合无法枚举取值空间的临时排查。Telemetry Attribute遥测属性选项是仪表板当前时间范围内、遥测数据中某个属性attribute的**不同取值distinct values**集合。需要配置attribute key例如service.namehost.namek8s.cluster.name配置后下拉框会自动填充你的日志、指标metrics和追踪traces中出现的每一个不同取值。适用场景选项与你随遥测数据一起发送的标签tag吻合时。这是最常见的类型因为它是自动更新的——当你上线一个打了service.name inventory标签的新服务这个名字会立刻出现在下拉框中无需手动编辑仪表板。服务端实现印证了这一机制在 DashboardAPI.ts 中获取属性取值走的是专用的接口——客户端传入attributeKey服务端通过collectDashboardVariableAttributeKeys从仪表板的视图配置中收集所有变量声明的属性键作为白名单allowlist只有属于该仪表板自己变量的属性才允许查询随后调用TelemetryAttributeService.fetchAttributeValues返回不同取值列表。也就是说下拉框选项本质上是运行时对该属性的一次 distinct 查询且被严格限定在仪表板自身声明的属性范围内防止任意属性被探测。Project Labels项目标签从已有的项目标签Project Labels中选择若干作为仪表板的下拉选项。例如创建一个名为UNIT的变量来源选Project Labels然后勾选0660、0661两个标签。该类型有几个值得注意的细节仪表板保存的是标签 ID 与展示名筛选时按 ID 进行因此重命名标签不会破坏变量绑定展示名随仪表板保存重命名后需要在变量编辑器中重新选择一次该标签以刷新显示名称公开仪表板同样展示这些已保存的选择。在Monitor List监控列表Widget 中通过Filters → Label Variable选择UNIT即可让列表按标签变量过滤。从源码结构看标签变量的绑定与解析逻辑集中在 LabelVariable.ts并有 LabelVariable.test.ts 与 DashboardMonitorLabelVariable.test.tsx 等测试覆盖其行为。标签变量与固定筛选可以叠加例如固定了network标签且UNIT选为0660时监控项必须同时携带两个标签多选多个单位时命中任意一个即可选择All只会移除变量这一层条件固定标签、状态与监控类型等筛选仍然生效。若变量缺失或选择了配置范围之外的取值会显示错误选择了但没有匹配监控的标签则显示空列表——不再需要该绑定时应显式移除。多选Multi-selectCustom List、Telemetry Attribute 与 Project Labels 三类变量都可以开启多选。开启后观众可一次选择一个或多个取值仪表板筛选到这些取值中的任意一个相当于 OR 语义。何时使用多选需要把 checkout 和 payments 放在一起对比而不离开仪表板时。何时避免当对多个取值做数学运算没有意义时典型反例是对平均值的平均值求平均。多选的空选择语义在源码中非常明确。查看 VariableInterpolation.ts 中的resolveValue多选变量的唯一事实来源是selectedValues为空或未设置即代表All状态不产生任何筛选条件也不会回退到单选的默认值多选有值时返回multi数组插值引擎会将其转换为Includes操作符new Includes(resolved.multi)服务端据此生成attributes[key] IN (...)谓词。也就是说空选择 All不是界面上的花招而是贯穿选择器与查询构建的硬规则由 VariableInterpolation.test.ts 等测试锁定。默认值Default Values每个变量都可以设置默认值。观众修改之前仪表板始终以默认值渲染对公开仪表板而言默认值就是访客最先看到的内容。默认值的实际语义同样由resolveValue定义且单/多选行为不同单选变量仅当selectedValue缺失时才回退到defaultValue。注意这里用的是??而非||——空字符串是一个真实选择即 All 选项不能被默认值覆盖多选变量从All状态开始不使用默认值默认值无法表达多选的意义且选择器显示未过滤时若背后偷偷应用默认值会造成视觉与数据的错位共享 URL 中的显式选择优先级最高包括显式的 All。如何在 Widget 中使用变量任何接受筛选条件的位置——指标的WHERE条件、列表的过滤器、日志流的属性匹配——都可以使用{{variable_name}}模板语法。例如一个按服务过滤的图表service.name {{service}}当下拉框设为checkout时图表筛选到 checkout 服务观众切换到payments图表立即为 payments 重新渲染。点击分享链接时URL 中携带的变量选择会覆盖默认值。对于Telemetry Attribute变量OneUptime 知道该变量映射到哪个属性并会把筛选自动应用到所有使用同一属性的 Widget 上——你不需要逐个手工编辑每个 Widget。这正是applyToAttributes的实现逻辑它会遍历所有配置了attributeKey的遥测属性变量将选中的标量值写入attributes[key]多选则写入Includes且该 map 会同时作用于指标图表、日志流等以{ [attrKey]: value | operator }形状组织筛选的所有 Widget。此外Monitor List 的标题也支持{{variable_name}}插值。例如{{UNIT}} NETWORK会根据当前选择显示为0660 NETWORK、0660, 0661 NETWORK或All NETWORK。标题只控制展示文本要真正过滤监控查询仍需在Label Variable中配置绑定。时间范围Time Range仪表板头部有一个全局时间范围每个指标类 Widget 都针对这个窗口查询。选项包括预设Presets过去 1 小时、24 小时、7 天、30 天、90 天可用范围取决于你的数据保留策略自定义Custom手动选择开始与结束时间。时间范围是仪表板URL 的一部分——分享 URL 就等于分享窗口。这在事件incident处理时非常实用把时间范围固定到今天 10:00–10:30 UTC然后把链接粘贴到事件频道团队成员打开即看到同一段现场。刷新间隔Refresh Interval时间范围旁边可以选择 Widget 重新查询的频率Off页面加载时只查询一次5s / 10s / 30s / 1m / 5m / 15m按间隔自动刷新。自动刷新适合挂墙大屏或实时事件视图而做问题排查时建议保持 Off让画面在你观察期间保持静止避免数据跳动干扰判断。变量与 URL 状态链接如何携带选择除了时间范围变量选择本身也编码在 URL 中。查看 VariableUrlState.ts 可以确认其格式以?var-namevalue的形式记录每个变量的当前选择使用变量名称而非 ID作为键因为名称对用户可见且只要两个仪表板都存在同名变量如cluster链接就能跨仪表板复用多选使用逗号,分隔多个值变量名被编辑器限制为[A-Za-z_][A-Za-z0-9_]*因此永远不会与逗号冲突URL 中的逗号语法无法区分多选的单值与标量解析时会借助变量的定义是否多选来消解歧义。这意味着你可以把某个时间窗口 特定服务 特定集群的完整视图打包成一个链接发给同事对方打开即还原同一画面——这正是文档中共享 URL 即共享视图的底层支撑。组合起来一张服务模板化仪表板一份典型的服务模板化仪表板通常包含以下配置service变量类型Telemetry Attribute属性键service.name。默认值设为你最常关注的服务多选关闭保证图表同一时刻只展示一个服务避免叠加语义混乱environment变量类型Custom List取值prod, staging, dev等默认值prodcluster变量类型Telemetry Attribute属性键k8s.cluster.name。多选开启便于跨集群对比Widget 在筛选条件中引用这些变量如service.name {{service}}。最终效果一张仪表板覆盖所有服务顶部三个下拉框。观众通过下拉框自由切换视角而无需为每个服务/环境/集群维护多份近似重复的仪表板。延伸阅读Widgets 文档每个 Widget 如何使用筛选条件Sharing Public Dashboards 文档变量与共享链接的配合方式Authoring a Dashboard 文档画布编辑机制DashboardVariable.ts变量数据模型与类型枚举VariableInterpolation.ts变量解析与查询插值引擎VariableUrlState.ts变量在 URL 中的编码与解析DashboardVariableSelector.test.tsx 与 VariableInterpolation.test.ts变量选择器与插值逻辑的测试佐证。赞分享可观测性后端运维前端云原生微服务AI Agent【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址https://gitcode.com/GitHub_Trending/on/oneuptime点击查看免费下载相关推荐OneUptime 仪表盘变量与过滤器用变量把单仪表盘变成可复用模板OneUptime 仪表盘变量与过滤器用变量把单仪表盘变成可复用模板 本文基于 OneUptime 官方文档《Variablen Filter》仪表盘变可观测性后端运维前端云原生微服务AI AgentOneUptime 仪表盘变量与过滤器实战用 Variables Filters 把一张 Dashboard 变成全服务模板OneUptime 仪表盘变量与过滤器实战用 Variables Filters 把一张 Dashboard 变成全服务模板 本指南以 App/Featu可观测性后端运维前端云原生微服务AI AgentOneUptime Dashboard 变量与过滤器详解把单个仪表盘变成可复用模板OneUptime Dashboard 变量与过滤器详解把单个仪表盘变成可复用模板 本文基于 OneUptime 官方文档《Variabler filtr可观测性后端运维前端云原生微服务AI Agent上一篇测验应用程序Web-Dev-For-Beginners在线测试平台下一篇ML-For-Beginners聚类分析实战探索尼日利亚音乐品味创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表