获取 OpenTelemetry Collector 日志

从 OpenTelemetry Collector 获取日志对于诊断问题至关重要。您可以通过配置日志级别并查看 Collector pod 日志,来排查数据收集和处理中的问题。

设置日志级别

您可以在 OpenTelemetryCollector 自定义资源中设置合适的日志级别:

config:
  service:
    telemetry:
      logs:
        level: debug

日志级别说明

Collector 支持以下日志级别:

  • debug:详细的调试信息,适用于深入排查问题
  • info:一般信息日志,默认级别
  • warn:警告信息
  • error:错误信息
TIP

在生产环境中,建议使用 info 级别。仅在需要详细诊断信息时使用 debug 级别,因为它会生成大量日志输出。

查看 Collector 日志

配置日志级别后,您可以使用以下命令查看 Collector 日志:

kubectl logs <collector-pod-name> -n <namespace>

如果 Collector 以 Deployment 模式运行,您可以查看所有副本的日志:

kubectl logs -l app.kubernetes.io/name=otel-collector -n opentelemetry-collector

常见启动警告

已弃用的组件类型别名

warn  builders/builders.go:40  "otlp" alias is deprecated; use "otlp_grpc" instead
  {"otelcol.component.id": "otlp/traces", "otelcol.component.kind": "exporter", "otelcol.signal": "traces"}

该组件在配置中使用了上游已重命名的类型名。旧名称仍然会解析为同一实现,因此 Collector 会正常运行且不会丢失数据,但该别名将在未来版本中移除。

在编辑配置之前,请先查看 otelcol.component.kind——它会告诉您需要修改哪一部分。在上面的示例中,警告针对的是一个 exporter,因此只需要为 exporters 部分使用新名称;同一配置中的 OTLP receiver 仍然使用 otlp 这个名称。请在 spec.config 下重命名该组件,并保留任何 /name 后缀:

exporters:
  otlp_grpc/traces: # was otlp/traces
    endpoint: jaeger-collector:4317

该警告会在启动时针对每个组件实例记录一次,因此在配置更新之前,每次重启时都会再次出现。完整的已重命名组件列表,请参见 Component type names