目标
生成一份可以安全分享给团队成员或支持人员的诊断摘要,而不是手动拼凑日志、环境变量和服务器命令输出——手动拼凑很容易不小心带上密钥。
适用场景
- 部署失败但错误提示不够明确。
- 生成访问地址、自定义域名或 TLS 状态互相矛盾。
- 健康检查和运行时日志看起来互相矛盾。
- 需要把问题交给团队成员或 Appaloft 支持人员。
前置条件
- 已经知道要排查的 Resource(以及可选的具体 Deployment)。
输入与默认值
| 参数 | 说明 | 默认值 |
|---|---|---|
--deployment | 附带某次具体部署的信息 | 不附带 |
--deployment-timeline | 附带该部署的事件时间线 | 关闭 |
--runtime-logs | 附带运行时日志 | 关闭 |
--tail | 日志尾部行数 | 全部 |
--summary | 只输出分区状态和稳定错误码,不输出完整 JSON | 关闭 |
CLI 操作步骤
# 生成完整的安全诊断摘要
appaloft resource diagnose res_web \
--deployment dep_123 \
--deployment-timeline \
--runtime-logs \
--tail 50
# 只看分区状态和错误码摘要,不要完整 JSON
appaloft resource diagnose res_web --summary如果访问 Appaloft 生成的 URL 或自定义域名时看到一个带 request id 的错误页,可以用这个 id 直接查询短期保留的安全证据:
appaloft resource access-failure req_abc123 --resource res_web --host web.example.com --path /当部署因为磁盘空间、Docker 镜像存储或构建缓存压力失败时,先运行只读容量诊断(不会执行任何清理):
appaloft server capacity inspect srv_primary预期输出与状态
诊断摘要包含:Project/Resource/Environment/Deployment 等稳定 id、最近失败阶段和错误码、Source/Runtime/Health/Network 的安全摘要、服务器和代理就绪摘要、访问地址/域名/证书状态、已屏蔽的密钥键名(只显示是否存在,不显示值)。
{
"resourceId": "res_web",
"deploymentId": "dep_123",
"failedPhase": "verify",
"errorCode": "health_check_failed",
"accessFailure": {
"requestId": "req_abc123",
"code": "resource_access_upstream_timeout",
"affected": { "hostname": "web.example.com", "path": "/" },
"nextAction": "check-health"
},
"secrets": [{ "key": "DATABASE_URL", "value": "***" }],
"nextAction": "Check health path and runtime logs."
}验证
分享前检查摘要中是否只包含 id、状态、错误码和安全上下文——不应该出现任何明文密钥、私钥或完整环境变量值。
回滚 / 恢复
绝对不要分享以下内容作为诊断证据:SSH 私钥、API token 或 Session token、数据库连接串、.env 文件全文、证书私钥、完整服务器 shell 历史、截图中的敏感信息、原始 Provider 响应。
如果诊断摘要提示磁盘或构建缓存压力,先只读检查容量(server capacity inspect),确认候选项后再决定是否运行 dry-run 清理:
# 只读检查服务器容量与运行时占用
appaloft server capacity inspect srv_primary
appaloft server runtime usage inspect srv_primary
# 预览清理候选项(不会真正删除任何内容)
appaloft server capacity prune srv_primary --before 2026-01-01T00:00:00.000Z
# 确认候选项符合预期后,才显式执行破坏性清理
appaloft server capacity prune srv_primary --before 2026-01-01T00:00:00.000Z --dry-run false容量清理只会保留在 Appaloft 状态目录、运行中的运行时、回滚候选、部署快照、审计/事件、日志和业务状态之外的候选项进行操作,不会执行大范围的 Docker 系统清理。
运行时监控采样与阈值
Appaloft 会在控制面内保留有界的运行时监控采样与汇总,用于 Web Monitor 与诊断闭环。阈值与告警门槛通过运行时配置控制;超出保留窗口的原始样本会被清理。
外部可观测性交接
控制面内的监控不替代完整的外部可观测性栈。需要长期指标、告警路由或跨服务关联时,应把 Prometheus / PromQL、APM tracing / trace,以及自定义指标(custom metrics)接到你自己的观测系统;Appaloft 只保留排障所需的有界样本。