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

# 观测流量

本页介绍「活动」分区（「活动」与「系统状态」）及「观测」分区（「连接」、「分流」、「DNS」、「日志」与「事件」）。每个页面依次说明显示的内容、可执行的操作，以及链接前往的位置。

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

## 活动

doona 默认打开「活动」页。部分卡片链接到存放详细数据的页面；「出站模式」与「全局模式出站」卡片则提供操作控件。

### 出站模式

1. 在「出站模式」卡片选择「规则」、「直连」或「全局」。
2. 选择「全局」时，在「全局模式出站」卡片选择一个策略组。选定策略组前，「应用」按钮不可用，卡片显示「全局模式须指定出站」。选择策略组也会同时选中「全局」。
3. 点击「应用」。doona 将模式写入主配置并重载，完成后以提示消息显示新模式。只选择模式而不点击「应用」，不会更改任何设置。

卡片显示「只读」时，doona 无法写入主配置。点击「只读」可查看原因，处理方法见[只读的配置文件](https://zakkaus.github.io/doona-docs/zh-CN/troubleshooting.md#read-only)。卡片显示「此后端不提供」时，表示后端没有提供此卡片可编辑的配置。

### 卡片

1. 状态卡片显示引擎状态。有功能未开启时，点击功能数量链接（例如「2 项功能未开启」）可前往「系统状态」的「未开启的功能」。点击「查看详情」前往「系统状态」。
2. 点击「下载」或「上传」卡片，前往「连接」的「流量」标签页。点击「活动连接」卡片，前往连接列表。
3. 在「延迟」卡片的「节点」菜单选择节点。这只更改卡片显示的延迟，不会更改路由。点击延迟数值可在[「节点」](https://zakkaus.github.io/doona-docs/zh-CN/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-CN/routing.md#add-rule)。
8. 「更多操作」视情况提供：
   - 「查看命中的规则」：在[「规则」](https://zakkaus.github.io/doona-docs/zh-CN/routing.md#rules)页打开该规则。
   - 「编辑命中规则的出站设置」：在「规则」页打开该规则的编辑界面。
   - 「查看流程」：在「分流」打开该流程记录。
   - 「追踪此连接」：以此连接的数据打开「规则」页的追踪标签页，说明见[追踪](https://zakkaus.github.io/doona-docs/zh-CN/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-CN/routing.md#add-rule)。
5. 「记录设置」打开「设置」页的「后端选项」，流程记录在此设置，说明见[后端选项](https://zakkaus.github.io/doona-docs/zh-CN/config-and-settings.md#runtime-options)。

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

## DNS

「DNS」最多有四个标签页，依次为「统计」、「解析记录」、「缓存」与「查询」。只显示后端支持的标签页。

1. 「统计」汇总最新一页解析记录：「中位数」、「P95」、「缓存命中率」与「失败率」，以及上游查询延迟、「响应结果」、「缓存状态」与「查询排行」。
   - 「打开 DNS 配置」在[「配置」](https://zakkaus.github.io/doona-docs/zh-CN/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-CN/config-and-settings.md#runtime-options)，日志记录与日志级别在此设置。
7. 点击一行可查看完整消息。状态显示「流式接收中」、「重新连接中」或「已断开连接」。重新连接后会补回仍保留的记录；无法补回时，列表会标明缺失的位置。

列表显示「配置禁止日志记录」时，须修改 honk 配置，说明见[配置](https://zakkaus.github.io/doona-docs/zh-CN/configuration.md#config)。列表显示「请先在设置页开启日志记录」时，在「记录设置」开启日志记录。

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

## 事件

「事件」显示后端的事件流，新事件在前。

1. 「种类」默认为「排除运行状态更新」。可改选「所有种类」，或后端提供的单一种类。
2. 列表的列为「时间」、「种类」与「摘要」。工具栏显示连接状态、保留的事件数，以及可续传时的「可从上次位置续传」。
3. 点击事件可查看完整摘要。「配置生效」事件提供「查看配置」链接。「流程记录丢失」事件提供「查看流程记录」与「记录设置」链接。
4. 点击「导出 JSON」下载当前显示的事件。

页面重新连接后会补回仍保留的事件。若续传位置已失效，列表会以一行标明丢失的事件。
