系统集成

夜莺 v9 系统集成:把任意外部系统(CMDB、Wiki、内部 BI、Grafana 等)以 iframe 形式嵌入夜莺侧栏,无需切换标签页,统一入口。

概述

系统集成 = 把外部网页系统用 iframe 嵌进夜莺的侧栏,让 SRE/运维同学在一个浏览器标签页里完成从监控告警到 CMDB 查机器、到 Wiki 看 SOP 的全流程。

侧栏路径:集成中心 → 系统集成,URL /embedded-products

适用场景:

  • 把内部 CMDB / 工单系统嵌进来 — 收到告警后直接在夜莺侧栏点开看资产归属;
  • 把团队 Wiki 故障 Runbook 嵌进来 — 排障时一键打开 SOP 步骤;
  • 把已有 Grafana 大盘嵌进来 — 不想搬迁就直接复用;
  • 把内部审批/变更系统嵌进来 — 维护窗口期一键申请屏蔽。

集成后效果:

  • 侧栏底部会多一项链接(如"测试系统A"),点击在主区域加载该 iframe;
  • 一键复制夜莺登录态/Cookie 信息(如果对方系统支持),跨系统免登录衔接。

新建系统集成

新建系统集成表单

字段 必填 说明
名称 侧栏里显示的菜单名,建议简短(≤ 6 个字),如 CMDBWiki工单
链接 要嵌入的完整 URL,例如 https://cmdb.intra.example.com/dashboard
可见性 二选一:登录用户可见(所有登录夜莺的用户都能看到)、指定团队可见(选择具体团队后才能看到,做权限隔离)

提交后立刻在侧栏底部出现该入口(可能需要刷新一次)。

列表里的额外操作

  • 菜单显示开关:每行末尾有「是否在菜单显示」Switch — 关掉后该集成仍存在但不在侧栏显示,适合临时下线但保留配置。
  • 拖拽排序:行首的「☰」图标可以拖拽,调整侧栏里的显示顺序。
  • 编辑 / 删除:常规操作。

跨域 & iframe 安全:必看

外部系统能不能被嵌入,取决于对方的响应头,夜莺这边只是个 iframe 容器:

对方响应头 后果
X-Frame-Options: DENYSAMEORIGIN 浏览器强制拒绝嵌入,iframe 显示空白
Content-Security-Policy: frame-ancestors 'self' 同上,浏览器拒绝
没有上面两个头 / 设置允许 可以嵌入

如果嵌入的目标网页打开后是空白 / 一片白90% 是对方没放开 frame 嵌入。两种解法:

  1. 改对方的响应头:让对方运维加上 Content-Security-Policy: frame-ancestors https://你的夜莺域名/
  2. 本机起个反向代理:用 nginx 反向代理对方网站并在代理层覆写响应头,再把代理地址填进来。

同样的限制还包括 Cookie SameSite:很多对方系统的登录态 Cookie 是 SameSite=Lax/Strict,跨站 iframe 里不会带 Cookie,导致用户在 iframe 里看到登录页。让对方运维改成 SameSite=None; Secure,或者改用 OIDC/SSO 统一登录。

常见问题

Q1:嵌入后页面一片空白 / 显示"拒绝连接"

A:见上面"跨域 & iframe 安全"小节,先在 Chrome 开发者工具的 Console 看报错。常见错误信息:

  • Refused to display ... in a frame because it set 'X-Frame-Options' to 'sameorigin':对方 X-Frame-Options 太严,让对方运维改;
  • Refused to frame ... because an ancestor violates the following Content Security Policy directive: frame-ancestors:对方 CSP 限制,需要把夜莺域名加到 frame-ancestors 白名单;
  • 长时间转圈、最后超时:对方网站本身打开就慢,与夜莺无关。

Q2:嵌入的系统需要登录,跳到登录页就回不去夜莺,怎么办?

A:iframe 里的登录跳转通常会只在 iframe 内打开,不会污染外层夜莺。但很多老系统的登录页有反 iframe 检测会强制跳出。务实的做法:

  • 把内部 SSO(公司统一登录)接上夜莺和被嵌入系统,做单点登录;
  • 或者让对方系统提供"匿名只读访问"或"基于 IP 白名单"的免登模式。

Q3:嵌入的页面要不要保护?所有人都能看吗?

A:通过"可见性"控制。如果嵌入的是敏感系统(CMDB、变更平台),强烈建议选「指定团队可见」,只把运维/SRE 团队加进去。同时建议被嵌入的系统本身也要做权限校验(基于登录态 / OAuth),不能依赖夜莺这边的"可见性"做安全边界 — 用户拿到 URL 直接访问对方系统时夜莺管不了。

Q4:能在嵌入页面里点链接跳走吗?

A:可以。iframe 里点的链接默认在 iframe 内打开,对方网站如果用了 target="_top" 会跳出 iframe 整页跳走 — 这时用户实际离开夜莺站点。介意的话,让对方运维把 target 改成 _self

参考资料

更新时间 2026-05-19

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云