Devtron External Links(外部链接)配置指南:在应用详情页无缝集成 Grafana、Kibana 等第三方监控工具

发布时间:2026/10/14 15:42:59
Devtron External Links(外部链接)配置指南:在应用详情页无缝集成 Grafana、Kibana 等第三方监控工具 云原生DevOps运维【免费下载链接】devtronThe only Kubernetes dashboard you need项目地址https://gitcode.com/gh_mirrors/dev/devtron点击查看免费下载导读Devtron 的External Links外部链接功能允许你在 Devtron 控制台内直接连接第三方应用用于应用的监控、调试、日志查看与分析无需在多个工具之间反复跳转。本文基于官方用户指南并结合仓库源码pkg/externalLink、api/externalLink、scripts/sql系统讲解 External Links 的概念、权限模型、添加与管理流程并深入剖析 URL 模板占位符的替换原理与底层数据模型帮助你快速将 Grafana、Kibana、Datadog 等工具一键接入应用详情页。External Links 是什么External Links 允许你在 Devtron Dashboard 中连接第三方应用实现应用的监控、调试、日志查看与分析。你可以从预定义的第三方应用如 Grafana中选择一个将其链接到你的应用上实现快速访问配置完成的外部链接会显示在App details应用详情页面。此外通过 External Links 还可以集成Document文档或Folder文件夹类链接方便团队集中访问资料与页面。Devtron Dashboard 预定义的第三方应用包括GrafanaKibanaNewrelicCoralogixDatadogLokiCloudwatchSwaggerJira 等从仓库中的数据库迁移脚本 scripts/sql/42_create_external_links.up.sql 可以看到最初内置的监控工具为 Grafana、Kibana、Newrelic、Coralogix、Datadog、Loki、Cloudwatch 与 Other随后的迁移脚本 scripts/sql/98_alter_external_links.up.sql 又新增了 Swagger、Document、Folder、Chat、Confluence、Slack、Report、Jira、Bugs、Alerts、Performance 等更多工具并引入了category字段1文档类、2监控类、3网页类对工具进行分类同时将原来的Other更名为Webpage。这些预定义工具由external_link_monitoring_tool表维护并通过 ExternalLinkMonitoringToolRepository.go 的FindAllActive()查询活跃工具列表。监控工具的典型使用场景在使用某个监控工具如 Grafana、Kibana 等对应用进行监控或调试时通常需要先进入工具页面再逐级导航到对应的应用或资源页面操作繁琐。External Links 可以直接带你进入带有应用、环境、Pod、容器上下文的工具页面省去手动筛选与导航的过程。典型流程是在 Devtron 的Global Configurations External links中配置 Grafana 链接并在 URL 模板中带上{namespace}、{appName}等占位符进入应用的App Details页面点击 Grafana 链接浏览器在新标签页打开 Grafana并直接定位到与该应用/环境/Pod/容器对应的上下文页面。前置条件与权限模型在开始配置之前你需要满足以下条件Super admin超级管理员权限外部链接仅能由 super admin 添加与管理监控工具 URL准备好要接入的监控工具的可访问 URL在 Devtron 控制台中预先配置好一个应用作为链接展示的目标。权限说明外部链接只能由 super admin 添加/管理但非 super admin 用户也可以在App Configuration页面访问已配置的外部链接。从源码看权限校验逻辑位于 ExternalLinkRestHandler.go 的roleCheckHelper如果请求携带appId查询参数则通过 casbin 校验用户对applications资源是否具备相应操作权限通过后用户角色被标记为admin即应用管理员否则校验用户对global资源是否具备*权限通过后角色为superAdmin。对应的角色常量定义在 ExternalLinkService.go 中ADMIN_ROLE admin、SUPER_ADMIN_ROLE superAdmin。在创建、更新、删除链接时服务层会根据角色决定链接的IsEditable属性admin用户创建的链接IsEditable恒为true而superAdmin可按需设置在更新/删除时如果admin用户试图操作IsEditablefalse的链接服务层会拒绝并返回用户无权限执行更新或删除的错误。添加一个外部链接操作步骤在 Devtron 控制台左侧导航栏进入Global Configurations全局配置选择External links点击Add Link添加链接在Add Link页面从 Webpage 中选择要链接到你应用的外部链接例如 Grafana。提示要添加多个链接可点击页面左上角的 Add another。完成表单填写后点击Save保存。字段说明Add Link页面提供以下字段字段说明Link name链接的名称。Description对链接名称的描述。Show link in链接的展示范围All apps in specific clusters选择此选项以选择集群。Specific applications选择此选项以选择应用。Clusters选择要为其配置该外部链接的集群。选择一个或多个集群以在指定集群上启用链接。选择All Clusters以在所有集群上启用链接。Applications选择要为其配置该外部链接的应用。选择一个或多个应用以在指定应用上启用链接。选择All applications以在所有应用上启用链接。注意如果启用了App admins can edit则可以在应用详情页查看选定的链接。URL Template配置的 URL 模板会被部署在所选集群/应用上的应用使用。通过组合一个或多个环境变量可以生成如下结构的 URLhttp://www.domain.com/{namespace}/{appName}/details/{appId}/env/{envId}/details/{podName}如果在 URL 模板中加入了{podName}和{containerName}变量则配置的链接如 Grafana将分别只在 Pod 级别和容器级别显示。可用环境变量{appName}{appId}{envId}{namespace}{podName}使用后链接将只显示在App details页面的 Pod 级别。{containerName}使用后链接将只显示在App details页面的容器级别。注意环境变量会被你在配置链接时使用的值动态替换。URL 模板占位符的替换原理URL 模板中的占位符在运行时会被动态替换为真实上下文。虽然官方文档列出的是{appName}、{appId}、{envId}、{namespace}、{podName}、{containerName}从源码实现看链接跳转的核心替换逻辑在 AppListingService.go 的RedirectToLinkouts方法中它根据请求携带的podName、containerName参数组合对链接中的{appName}、{envName}、{podName}、{containerName}进行strings.ReplaceAll替换——例如同时传入 Pod 名与容器名时四个占位符都会被替换为实际值仅传入 Pod 名时则替换{appName}、{envName}、{podName}。因此URL 模板中加入哪些占位符决定了链接在App Details页面上以何种粒度应用级、Pod 级、容器级展示模板只含{appName}/{envId}等链接在应用级可见模板包含{podName}链接仅在 Pod 级别可见模板包含{containerName}链接仅在容器级别可见两者都包含链接在 Pod 级与容器级均可见。链接的作用范围集群级与应用级从源码结构看External Links 在逻辑上分为两种作用范围ExternalLinkService.go 中的常量CLUSTER_LEVEL_LINK clusterLevel与APP_LEVEL_LINK appLevel集群级链接clusterLevel针对一个或多个集群或所有集群生效通过LinkIdentifier{Type: cluster, ClusterId: ...}标识应用级链接appLevel针对一个或多个应用或所有应用生效通过TypeIdentifier标识。应用级链接进一步支持三种应用类型TypeMappings映射类型值含义devtron-appDevtron 原生应用通过 Devtron 构建部署的应用devtron-installed-app通过 Devtron 安装的 Helm Chart 应用external-helm-app外部 Helm 应用在 ExternalLinkIdentifierMappingRepository.go 的查询逻辑中当按应用标识获取链接时会同时匹配三类记录指定应用的映射elim.type ? and elim.app_id ?、指定集群的映射elim.type 0 and elim.cluster_id ?以及全局映射elim.type -1即所有应用/所有集群从而保证链接在合适的粒度上正确展示。在应用详情页访问外部链接普通用户admin 及其他角色可以在App Details页面访问配置好的外部链接从左侧导航栏选择Applications选中一个已配置的应用后选择App Details标签页外部链接会显示在应用详情页面上将鼠标悬停可查看该链接的描述来源docs/user-guide/creating-application/app-details.md点击链接后会在新标签页中打开并携带你在添加外部链接时通过环境变量占位符指定的上下文。注意如果在External Links页面启用了App admins can edit则只有非 super admin 用户才能在App Details页面看到所选的链接。也就是说该开关决定了非超级管理员能否在应用详情页查看这些链接。管理外部链接在External Links页面Global Configurations External links可以对已配置的外部链接进行筛选、搜索、编辑与删除筛选与搜索根据链接名称或自定义名称过滤/搜索链接编辑点击某条外部链接旁边的编辑图标进行修改删除点击某条链接旁边的删除图标将其删除已删除书签链接会在为其配置的所有集群中移除。从源码层面看删除操作在 ExternalLinkService.go 的DeleteLink方法中实现它并非物理删除数据而是软删除——将external_link表中的链接Active置为false同时将external_link_identifier_mapping表中所有关联的映射记录也置为Active false更新操作Update则先通过UpdateAllActiveToInActive将旧映射全部置为失效再为请求中的标识符集合写入新的活跃映射。这也解释了为什么删除后链接会立即从所有配置的集群/应用中消失。底层数据模型与 REST API数据表结构外部链接功能涉及三张核心表见 scripts/sql/42_create_external_links.up.sql 与 scripts/sql/98_alter_external_links.up.sqlexternal_link链接主表字段包括id、external_link_monitoring_tool_id外键关联监控工具、name、url、is_editable、description、active及审计字段created_on、created_by、updated_on、updated_byexternal_link_monitoring_tool预定义监控工具表字段包括id、name、icon、category、active及审计字段external_link_identifier_mapping链接与集群/应用的映射表由最初的external_link_cluster_mapping演进而来字段包括external_link_id、type对应app、cluster、devtron-app、devtron-installed-app、external-helm-app、identifier、env_id、app_id、cluster_id、active及审计字段。对应的 Go 模型分别定义在 ExternalLinkRepository.go、ExternalLinkMonitoringToolRepository.go 与 ExternalLinkIdentifierMappingRepository.go 中。REST API 路由外部链接的后端路由定义在 ExternalLinkRouter.go核心接口如下方法路径说明POST/orchestrator/external-link创建外部链接支持批量创建GET/orchestrator/external-link/tools获取全部活跃的监控工具列表GET/orchestrator/external-link获取外部链接支持按type/identifier/clusterId查询GET/orchestrator/external-link/v2同时返回工具列表与外部链接供页面渲染使用PUT/orchestrator/external-link更新外部链接DELETE/orchestrator/external-link?id{id}删除外部链接软删除创建与更新接口的请求体为ExternalLinkDto的 JSON 数组/对象核心字段包括name、description、url、typeclusterLevel/appLevel、monitoringToolId、identifiersLinkIdentifier数组与isEditable。创建流程的源码级剖析Create方法ExternalLinkService.go使用事务Transaction保证一致性将链接基本信息写入external_link表根据type处理标识符集群级链接的Type固定为cluster、Identifier置空应用级链接若未提供identifiers则默认追加一个全局映射type app并针对devtron-app/devtron-installed-app将字符串形式的Identifier解析为AppId将每个标识符写入external_link_identifier_mapping表全部成功后才提交事务任一环节失败则整体回滚保证不会出现半写入状态。测试与验证仓库在 pkg/externalLink/intergrationTests/ExternalLinks_test.go 中提供了覆盖创建、更新、删除、查询全流程的集成测试其中包含大量可供参考的请求体示例例如inp1 : externalLink.ExternalLinkDto{ MonitoringToolId: 4, Name: IntegrationTest-1, Description: integration test link description, Type: appLevel, Identifiers: []externalLink.LinkIdentifier{ {Type: devtron-app, Identifier: 1, ClusterId: 0}, {Type: devtron-app, Identifier: 103, ClusterId: 0}, }, Url: http://integration-test.com, IsEditable: true, }测试用例覆盖了创建合法载荷创建成功后可通过查询接口取回并逐字段比对非法的Identifier如1a或非法的Type如invalidType会被拒绝更新应用级→应用级、应用→所有应用、应用→集群、集群→应用等十余种范围切换场景且验证admin角色无法更新IsEditablefalse的链接删除应用级与集群级链接删除后查询结果为空且admin角色无法删除不可编辑链接查询针对devtron-app、devtron-installed-app、external-helm-app三种应用类型分别校验链接匹配结果。这些测试既是对功能正确性的保障也为我们手工验证配置提供了现成的 API 载荷模板。小结与最佳实践明确展示粒度在 URL 模板中按需加入{podName}/{containerName}控制链接出现在应用级、Pod 级还是容器级避免无关页面上出现多余链接区分作用范围面向整个集群的通用监控入口使用clusterLevel面向特定应用的深入分析入口使用appLevel并通过所有应用/所有集群选项快速铺开管理可见性合理使用App admins can edit开关控制非 super admin 用户能否在App Details页面查看链接善用多种工具类型除监控类工具外还可以接入 Document、Folder、Confluence、Jira 等文档/协作类链接把 Devtron 控制台打造成应用观测与协作的统一入口。通过以上配置你即可让团队在 Devtron 的应用详情页中一键直达带有应用上下文环境、命名空间、Pod、容器的 Grafana、Kibana、Datadog 等第三方工具页面显著提升监控、调试与排障效率。赞分享云原生DevOps运维【免费下载链接】devtronThe only Kubernetes dashboard you need项目地址https://gitcode.com/gh_mirrors/dev/devtron点击查看免费下载相关推荐Devtron App Details 页面实战指南外部链接External Links与 Ingress Host URL 的访问与管理Devtron App Details 页面实战指南外部链接External Links与 Ingress Host URL 的访问与管理 导读 本文聚云原生DevOps运维Just the Docs 主导航外部链接External Links配置完全指南Just the Docs 主导航外部链接External Links配置完全指南 本篇技术指南以 Just the Docs 文档站的 docs/navi文档静态站点UI组件终极Dendron第三方集成指南无缝连接Zotero、GitHub等工具的完整教程终极Dendron第三方集成指南无缝连接Zotero、GitHub等工具的完整教程 Dendron是一款强大的个人知识管理PKM工具它能够帮助你构建结构知识管理知识库创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询