跳到内容
Lenso
简体中文
Esc
navigateopen⌘Jpreview
本页内容

可观测性

使用运行状况探测、结构化日志、OTLP 跟踪和 Runtime Console 运行时视图。

Lenso 有两个可观察层:

  • 操作员的流程级运行状况、日志和跟踪;
  • Runtime Console 视图由模块活动的平台/运行时表支持。

platform-admin 拥有 /admin/runtime/* 下的运行时可观测性 API。这是 平台问题,而不是产品模块,并读取平台/运行时表,例如 作为Outbox事件、Story 事件、运行时函数运行、Provider调用,以及 遥测跨度。

健康探测

基本路由器在 OpenAPI 合约之外公开探针:

curl -sS http://127.0.0.1:3000/livez | jq .
curl -sS http://127.0.0.1:3000/readyz | jq .

/livez 返回进程活跃度。 /readyz 运行注册的健康检查和 返回 healthyunhealthy

日志

使用环境变量配置日志:

变量 目的
RUST_LOG 跟踪过滤器,默认为 info
LOG_FORMAT compactjson
APP_ENV 部署环境名称
SERVICE_NAME 服务名称,默认为lenso

本地可读日志:

RUST_LOG=info LOG_FORMAT=compact lenso serve

生产风格的 JSON 日志:

RUST_LOG=info,tower_http=warn LOG_FORMAT=json cargo run --bin api

OTLP 追踪

仅当收集器运行时设置 OTEL_EXPORTER_OTLP_ENDPOINT

OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4317 cargo run --bin api

对于存储库的本地收集器:

just observability-up

如果本地冒烟由于收集器不可用而失败,请取消设置 端点:

unset OTEL_EXPORTER_OTLP_ENDPOINT

Runtime Console 视图

打开:

http://127.0.0.1:3000/console

使用Runtime Console检查:

  • 加载的模块和Manifest lints;
  • 运行时函数声明和运行;
  • 作为函数运行排队后安排的运行时工作;
  • Outbox和Story 事件;
  • Service Provider 调用;
  • 模块健康状况和安装状态;
  • 与遥测跨度相关的技术操作。

当模块操作失败时,从 API 错误或日志中复制 correlation_id 使用该 ID 行并搜索Runtime Console Story/技术操作视图。 Cron 触发的工作使用相同的证据路径:工作人员记录时间表 状态,在到期时将运行时函数运行排入队列,并且该函数运行出现在 与其他后台工作相同的 Runtime Console 视图。

从模块记录什么

使用结构化字段将日志连接到Runtime Console 证据:

use lenso::host::http::HttpRequestContext;

fn log_invoice_finalized(request: &HttpRequestContext, invoice_id: &str) {
    tracing::info!(
        module = "billing",
        invoice_id = %invoice_id,
        correlation_id = %request.correlation_id.0,
        "invoice finalized"
    );
}

在需要请求或的处理程序中使用 HttpRequestContext 作为 request 相关元数据。

优先选择稳定的标识符而不是完整的有效负载转储。不记录令牌、会话 机密、密码或原始客户 PII。

快速诊断

症状 首先检查
API 无法访问 /livez
API 启动但依赖项失败 /readyz
日志有噪音 RUST_LOG
JSON 日志丢失 设置 LOG_FORMAT=json
本地出现OTLP错误 取消设置 OTEL_EXPORTER_OTLP_ENDPOINT 或启动收集器
控制台运行时页面为空 运行API和worker,然后触发模块操作
Story存在但缺少操作 检查相关 ID 和遥测跨度属性

最后更新于 2026年8月1日

这个页面有帮助吗?