跳到正文

日志转发 ​

日志转发会在服务写出运行日志时,把它们实时发送到你自己的日志工具:Datadog、Grafana Loki(包括 Grafana Cloud)或任何 HTTPS 地址。Pro 及以上套餐包含日志转发。

添加转发目标 ​

团队所有者和管理员打开 账号设置 → 日志转发(作用于侧边栏中选中的团队),点击 添加转发目标:

目标需要什么
DatadogAPI 密钥(Datadog:Organization Settings → API Keys)和你账号所在的站点,例如 datadoghq.com 或 datadoghq.eu。
LokiPush 地址,例如 https://logs-prod-012.grafana.net/loki/api/v1/push;不带路径的地址会自动加上 /loki/api/v1/push。Grafana Cloud 还需要用户(stack 的数字 ID)和一个有 logs:write 权限的令牌。多租户 Loki 的租户以 X-Scope-OrgID 发送。
HTTP任意 https:// 地址。Zenavo 会向它 POST 签名后的 JSON(见下文)。

选择 全部项目,包括以后新建的,或者只选部分项目。测试 会立即发送一行,并显示是否送达。每个团队最多 5 个转发目标。

地址、API 密钥和密码都属于机密:它们加密存储,控制台只显示目标的主机和路径。Zenavo 只向所有地址都是公网地址的主机发送,并且不跟随重定向。添加、修改、测试和删除转发目标都会记录在审计日志中。

发送哪些内容 ​

运行中的服务输出的每一行,变量值和其他地方一样被遮盖([REDACTED]),并标注团队、项目和服务。构建日志不会转发。

目标格式
Datadog发送到 https://http-intake.logs.<site>/api/v2/logs,ddsource 为 zenavo,service 为服务名称,hostname 为项目名称,并带有 project、project_id、service_id 和 team_id 标签。
Loki每个服务一个流,标签为 source="zenavo"、project、project_id、service、service_id 和 team_id。
HTTP下文的 JSON。

日志按批发送,每批最多 500 行,或者每 2 秒发送一次。失败的批次会在 1、5 和 15 秒后重试;被目标拒绝的请求(例如 API 密钥错误,即除 408 和 429 以外的任何 4xx 响应)不会重试。重试之后仍失败的批次会被丢弃。每个转发目标最多缓存 10,000 行;目标处理不过来时,较新的行会被丢弃。控制台会显示每个转发目标最近一次发送的结果或失败原因,以及丢弃了多少行。控制台中的日志(实时和已保存的)永远不受转发影响。

发送是至少一次(at-least-once):控制面重启时,最近几分钟的日志可能会被再次发送。

HTTP 请求内容 ​

json
{
  "logs": [
    {
      "time": "2026-10-22T08:00:00.123456789Z",
      "message": "GET /cart 200 12ms",
      "team_id": "team_…",
      "project_id": "proj_…",
      "project": "shop",
      "service_id": "svc-…",
      "service": "web"
    }
  ]
}

任何 2xx 响应都视为已送达。每个请求都带有 X-Zenavo-Timestamp(Unix 秒)和 X-Zenavo-Signature: v1=<hex>,后者是用转发目标的签名密钥对 <timestamp>.<原始请求体> 计算的 HMAC-SHA256,与通知 Webhook 的方案相同。密钥(whsec_…)在添加转发目标时只显示一次;更换密钥 会替换它,并只显示一次新密钥。

套餐 ​

日志转发需要 Pro、Team 或企业版套餐。团队换到不包含它的套餐后,转发会停止;转发目标仍然可以关闭、编辑或删除,升级后会重新开始转发。

与 Zeabur 无关联。