1
0
Files
DiAL/docs/user/configuration.md
lanyuanxiaoyao c2dcfab80c feat: 新增本机 CPU checker
- 新增 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
2026-05-26 22:34:57 +08:00

7.0 KiB
Raw Permalink Blame History

配置文件

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 历史数据保留时长,支持 mssmhd 单位 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 按大小滚动,支持 KBMBGB 单位 50MB
server.logging.file.rotation.frequency 按时间滚动:hourlydailyweekly daily
server.logging.file.rotation.maxFiles 保留的归档文件数量,不含活跃日志 14

日志等级支持:tracedebuginfowarnerrorfatal

控制台始终输出 pretty 格式,文件始终输出 JSONL 格式并支持滚动。rotation.sizerotation.frequency 任一条件触发即滚动。

内置默认值

字段 默认值 约束
interval 30s 最小 10s
timeout 10s 必须小于等于 interval

各 checker 专属默认值见 Checker 参考

variables

variables 是顶层动态键值表key 必须符合 [a-zA-Z_][a-zA-Z0-9_]*value 仅支持 string、number、boolean。serverprobestargets 中的字符串值可引用变量。

语法 说明
${key} 引用 variables 或环境变量
${key|default} variables 和环境变量都不存在时使用默认值
${key|} variables 和环境变量都不存在时使用空字符串
$${key} 转义输出字面量 ${key}

解析优先级为 variables -> process.env -> 默认值。三者均不存在时配置校验失败。字段值完整等于单个变量引用时会保留 number、boolean、string 类型;部分拼接时统一转为字符串。

变量替换作用于 serverprobestargets,不作用于 variables 段自身,且不会替换 targets[].idtargets[].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 目标类型:httpcmddbtcpudpdnsicmpllmwscpu
group 分组名称 default
interval 拨测间隔,最小 10s 30s
timeout 超时时间,必须小于等于 interval 10s

Checker 专属配置

每个 target 必须根据 type 配置对应的 checker 专属字段。详情见 Checker 参考

校验规则

expect 字段按 checker 类型不同而变化。通用断言模型见 校验规则