49 lines
2.7 KiB
Markdown
49 lines
2.7 KiB
Markdown
# 目标状态判定
|
||
|
||
DiAL 使用单层状态模型。
|
||
|
||
| 状态 | 含义 |
|
||
| ------ | ---------------------------------------- |
|
||
| `UP` | 拨测结果符合 `expect` 规则 |
|
||
| `DOWN` | 拨测结果不符合 `expect` 规则,或执行失败 |
|
||
|
||
执行失败(网络错误、超时、进程崩溃)和 expect 不匹配都统一为 `DOWN`,通过 `failure.kind` 区分原因。
|
||
|
||
| `failure.kind` | 含义 |
|
||
| -------------- | ---------------------------------------- |
|
||
| `error` | 网络、超时、进程、协议解析或内部执行错误 |
|
||
| `mismatch` | 拨测完成,但结果不满足 expect |
|
||
|
||
## API 结果字段
|
||
|
||
API 返回的检查结果包含 `detail` 和 `observation`。
|
||
|
||
| 字段 | 说明 |
|
||
| ------------- | ------------------------------------------------------------ |
|
||
| `detail` | 后端按 checker 类型从结构化 observation 动态生成的人可读摘要 |
|
||
| `observation` | 保存该次检查的结构化观测数据 |
|
||
| `failure` | 保存首个错误或不匹配原因 |
|
||
| `matched` | 是否符合 expect |
|
||
| `durationMs` | 本次检查耗时 |
|
||
| `timestamp` | 本次检查时间 |
|
||
|
||
`detail` 不写入 SQLite。存储层仅持久化 `observation` JSON、`failure` JSON、匹配状态、耗时和时间戳。
|
||
|
||
## observation 示例
|
||
|
||
不同 checker 的 observation 字段不同,常见信息包括:
|
||
|
||
| Checker | observation 内容示例 |
|
||
| ------- | ------------------------------------------------------------------ |
|
||
| HTTP | 状态码、响应头、按需读取的 body 预览 |
|
||
| Cmd | exit code、stdout/stderr 预览 |
|
||
| TCP | 连接结果、banner 摘要 |
|
||
| UDP | 响应内容、来源地址、响应大小 |
|
||
| ICMP | 存活结果、丢包率、平均延迟、最大延迟 |
|
||
| DNS | RCODE、记录值、TTL、flags、CNAME 链 |
|
||
| LLM | HTTP 状态、模型输出、finish reason、token usage、流式首 token 时间 |
|
||
|
||
## 趋势与统计
|
||
|
||
Dashboard 基于存储的检查结果计算实时状态、可用率、耗时趋势、P95、状态条和故障段等指标。指标语义由后端应用层实现,SQLite 主要负责存储、筛选、排序、分页和基础聚合。
|