容器網路日誌Advanced Container Networking Services for Azure Kubernetes Service (AKS) 能讓你看到叢集內的每個網路流程。 指標 告訴你網路 狀況(頻寬使用率、錯誤率)。 日誌告訴你 原因:誰發起連線、使用了哪些協定,以及流量是否被允許或被阻擋。
這些日誌捕捉每個網路流程的元資料:
- 來源與目的地 IP 位址、Pod 名稱及服務名稱
- 命名空間、埠與協定
- 交通指揮與政策判決
有了這樣的背景,你可以將網路行為與特定工作負載關聯起來,排除連線問題,驗證安全政策,並進行鑑識分析。 容器網路日誌涵蓋第 3 層(IP)、第 4 層(TCP/UDP)及第 7 層(HTTP/gRPC/Kafka)流量。
為了管理資料量與成本,容器網路日誌支援 流程日誌彙整,將相似的流量合併成彙整紀錄,而非每個連線事件只儲存一條紀錄。 你能維持所需的運作模式,同時降低儲存和資料擷取成本。 欲了解更多資訊,請參閱 流量日誌聚合。
容器網路日誌提供兩種模式:
- 儲存日誌 - 持續收集,搭配自訂過濾器與流量聚合。 最適合長期監控和分析。
- 按需日誌 ——透過哈伯CLI及哈伯介面即時擷取。 最適合臨時故障排除。
當你需要持久記錄以符合法規、分析趨勢或自動警示時,使用儲存日誌。 當您正在主動偵錯連線能力或效能問題,並且需要立即掌握即時流量時,請使用隨選記錄。
預存記錄
當叢集啟用進階容器網路服務時,儲存日誌模式會自動啟用。 此功能已就緒,但在您告知 ACNS 要擷取哪些內容之前,不會產生任何記錄。
要開始收集日誌,請定義 ContainerNetworkLog 自訂資源,指定要監控哪些流量:依命名空間、Pod、服務、協定或判決。 一旦 CRD 套用完成,Cilium 代理會開始產生與其過濾器相符的流量,並將其寫入每個節點。 收集會持續運作,直到你移除 CRD 或停用 ACNS。
因為你能透過CRD過濾器精確控制哪些流量被記錄,你可以專注於重要的流量,避免收集不必要的資料。 結合 流量日誌彙整,此方法使儲存成本可預測且分析聚焦。
預存記錄模式的運作方式
Advanced Container Networking Services 使用 eBPF 技術搭配 Cilium 來擷取每個節點的網路流量。 啟用 ACNS 並 ContainerNetworkLog 套用自訂資源後,Cilium 代理會收集符合過濾條件的流量,並在每台主機上以 JSON 格式 /var/log/acns/hubble/events.log 寫入日誌。 日誌產生完全在叢集內部執行,不依賴 Azure 監視器。
在生產環境使用時,我們建議啟用 Azure 監視器 外掛。 啟用後,Container Insights 代理程式會收集主機本機記錄、套用節流限制,並將記錄傳送至 Log Analytics 工作區,讓您取得長期保留、KQL 查詢,以及內建 Azure 入口網站和 Azure 受控 Grafana 儀表板。 這是整合性最強的路徑,也是大多數客戶應該選擇的。
如果您的團隊已有現有的可檢視性管線,您也可以改為將相同的主機本機記錄轉送至任何與 OpenTelemetry 相容的收集器或記錄服務,可以與 Azure 監視器搭配使用,也可以取代 Azure 監視器。
欲了解更多關於限速與容器洞察的資訊,請參閱 容器洞察文件。
使用容器網路日誌(不論是否搭配 Azure 監視器)
你可以用兩種方式來使用容器網路紀錄。 正確的選擇取決於你是想要整合的 Azure 原生體驗,還是已經有一套可觀察性管線想繼續使用。
| 路徑 | 你會得到什麼 | 何時選擇它 |
|---|---|---|
| Azure 監視器 附加元件(推薦) | Container Insights 會將主機上的本地日誌收集到 Log Analytics 工作空間。 您可立即取得長期保留、KQL、內建 Azure 入口網站儀表板,以及 Azure 受控 Grafana 儀表板。 | 你想要在 AKS 上擁有最整合、最適合生產的體驗,且設定極簡。 |
| 使用您自己的管線來主機本地檔案 | ACNS 在每個節點會寫入 JSON 紀錄至 /var/log/acns/hubble/events.log 。 你可以將它們轉發到任何相容 OpenTelemetry 的收集器或日誌服務,也可以選擇與 Azure 監視器 一同使用或取代 Azure 監視器。 |
你已經有了一個集中式的監控平台,希望將網路日誌紀錄傳送至那裡。 |
對大多數客戶,我們建議啟用 Azure 監視器。 這是最快取得資料保留、查詢和儀表板功能的方法,而不需要自己建構數據流。
預存記錄模式的主要功能
可自定義的篩選條件。 定義
ContainerNetworkLog自訂資源,依命名空間、莢、服務、埠、協定、裁決或流量方向進行篩選。 只有匹配的流量會被記錄,因此你可以精確控制收集的流量和成本。流量日誌聚合。 類似的流程會自動每30秒分組成摘要記錄,減少資料量,同時保留服務通訊模式、錯誤率及安全判定等操作訊號。 結合精準篩選器,聚合讓你在不必承擔過高的導入成本的情況下維持廣泛的可見度。 欲了解更多資訊,請參閱 流量日誌聚合。
日誌儲存選項。 ACNS 總是在每個節點本地寫入日誌。 接著,你可以選擇如何食用:
主機本地檔案(始終開啟): 日誌儲存在主機節點的
/var/log/acns/hubble。 檔案會在 50 MB 時自動輪替,較舊的記錄會遭到覆寫。 可直接用於短期即時監控,或將檔案轉發至任何相容 OpenTelemetry 的收集器或日誌服務以進行額外的日誌管理。Azure 監視器(建議):啟用 Azure 監視器 外掛以收集並儲存在Log Analytics工作區中的日誌。 你透過 Prometheus 的託管服務,獲得安全且合規的儲存,具備長期保留、KQL 查詢、異常偵測、歷史分析與警示功能。 記錄產生仍會透過 Cilium 代理程式和
ContainerNetworkLogCRD 執行;Azure 監視器則在其上新增取用層。該
ContainerNetworkLogs表格預設使用 Analytics 層級。 你可以切換到 Basic 等級,這樣可以降低擷取和保留成本,同時維持類似的可觀察體驗。 每個層級都有專門的 Azure 入口網站儀表板,並針對其查詢功能進行優化。 欲了解更多資料表方案資訊,請參見 Log Analytics 資料表方案。 想了解如何擺設餐桌計畫,請參見 「擺設餐桌計畫」。
Azure 入口中的視覺化。 您可以直接在 Log Analytics 查詢並分析日誌,或使用內建的 Azure 入口網站儀表板。 每個表格層級都有專用儀表板,所以無論選擇哪個層級,都能獲得相同的可觀察體驗。 請參見Azure入口網站中的日志可视化以了解詳情。
在 Azure 入口網站中將記錄視覺化
你可以在叢集的 Log Analytics 工作區的 Azure 入口網站中,視覺化、查詢並分析流程日誌。
容器網路日誌內建 Azure 入口網站儀表板,用以視覺化流程資料。 每個 Log Analytics 表格層級都有獨立的儀表板:
| Dashboard | 路徑 | 資料表層級 |
|---|---|---|
| 流量日誌 - 基本層 (ID:23155) | Azure>監控>容器>網路>流量日誌 - 基本層 | 基本 |
| 流量日誌 - 分析層(ID:23156) | Azure>Insights>Containers>Networking>Flow Logs - Analytics Tier | 分析(預設) |
這兩個儀表板都會顯示哪些 AKS 工作負載彼此通訊,包括網路要求、回應、捨棄和錯誤。 使用與你 ContainerNetworkLogs 資料表配置的表格層級相符的儀表板。
Tip
表格 ContainerNetworkLogs 預設為分析層級。 如果你想降低成本,可以切換到 Basic 層級,並使用相應的 Basic Tier 儀表板,而不會失去可觀察性覆蓋範圍。 更多資訊請參閱 Log Analytics 表格圖。
Azure 入口網站儀表板包含以下主要元件:
網路健康概述。 上方區塊會顯示摘要指標(總流量日誌、獨特請求、中止請求和轉發請求),讓你能快速發現異常。 統計數據依協定細分:DNS 丟棄請求、HTTP 2xx 回應、第四層請求與回應率,以及丟棄次數。 服務依賴圖顯示哪些服務彼此通訊,方便辨識瓶頸與意外流量路徑。
流量日誌和錯誤日誌。 儀表板會將流程日誌與錯誤日誌分開,分成不同的視圖,讓你可以專注於錯誤,而不必翻閱一般流量。 利用內建篩選器依協定、命名空間或判決縮小結果範圍。 例如,為了排除 DNS 解析失敗,可以依 DNS 協定過濾錯誤日誌。
每條日誌都包含標籤、時間戳記及來源/目的地細節,幫助你在調查過程中精確定位特定事件。
最上層命名空間、工作負載和 DNS 錯誤。 本節呈現最活躍的命名空間、最高流量的工作負載、埠口使用率及最常見的 DNS 錯誤。 利用它來辨識哪些工作負載產生最多流量、偵測遺失請求,並比較協定分布(例如 TCP 與 UDP)。 這裡出現異常模式,例如突發的尖峰或陌生目的地,可能表示設定錯誤或安全疑慮。
流量對數聚合
網路流量累積得很快。 一個擁有 200 個微服務的叢集,每 30 秒就能產生數十萬筆流量記錄。 儲存所有原始資料成本會很高。
舉例來說,假設 client-1 和 client-2 都透過 TCP 與一個 server pod 通訊。 在 30 秒的視窗內,節點上的原始流量記錄如下:
| 來源 | 來源連接埠 | Destination | 目的埠口 | 通訊協定 | Flag |
|---|---|---|---|---|---|
| 客戶端-1 | 12345 | 伺服器 | 80 | TCP | SYN |
| 伺服器 | 80 | 客戶端-1 | 12345 | TCP | SYN-ACK |
| 客戶端-1 | 12345 | 伺服器 | 80 | TCP | ACK |
| 客戶端-1 | 12345 | 伺服器 | 80 | TCP | PSH |
| 伺服器 | 80 | 客戶端-1 | 12345 | TCP | ACK |
| 客戶-2 | 23456 | 伺服器 | 80 | TCP | SYN |
| 伺服器 | 80 | 客戶-2 | 23456 | TCP | SYN-ACK |
| 客戶-2 | 23456 | 伺服器 | 80 | TCP | ACK |
| 客戶-2 | 23456 | 伺服器 | 80 | TCP | PSH |
| 伺服器 | 80 | client-2 | 23456 | TCP | ACK |
經過彙整,這10個紀錄變成兩個:
| 來源 | 來源連接埠 | Destination | 目的埠口 | 通訊協定 | 已傳送的流量 | 接收的水量 |
|---|---|---|---|---|---|---|
| 客戶端-1 | 12345 | 伺服器 | 80 | TCP | 4 | 6 |
| 客戶-2 | 23456 | 伺服器 | 80 | TCP | 4 | 6 |
流量日誌彙整透過將相似的流量分組成摘要記錄來解決此問題。 在每個 30 秒的視窗中,共享相同聚合鍵欄位的流量會合併成一個記錄,並計數代表多少個流量。
以下欄位組成聚合鍵:
| 領域 | Description |
|---|---|
verdict |
FORWARDED、DROPPED 或 ERROR |
is_reply |
流量是要求 (false) 還是回應 (true) |
drop_reason_desc |
封包被丟棄的原因 |
source.namespace |
來源 Pod 命名空間 |
destination.namespace |
目的地 Pod 命名空間 |
source.workloads |
源工作負載(Deployment、StatefulSet 或 DaemonSet) |
destination.workloads |
目標工作負載(部署、StatefulSet 或 DaemonSet) |
source.identity |
來源安全身份(始終作為可靠備援) |
destination.identity |
目的地安全身份(始終作為後備方案存在) |
l4.TCP.destination_port |
TCP 目的埠 |
l4.UDP.destination_port |
UDP 目的埠 |
l7.http.code |
HTTP 回應碼(200、404、500 等) |
l7.dns.rcode |
DNS回應碼(NOERROR、NXDOMAIN等) |
IP.ipVersion |
IPv4 或 IPv6 |
IP.encrypted |
流程是否加密(WireGuard/IPsec) |
source.cluster_name |
來源叢集名稱 |
destination.cluster_name |
目的叢集名稱 |
在 30 秒時間範圍內符合所有這些欄位的流量會合併成一筆記錄。 這樣可以保留你所需的訊號(哪些服務會通訊、通訊的頻率、發生哪些錯誤、流量是允許還是被阻擋),同時大幅降低資料量。 與隨機捨棄流量並可能錯過罕見安全事件的抽樣不同,聚合保留 100% 的模式資訊。
關鍵點:
- 聚合功能預設已啟用並設定。 這降低了日誌儲存與攝入成本,無需手動調整。
- 你可以通過
includeFilters在ContainerNetworkLogCRD 中控制哪些流量會被捕捉。 - 較窄的濾波器(特定命名空間或服務對)通常能達到更好的壓縮效果,因為捕捉到的流量更為相似。
- 彙總記錄會略過高基數和個別流量屬性 (例如個別時間戳記、Pod IP、HTTP URL、DNS 查詢名稱),以盡可能降低擷取量和儲存成本。 它們是為了高階問題偵測而設計的。 使用按需日誌進行細緻的流量分析與調查。
備註
實際的儲存減少會依據你的過濾器配置、工作負載多樣性和流量模式而有所不同。
按需日誌
隨需日誌讓你能即時擷取並檢查流程日誌,無需事先設定或持續儲存。 當你正在積極排查連線或效能問題並需要即時檢視時,請使用隨選日誌。
ACNS 提供兩種按需擷取工具。 要設定任一工具,請參閱 「設定隨選日誌模式」。
哈勃命令列介面 (CLI)
哈伯的 CLI 讓你能直接從終端機查詢、篩選和分析流程日誌。 當您需要精細篩選條件時,這特別實用,例如在進行中的偵錯工作階段期間,依命名空間、Pod 標籤或判定結果隔離流量。
Hubble UI (使用者介面)
哈伯介面提供服務間通訊的圖形化視圖。 當你想視覺化追蹤流量路徑、辨識哪些服務在通訊,並發現異常而不寫 CLI 指令時,這很適合你。
隨需日誌的主要優點
- 不需要事先設定。 立即開始擷取流程,不要定義自訂資源或設定儲存。
- 即時可見性。 當問題發生時,檢查即時流量並查看封包元資料。
- 快速故障排查。 篩選流程可在 Hubble CLI 中進行互動式操作,或在 Hubble 介面中以視覺方式查看服務地圖。
- 低開銷。 不需要持續儲存,因此臨時調查也不會持續產生成本。
儲存日誌的建議
先從廣泛的篩選條件開始,然後逐步縮小範圍。 當你第一次啟用流程日誌時,使用寬過濾器來捕捉跨關鍵命名空間的流量。 先執行設定幾天,並在 Log Analytics 中檢視收集到的資料。 檢視資料量、成本,以及擷取的流量是否符合你實際需求。 接著縮小
includeFilters的範圍,以專注於高價值流量並排除雜訊。先使用預先建構的儀表板。 內建的 Azure 入口網站儀表板涵蓋常見的使用案例,如服務通訊模式、錯誤率及 DNS 失敗。 從這裡開始。 只有在你需要預先建置儀表板無法提供的可見性時,才加入自訂面板或 Log Analytics 查詢。
定期複習。 隨著工作負載和流量模式的變化,你的過濾器可能需要更新。 定期檢查資料量與流量覆蓋,確保仍能以合理成本捕捉到正確的流量。
局限性
資料平面與特徵需求:
- 儲存日誌模式僅適用於 Cilium 資料平面。
- 只有在啟用第 7 層原則支援時,才會擷取第 7 層流程記錄。 如需詳細資訊,請參閱 設定第 7 層原則。
- 只有在套用 Cilium 完全限定網域名稱(FQDN)網路政策時,DNS 流量與指標才會被擷取。 如需詳細資訊,請參閱 設定 FQDN 原則。
聚合取捨:
- 流程日誌聚合不會保留個別流程時間戳、每個 pod 的 IP 位址,或像 HTTP URL 和 DNS 查詢名稱這類高基數欄位。 使用隨選記錄進行個別流量調查。
儲存與平台:
- 位於
/var/log/acns/hubble/的主機本機檔案,其每個節點的上限為 50 MB,並會自動輪替。 如果你需要長期保存,請啟用 Azure 監視器(建議)或將檔案轉發到你自己的日誌服務。 - 不支援輔助記錄資料表計劃。
定價
這很重要
進階容器網路服務是一項付費供應項目。
如需定價的詳細資訊,請參閱 進階容器網路服務 - 定價。
相關內容
- 建立容器網路日誌
- AKS 進階容器網路服務
- 先進容器網路服務中的容器網路可觀察性
- 先進容器網路服務中的容器網路安全