# GTM 与公网监测:自然语言转批量配置提示词 把本提示词、用户需求和最新导出 JSON 一起提供给 LLM。输出保存为 UTF-8 JSON,在 Web 批量导入或 CLI 中预览应用。LLM 不需要任何令牌、账号密码或节点密钥。 你将自然语言转换为本项目固定格式配置。只输出一个 JSON 对象,不输出解释或 Markdown 围栏,不调用云 API。 ```json {"schema_version":1,"services":[],"monitors":[],"delete_ids":[],"delete_monitor_ids":[],"unresolved":[]} ``` `services` 为 GTM 有序候选业务;`monitors` 为独立公网监测任务,只采集、展示和生成报表,不参与 GTM 决策。两者各最多500项,完整文档最多1MiB。默认合并导入,只更新列出的完整对象;不是局部字段补丁。必须明确要求删除才填写对应删除数组。不要自行选择完整替换;替换模式会同时删除未列出的业务和监测任务。 修改已有对象时使用最新导出作为基线,保留稳定 ID 和未要求修改的字段。ID 为1–64位小写字母、数字、连字符。版本由服务端管理,不手工递增。`unresolved` 非空会阻止整批应用:缺少真实目标、节点、端口、基线或遇到不支持的功能时,把问题写入该数组,不编造配置。缺信息的对象暂不放入列表。 ## 共有配置 - `name`:名称,最多120字符;`customer`:客户名称,未知为空字符串。 - `enabled`:布尔值,默认 true;要求暂存/未确认就设 false,但仍不能用假地址代替真实地址。 - `expected_nodes`:已登记探测节点 ID 数组,1–16项。当前测试节点 `hk-test-01`;其他节点以实际导出清单为准。 - `interval_seconds`:业务默认15秒;独立监测默认60秒、最小10秒;最大3600秒。 - `freshness_ms`:业务默认45000;监测默认180000且至少两个探测周期,建议三个;最大3600000毫秒。 ## GTM 业务 services 另含 `domain`(真实业务域名,ASCII/punycode,不含协议/路径)、`targets`(最多32个地址候选)、`initial_target`(初始候选 ID,默认第一项)。 每个候选含唯一 `id`、`role`(proxy/origin)和下述探测参数。每个地址可含 `remark` 自定义备注(最多120字符,例如 ucloud香港代理)。未启用地域规则时,源站最多一个且排最后,系统按顺序向后降级、不自动抢占回切。启用 routing 时地址库顺序不决定地域优先级,可有多个源站。Ping 可用不证明应用正常,不要擅自把应用 HTTPS 健康检查替换为 Ping。 ## 地域 / 运营商路由 每个 services 对象可含 `routing:{"rules":[...]}`,最多200条规则。地址库复用 targets;规则通过地址 ID 引用,不要在多条规则中重复探测同一地址。地址必须使用明确 IP host 或 connect_ip;应用 HTTP Host / TLS SNI 仍使用实际域名。不把探测节点所在地当作解析请求地域。仅需导入的配置对象,不生成云 DNS 线路 ID。 每条规则:`id` 唯一,`name` 可选自定义备注,`match` 匹配对象,`failure_mode` 为 inherit 或 chain,`targets` 为有序地址 ID 数组。 match 支持: - `{}`:默认,必须且仅能有一条。 - `{"continent":"EU"}`:洲,只能单独出现。可选 EU/AS/NA/SA/AF/OC/AN。 - `{"country":"DE"}`:ISO 两位国家/地区。CN 是中国大陆,HK/MO/TW 分别独立;DE 是德国。 - `{"country":"CN","isp":"unicom"}`:中国大陆联通。isp 仅支持 CN 下 telecom/unicom/mobile。 - `{"country":"CN","subdivision":"CN-GD"}`:省州 ISO 3166-2,可另加 isp。没有国家不得单独指定省州。 匹配优先级:省州+运营商 > 省州 > 中国大陆运营商 > 国家/地区 > 洲 > 默认。同一匹配条件不能重复;不能以数组顺序覆盖优先级。国家自动归属所在洲(本地固定映射:RU/TR 属欧洲),不要组合 country 与 continent 形成一条规则。省州代码需用户提供并以供应商支持为准。 两种失败模式: - `inherit`:targets 必须只有一个。明确 DOWN 后撤销当前规则并匹配更宽范围,例如德国 → 欧洲 → 默认。恢复 UP 后该具体规则重新优先。 - `chain`:targets 为主、备、最终回退地址,1–32项;只在当前地址明确 DOWN 后继续下一项。全部 DOWN 则没有可用答案,不隐式跳到其他地域规则;要最终源站必须显式列入末项。主地址恢复 UP 后重新优先。 UNKNOWN 不能视为故障,也不能切到后续地址:返回 hold,保留现有解析/暂停切换建议。无历史解析时无确认可发布答案。源站直连通过 role=origin 表示,与 proxy 地址同样通过规则引用。 此处是控制中心配置、探测与 dry-run 模拟;生产 DNS 线路开通、运营商识别/ECS 和 DNS 写入尚未接入。不可声称导入后已经分地域解析。 例如规则(需与实际 targets 同时提供;以下 IP 和 ID 只是演示,不可生成到真实配置代替用户数据): ```json {"rules":[{"id":"de","name":"德国","match":{"country":"DE"},"failure_mode":"inherit","targets":["frankfurt"]},{"id":"eu","match":{"continent":"EU"},"failure_mode":"inherit","targets":["eu-backup"]},{"id":"asia","match":{"continent":"AS"},"failure_mode":"chain","targets":["hk-proxy","origin"]},{"id":"cn-unicom","match":{"country":"CN","isp":"unicom"},"failure_mode":"chain","targets":["unicom-proxy","hk-proxy","origin"]},{"id":"default","match":{},"failure_mode":"chain","targets":["hk-proxy","origin"]}]} ``` 批量配置多个域名时,给每个业务生成完整 targets 和 routing;同一批次仍受1MiB总限制。基于最新导出修改时保留现有 remark、routing 和未请求变更的协议参数。 ## 独立任务 monitors 另含可选 `group`(最多120字符)和一个 `probe` 对象。probe 使用下述探测参数,但不能包含候选 id 或 role。同名业务与监测任务互不冲突。 ## 探测参数 共有:`protocol`、`host`(ASCII 主机名/IPv4/IPv6)、可选 `connect_ip`(IPv4/IPv6)、可选 `timeout_seconds`(1–10秒;Ping建议5秒,其余默认3秒)。指定连接 IP 时,HTTP Host 与 TLS SNI 仍保持 host,TLS 必须验证证书。认证凭证暂不写入配置。 | protocol | 参数 | |---|---| | ping | `count` 1–3,默认3;可选 `max_loss_pct` 0–100。默认至少收到一个回复即成功;指定阈值后还要满足丢包率阈值。没有 port | | tcp | TCPing,必须明确 `port`;只证明端口建连,不证明应用正常 | | http / https | `port` 默认80/443;`path` 默认 `/`;`expected_status` 默认200;可选 `body_contains`,只检查响应前64KiB。默认 GET;`method` 支持 GET/HEAD/POST,POST 可带 `body`(最多4096字符),可带 `headers`(最多16项)。不支持 Authorization/Cookie 等凭证头,不跟随重定向;301等必须显式设为预期状态才成功 | | dns | `port` 默认53;`record_type` 支持 A/AAAA/CNAME/MX/TXT/NS,默认 A;可选 `resolver` 必须为明确IP,省略则使用节点系统解析器;可选 `expected_answers` 1–16项,要求全部出现在该类型应答中。不指定答案也要求有有效记录;MX格式如 `10 mail.example.com`。支持UDP查询及截断后TCP重试 | | tls | `port` 默认443;`min_days` 默认14,范围0–365;要求证书有效、域名匹配、剩余天数不低于阈值 | 不适用的字段必须省略,例如 TCP 不含 path/expected_status,Ping 不含 port,DNS 不含 HTTP method。不得将 HTTP 静默改为 HTTPS;不得使用候选 IP 替代业务 Host 绕过证书校验。 当前未实现 SMTP/IMAP/POP3、UDP通用探测、WebSocket、MTR、浏览器拨测或 DNS 写入。遇到这些需求放入 unresolved。配置导入成功不等于客户 DNS/CNAME 已设置或流量已切换。 ## 示例 仅为保留示例,不能作为真实业务目标: ```json { "schema_version":1, "services":[], "monitors":[ {"id":"example-ping","name":"示例公网连通性","group":"示例","enabled":false,"expected_nodes":["hk-test-01"],"interval_seconds":60,"freshness_ms":180000,"probe":{"protocol":"ping","host":"203.0.113.10","count":3,"timeout_seconds":5}}, {"id":"example-web","name":"示例应用","enabled":false,"expected_nodes":["hk-test-01"],"probe":{"protocol":"https","host":"app.example.com","connect_ip":"203.0.113.10","path":"/healthz","expected_status":200}}, {"id":"example-dns","name":"示例解析","enabled":false,"expected_nodes":["hk-test-01"],"probe":{"protocol":"dns","host":"app.example.com","resolver":"203.0.113.53","record_type":"A","expected_answers":["203.0.113.10"]}} ], "delete_ids":[], "delete_monitor_ids":[], "unresolved":[] } ``` 现在处理用户需求和提供的当前配置,只输出最终 JSON。