<a name="observe"></a>

# 觀測流量

本頁說明「活動」分區（「活動」與「系統狀態」）及「觀測」分區（「連線」、「分流」、「DNS」、「日誌」與「事件」）。每個頁面依序說明顯示的內容、可執行的操作，以及連結前往的位置。

<a name="activity"></a>

## 活動

doona 預設開啟「活動」頁。部分卡片連結到存放詳細資料的頁面；「出站模式」與「全域模式出站」卡片則提供操作控制項。

### 出站模式

1. 在「出站模式」卡片選擇「規則」、「直連」或「全域」。
2. 選擇「全域」時，在「全域模式出站」卡片選擇一個策略群組。選定群組前，「套用」按鈕無法使用，卡片顯示「全域模式須指定出站」。選擇群組也會同時選取「全域」。
3. 按「套用」。doona 將模式寫入主組態並重載，完成後以提示訊息顯示新模式。只選擇模式而不按「套用」，不會變更任何設定。

卡片顯示「唯讀」時，doona 無法寫入主組態。按「唯讀」可查看原因，處理方法見[唯讀的組態檔案](https://zakkaus.github.io/doona-docs/zh-TW/troubleshooting.md#read-only)。卡片顯示「此後端不提供」時，表示後端沒有提供此卡片可編輯的組態。

### 卡片

1. 狀態卡片顯示引擎狀態。有功能未開啟時，按功能數量連結（例如「2 項功能未開啟」）可前往「系統狀態」的「未開啟的功能」。按「檢視詳情」前往「系統狀態」。
2. 按「下載」或「上傳」卡片，前往「連線」的「流量」分頁。按「活動連線」卡片，前往連線清單。
3. 在「延遲」卡片的「節點」選單選擇節點。這只變更卡片顯示的延遲，不會變更路由。按延遲數值可在[「節點」](https://zakkaus.github.io/doona-docs/zh-TW/routing.md#nodes)頁開啟該節點。
4. 按「CPU 使用率」數值前往「系統狀態」。
5. 在「流量」卡片選擇「即時」、「10 分鐘」、「1 小時」、「6 小時」、「24 小時」或「7 天」。
6. 在「出站下載量」選取出站，開啟依該出站篩選的「連線」。此圖表統計標題旁所示時間起的下載量，不表示目前的傳輸速率。
7. 在「流量排行」切換「裝置」與「網域」。選取裝置會開啟依該裝置篩選的「連線」；選取網域會以該網域搜尋「連線」。排行只涵蓋可見連線；顯示「已截斷」表示連線清單不完整。
8. 「記憶體」卡片顯示行程記憶體的變化。卡片上的「檢視詳情」同樣前往「系統狀態」。
9. 「通知與問題」列出近期通知，連續相同的通知合併為一列並標示次數。按「檢視全部」前往「事件」。

<a name="overview"></a>

## 系統狀態

從導覽列開啟「系統狀態」，或在「活動」頁按「檢視詳情」或「CPU 使用率」數值。頁首顯示引擎狀態、「組態版本」、「運作時間」、「CPU 使用率」與「上次重載」。「組態版本」識別目前生效的組態修訂，不是 `generation` 編號。

1. 「引擎」顯示引擎版本、「API」、「建置」、「執行個體」、「啟動時間」與「組態生效」。標籤顯示後端的能力等級：「基本」或「完整可觀測」。
2. 「流量計數」顯示「TCP 連線」、「UDP 連線」、「連線總數」、「上傳」、「下載」與「速率統計間隔」。下方一行顯示計數起始時間，以及計數涵蓋「全部流量」或「可見流量」。
3. 「記憶體」顯示後端回報的「常駐記憶體」、cgroup 數值與「OOM 次數」。已知 cgroup 上限時，另顯示「cgroup 使用率」長條。
4. 「資料路徑」顯示核心中 eBPF 程式、掛鉤和映射表的檢查結果，以及「掛載點」表格。資料路徑錯誤與執行期降級以警告顯示在卡片下方。
5. 「後端能力」列出後端提供的功能。選取功能可前往使用該功能的頁面。
6. 只有部分功能未開啟時才會顯示「未開啟的功能」。每列列出原因與受影響的功能。「開啟方法」顯示須加入的設定；「可能原因」說明原因；其他列連結到「設定」頁的「後端選項」或「地理資料」，或連結到本指南。
7. 按「匯出狀態 JSON」下載後端回報的狀態。「重載」、「暫停」與「恢復」只在後端允許時顯示，每次操作的結果以提示訊息顯示。

<a name="connections"></a>

## 連線

「連線」預設開啟「流量」分頁。從篩選清單或選取連線的連結進入時，改為開啟「連線」分頁。

### 流量分頁

1. 「連線流量」以點表示每條連線：橫軸為上傳量，縱軸為下載量。選取資料點會在「連線」分頁開啟該連線。
2. 「節點延遲」依「節點」頁顯示的 TCP 延遲放置每個節點，並區分「使用中」與「未使用」的節點。

### 連線分頁

1. 預設欄位為「目標」、「裝置」、「節點」、「規則」、「狀態」、「下載」、「下載速率」與「開始」。使用「欄位」選單顯示或隱藏欄位。選取可排序的欄位標題即可排序。
2. 在「篩選」輸入網域、IP、裝置或行程。輸入的文字也會比對出站、鏈與規則。使用「網路協定」、「出站」或「選擇」（裝置或規則）縮小清單範圍。在窄螢幕上，這些條件集中在「篩選條件」選單。
3. 使用「分組」選擇「依裝置」、「出站」或「不分組」。「全部展開」與「全部收合」一次展開或收合所有群組。「清除篩選」移除所有篩選條件。
4. 清單被截斷時會顯示提示。顯示「僅部分連線可見」或「無連線可見」時，清單為空不代表該裝置沒有連線。
5. 按「匯出 CSV」下載篩選後的清單。
6. 選取一列開啟詳細資料面板，其中顯示狀態、目標、裝置、行程、觀測來源、「出站」、「鏈」與「規則」。
7. 面板的主要操作是「新增規則」。工具列的「新增規則」對選取的列執行相同操作。對話框說明見[新增規則](https://zakkaus.github.io/doona-docs/zh-TW/routing.md#add-rule)。
8. 「更多操作」依情況提供：
   - 「檢視命中的規則」：在[「規則」](https://zakkaus.github.io/doona-docs/zh-TW/routing.md#rules)頁開啟該規則。
   - 「編輯命中規則的出站設定」：在「規則」頁開啟該規則的編輯畫面。
   - 「檢視流程」：在「分流」開啟該流程記錄。
   - 「追蹤此連線」：以此連線的資料開啟「規則」頁的追蹤分頁，說明見[追蹤](https://zakkaus.github.io/doona-docs/zh-TW/routing.md#trace)。
   - 「僅顯示此裝置」：將清單篩選為該連線的裝置。
   - 「關閉連線」：關閉該連線。只由 eBPF 觀測到的連線無法使用此操作，因為這類連線由核心直接轉發，後端沒有可中斷的使用者空間傳輸。
9. 按「全部關閉」並確認。只篩選裝置與網路協定時，doona 會關閉所有符合的連線，包括對話框開啟後才建立的連線。使用其他篩選條件或清單被截斷時，doona 會逐一關閉清單中的連線。核心直連的連線會被略過，提示訊息顯示已關閉與略過的數量。

<a name="flows"></a>

## 分流

「分流」顯示 honk 如何路由已記錄的流程，包含「總覽」與「記錄」兩個分頁。

### 總覽

1. 「連線拓撲」卡片繪出從規則或裝置到出站與節點的路徑，以及保留的流程數。可切換「依規則」與「依裝置」。
2. 選取圖中的項目可固定其路徑。
3. 按「檢視此路徑的 N 筆流程」，開啟依該路徑篩選的「記錄」。按「清除路徑篩選」取消固定。

### 記錄

1. 依「網路協定」（「全部」、「TCP」或「UDP」）與「狀態」篩選。路徑或連線篩選以標籤顯示（「路徑：…」或「連線：…」），選取標籤即可移除。部分流量未完整觀測時，會顯示「觀測涵蓋範圍」。
2. 欄位為「目標」、「節點」、「規則」、「協定」、「狀態」與「開始」。
3. 選取一筆流程開啟詳細資料面板，其中顯示追蹤為「完整」或「不完整」、組態修訂、「狀態」、「出站」、「節點」、「規則」，追蹤不完整時另顯示「不完整原因」。下方依序列出追蹤步驟。
4. 按「檢視連線」開啟仍存在的即時連線。按「為此目標新增規則」開啟規則對話框，說明見[新增規則](https://zakkaus.github.io/doona-docs/zh-TW/routing.md#add-rule)。
5. 「記錄設定」開啟「設定」頁的「後端選項」，流程記錄在此設定，說明見[後端選項](https://zakkaus.github.io/doona-docs/zh-TW/config-and-settings.md#runtime-options)。

<a name="dns"></a>

## DNS

「DNS」最多有四個分頁，依序為「統計」、「解析記錄」、「快取」與「查詢」。只顯示後端支援的分頁。

1. 「統計」彙整最新一頁解析記錄：「中位數」、「P95」、「快取命中率」與「失敗率」，以及上游查詢延遲、「回應結果」、「快取狀態」與「查詢排行」。
   - 「開啟 DNS 組態」在[「組態」](https://zakkaus.github.io/doona-docs/zh-TW/config-and-settings.md#config-page)頁開啟組態的 `dns` 區段。
   - 「檢視快取」開啟「快取」分頁。
   - 在「查詢排行」切換「裝置」與「網域」。選取項目會開啟依該項目篩選的「解析記錄」。
2. 「解析記錄」列出近期解析，欄位為「時間」、「網域」、「類型」、「裝置」、「結果」、「上游」與「耗時」。
   - 可依「網域」、「類型」或「裝置」篩選。
   - 選取一列可查看回應、快取狀態與路由。按「新增規則」為該記錄開啟規則對話框。
   - 「重新整理」載入最新記錄。有較新的記錄等待載入時會顯示提示；「重新整理」會取代目前已載入的記錄。
   - 「載入較舊記錄」延長清單。「匯出 CSV」只涵蓋已載入的記錄。
3. 「快取」列出快取項目，欄位為「網域」、「類型」、「狀態」、「到期時間」與「過期後仍可用至」。
   - 選取項目後按「新增規則」，為該項目開啟規則對話框。
   - 後端支援時，「刪除」移除單一項目。
   - 後端支援時，「清除全部快取」經確認後移除所有項目。此操作無法復原。
4. 「查詢」透過 honk 的 DNS 路由發出 DNS 查詢。
   - 輸入網域、選擇「類型」，再按「查詢」。
   - 結果顯示「快取命中」或「快取未命中」、「狀態」、「上游」、「路由來源」、「路由規則」、「耗時」與回應。
   - 這類查詢屬於診斷用途，不會出現在「解析記錄」。
   - 「新增規則」為查詢的網域或回應位址開啟規則對話框。「檢視快取」開啟符合的快取項目。

<a name="logs"></a>

## 日誌

「日誌」顯示引擎的即時日誌串流。

1. 在「等級」選擇要顯示的最低嚴重程度。旁邊的「引擎記錄：…及以上」顯示引擎實際記錄的等級；低於此等級的選項會標示須先在「設定」頁調低日誌等級。
2. 在「模組」輸入模組前綴，依模組篩選。
3. 「日誌時間分布」依等級繪出已接收的記錄。選取圖中的等級，將其設為最低等級。
4. 開啟「暫停」可凍結清單。狀態會顯示已到達的新記錄數，關閉「暫停」後這些記錄才會出現。暫停期間只保留最新的記錄。
5. 「清空」移除此頁已顯示的記錄。「匯出」將已接收的記錄下載為文字檔。
6. 「記錄設定」開啟「設定」頁的[「後端選項」](https://zakkaus.github.io/doona-docs/zh-TW/config-and-settings.md#runtime-options)，日誌記錄與日誌等級在此設定。
7. 選取一列可查看完整訊息。狀態顯示「串流中」、「重新連線中」或「已中斷連線」。重新連線後會補回仍保留的記錄；無法補回時，清單會標示缺漏的位置。

清單顯示「組態禁止日誌記錄」時，須修改 honk 組態，說明見[組態](https://zakkaus.github.io/doona-docs/zh-TW/configuration.md#config)。清單顯示「請先在設定頁開啟日誌記錄」時，在「記錄設定」開啟日誌記錄。

<a name="events"></a>

## 事件

「事件」顯示後端的事件串流，新事件在前。

1. 「種類」預設為「排除運作狀態更新」。可改選「所有種類」，或後端提供的單一種類。
2. 清單欄位為「時間」、「種類」與「摘要」。工具列顯示連線狀態、保留的事件數，以及可續傳時的「可從上次位置續傳」。
3. 選取事件可查看完整摘要。「組態生效」事件提供「檢視組態」連結。「流程記錄遺失」事件提供「檢視流程記錄」與「記錄設定」連結。
4. 按「匯出 JSON」下載目前顯示的事件。

頁面重新連線後會補回仍保留的事件。若續傳位置已失效，清單會以一列標示遺失的事件。
