系统集成
夜莺 v9 系统集成:把任意外部系统(CMDB、Wiki、内部 BI、Grafana 等)以 iframe 形式嵌入夜莺侧栏,无需切换标签页,统一入口。
概述
系统集成 = 把外部网页系统用 iframe 嵌进夜莺的侧栏,让 SRE/运维同学在一个浏览器标签页里完成从监控告警到 CMDB 查机器、到 Wiki 看 SOP 的全流程。
侧栏路径:集成中心 → 系统集成,URL /embedded-products。
适用场景:
- 把内部 CMDB / 工单系统嵌进来 — 收到告警后直接在夜莺侧栏点开看资产归属;
- 把团队 Wiki 故障 Runbook 嵌进来 — 排障时一键打开 SOP 步骤;
- 把已有 Grafana 大盘嵌进来 — 不想搬迁就直接复用;
- 把内部审批/变更系统嵌进来 — 维护窗口期一键申请屏蔽。
集成后效果:
- 侧栏底部会多一项链接(如"测试系统A"),点击在主区域加载该 iframe;
- 一键复制夜莺登录态/Cookie 信息(如果对方系统支持),跨系统免登录衔接。
新建系统集成

| 字段 | 必填 | 说明 |
|---|---|---|
| 名称 | 是 | 侧栏里显示的菜单名,建议简短(≤ 6 个字),如 CMDB、Wiki、工单 |
| 链接 | 是 | 要嵌入的完整 URL,例如 https://cmdb.intra.example.com/dashboard |
| 可见性 | 是 | 二选一:登录用户可见(所有登录夜莺的用户都能看到)、指定团队可见(选择具体团队后才能看到,做权限隔离) |
提交后立刻在侧栏底部出现该入口(可能需要刷新一次)。
列表里的额外操作
- 菜单显示开关:每行末尾有「是否在菜单显示」Switch — 关掉后该集成仍存在但不在侧栏显示,适合临时下线但保留配置。
- 拖拽排序:行首的「☰」图标可以拖拽,调整侧栏里的显示顺序。
- 编辑 / 删除:常规操作。
跨域 & iframe 安全:必看
外部系统能不能被嵌入,取决于对方的响应头,夜莺这边只是个 iframe 容器:
| 对方响应头 | 后果 |
|---|---|
X-Frame-Options: DENY 或 SAMEORIGIN |
浏览器强制拒绝嵌入,iframe 显示空白 |
Content-Security-Policy: frame-ancestors 'self' |
同上,浏览器拒绝 |
| 没有上面两个头 / 设置允许 | 可以嵌入 |
如果嵌入的目标网页打开后是空白 / 一片白,90% 是对方没放开 frame 嵌入。两种解法:
- 改对方的响应头:让对方运维加上
Content-Security-Policy: frame-ancestors https://你的夜莺域名/; - 本机起个反向代理:用 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。