- 新增 type: cpu checker,基于 os.cpus() 两次快照计算 CPU 使用率 - 配置项:sampleDuration(默认 1s)、includePerCore(默认 false) - expect 字段:usagePercent、idlePercent、maxCoreUsagePercent、minCoreUsagePercent、durationMs - idlePercent 与 usagePercent 互补恒等于 100,百分比范围 0-100 - logicalCoreCount 仅输出到 observation,不作为 expect 字段 - 不暴露 userPercent / systemPercent - 语义校验禁止 sampleDuration >= timeout - 支持 AbortSignal 超时取消 - 完整测试覆盖:schema、validate、normalize、resolve、calculate、execute、expect、config-loader - 新增用户文档 docs/user/checkers/cpu.md - 更新 checker 索引、配置类型列表、示例配置和 schema
7.0 KiB
配置文件
DiAL 通过 YAML 配置文件定义运行参数和拨测目标。完整可运行示例参见 ../../probes.example.yaml。配置 JSON Schema 位于 ../../probe-config.schema.json。
配置结构
# yaml-language-server: $schema=./probe-config.schema.json
server:
listen:
host: "127.0.0.1"
port: "${server_port}"
storage:
dataDir: "/tmp/probes_data"
retention: "${retention}"
logging:
level: "${log_level|info}"
file:
path: "<dataDir>/logs/dial.log"
probes:
execution:
maxConcurrentChecks: "${max_checks}"
variables:
server_port: 3000
retention: "7d"
max_checks: 20
default_interval: "30s"
default_timeout: "10s"
targets:
- id: "baidu-home"
name: "Baidu"
type: http
interval: "${default_interval}"
timeout: "${default_timeout}"
http:
url: "https://www.baidu.com"
expect:
status: [200]
server.listen
| 字段 | 说明 | 必填 | 默认值 |
|---|---|---|---|
host |
监听地址 | 否 | 127.0.0.1 |
port |
监听端口 | 否 | 3000 |
server.storage
| 字段 | 说明 | 必填 | 默认值 |
|---|---|---|---|
dataDir |
数据目录,相对路径基于配置文件所在目录解析 | 否 | ./data |
retention |
历史数据保留时长,支持 ms、s、m、h、d 单位 |
否 | 7d |
probes.execution
| 字段 | 说明 | 必填 | 默认值 |
|---|---|---|---|
maxConcurrentChecks |
最大并发拨测数 | 否 | 20 |
server.logging
| 字段 | 说明 | 必填 | 默认值 |
|---|---|---|---|
server.logging.level |
全局日志等级,console 和 file 未指定时继承此值 | 否 | info |
server.logging.console.level |
控制台日志等级 | 否 | 继承 level |
server.logging.file.level |
文件日志等级 | 否 | 继承 level |
server.logging.file.path |
日志文件路径,相对路径基于配置文件目录解析 | 否 | <dataDir>/logs/dial.log |
server.logging.file.rotation.size |
按大小滚动,支持 KB、MB、GB 单位 |
否 | 50MB |
server.logging.file.rotation.frequency |
按时间滚动:hourly、daily、weekly |
否 | daily |
server.logging.file.rotation.maxFiles |
保留的归档文件数量,不含活跃日志 | 否 | 14 |
日志等级支持:trace、debug、info、warn、error、fatal。
控制台始终输出 pretty 格式,文件始终输出 JSONL 格式并支持滚动。rotation.size 和 rotation.frequency 任一条件触发即滚动。
内置默认值
| 字段 | 默认值 | 约束 |
|---|---|---|
interval |
30s |
最小 10s |
timeout |
10s |
必须小于等于 interval |
各 checker 专属默认值见 Checker 参考。
variables
variables 是顶层动态键值表,key 必须符合 [a-zA-Z_][a-zA-Z0-9_]*,value 仅支持 string、number、boolean。server、probes 和 targets 中的字符串值可引用变量。
| 语法 | 说明 |
|---|---|
${key} |
引用 variables 或环境变量 |
${key|default} |
variables 和环境变量都不存在时使用默认值 |
${key|} |
variables 和环境变量都不存在时使用空字符串 |
$${key} |
转义输出字面量 ${key} |
解析优先级为 variables -> process.env -> 默认值。三者均不存在时配置校验失败。字段值完整等于单个变量引用时会保留 number、boolean、string 类型;部分拼接时统一转为字符串。
变量替换作用于 server、probes 和 targets,不作用于 variables 段自身,且不会替换 targets[].id 和 targets[].type 字段;对象 key 不参与替换。
配置加载形态
配置加载内部区分三层形态:
| 形态 | 说明 |
|---|---|
| Authoring Config | 用户 YAML 可书写形态,允许变量引用和 expect 简写 |
| Normalized Config | normalizeAuthoringConfig() 完成变量替换、expect 简写展开并移除 variables 后的形态 |
| ResolvedConfig | checker resolve() 补默认值并解析 duration、size、路径和运行期环境后的形态 |
根目录 probe-config.schema.json 面向 Authoring Config,因此 VSCode 校验会接受 server.listen.port: "${server_port|3000}"、http.maxRedirects: "${MAX|5}" 和 expect.durationMs: 5000 这类写法。
targets 通用字段
| 字段 | 说明 | 必填 | 默认值 |
|---|---|---|---|
id |
目标唯一标识,最长 30 字符,支持字母数字、下划线、连字符,不参与变量替换 | 是 | 无 |
name |
展示名称,最长 30 字符,支持变量替换,可省略或显式 null;前端展示时 null 回退到 id |
否 | 无 |
description |
目标描述,最长 500 字符,支持变量替换,可省略或显式 null,允许空字符串 | 否 | 无 |
type |
目标类型:http、cmd、db、tcp、udp、dns、icmp、llm、ws、cpu |
是 | 无 |
group |
分组名称 | 否 | default |
interval |
拨测间隔,最小 10s |
否 | 30s |
timeout |
超时时间,必须小于等于 interval |
否 | 10s |
Checker 专属配置
每个 target 必须根据 type 配置对应的 checker 专属字段。详情见 Checker 参考。
校验规则
expect 字段按 checker 类型不同而变化。通用断言模型见 校验规则。