夜鶯 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。