使用开放遥测和活动跟踪

数据 API 生成器(DAB)支持 OpenTelemetry 进行分布式跟踪和指标,使你能够跨 REST、GraphQL、数据库作和内部中间件监视和诊断应用程序的行为。

数据 API 生成器跟踪

DAB 为:

  • 传入 HTTP 请求 (REST 终结点)
  • GraphQL operations
  • Database queries (per entity)
  • 内部中间件步骤 (例如请求处理、错误跟踪)

每个活动包括详细的标记(元数据),例如:

  • http.methodhttp.urlhttp.querystringstatus.code
  • action.type (CRUD、GraphQL作)
  • user.roleuser-agent
  • data-source.typedata-source.name
  • api.type (REST 或 GraphQL)

错误和异常也随详细信息一起跟踪。

数据 API 生成器指标

DAB 发出 OpenTelemetry 指标,例如:

  • Total Requests: Counter, labeled by HTTP method, status, endpoint, and API type.
  • Errors: Counter, labeled by error type, HTTP method, status, endpoint, and API type.
  • Request Duration: Histogram (in milliseconds), labeled as above.
  • Active Requests: Up/down counter for concurrent requests.

指标使用 .NET Meter API 和 OpenTelemetry SDK。

Configuration

配置文件中添加分区open-telemetryruntime.telemetry

{
    "runtime": {
        "telemetry": {
            "open-telemetry": {
                "enabled": true,
                "endpoint": "http://otel-collector:4317",
                "service-name": "dab",
                "exporter-protocol": "grpc"
            }
        }
    }
}

CLI Options

Configure OpenTelemetry via CLI flags:

  • dab configure --otel-enabled true
  • dab configure --otel-endpoint "http://otel-collector:4317"
  • dab configure --otel-protocol "grpc"
  • dab configure --otel-service-name "dab"
  • dab configure --otel-headers

导出和可视化

遥测通过 .NET OpenTelemetry SDK 导出到配置的后端,例如 Azure Monitor 或 Jaeger。 确保后端在指定的 endpoint位置运行并可访问。

Implementation Notes

  • 跟踪和指标涵盖所有 REST、GraphQL 和 DB作
  • 中间件和错误处理程序还会发出遥测
  • 上下文通过请求传播