菜单
文档breadcrumb arrow Grafana Alloybreadcrumb arrow 参考breadcrumb arrow 组件breadcrumb arrow otelcolbreadcrumb arrow otelcol.connector.spanlogs
开源

otelcol.connector.spanlogs

otelcol.connector.spanlogs 接收来自其他 otelcol 组件的跟踪遥测数据,并为每个跨度、根或进程输出日志遥测数据。这允许您自动构建跟踪发现机制。

注意

otelcol.connector.spanlogs 是一个与 OpenTelemetry Collector 中的任何组件无关的自定义组件。它基于 Grafana Agent 静态的 跟踪 子系统的 automatic_logging 组件。

您可以通过为它们提供不同的标签来指定多个 otelcol.connector.spanlogs 组件。

用法

alloy
otelcol.connector.spanlogs "LABEL" {
  output {
    logs    = [...]
  }
}

参数

otelcol.connector.spanlogs 支持以下参数

名称类型描述默认值必需
spansbool每条跨度记录一行日志。false
rootsbool为每个跟踪的根跨度记录一行日志。false
processesbool为每个进程记录一行日志。false
span_attributeslist(string)要记录的额外跨度属性。[]
process_attributeslist(string)要记录的额外进程属性。[]
labelslist(string)将要作为标签记录的键的列表。[]

labels 中列出的值应该是跨度或进程属性的值。

警告

spans 设置为 true 可能会导致日志量过大。

以下块支持在 otelcol.connector.spanlogs 定义内部使用

层次结构描述必需
覆盖覆盖日志正文中键的覆盖。
输出输出配置接收到的遥测数据发送到何处。yes

覆盖块

overrides 块配置了将在日志行正文中记录的键的覆盖。

以下属性受支持

名称类型描述默认值必需
logs_instance_tag字符串指示日志行是针对跨度、根还是进程的。traces
service_key字符串资源服务名称的日志键。svc
span_name_key字符串跨度的名称的日志键。span
status_key字符串跨度的状态的日志键。status
duration_key字符串跨度的持续时间的日志键。dur
trace_id_key字符串跨度的跟踪 ID 的日志键。tid

输出块

output 块配置了一组组件以将结果遥测数据转发到。

以下参数受支持

名称类型描述默认值必需
logslist(otelcol.Consumer)要发送日志的消费者的列表。[]

您必须指定 output 块,但其所有参数都是可选的。默认情况下,遥测数据将被丢弃。根据需要配置 logs 参数,以将遥测数据发送到其他组件。

导出字段

以下字段被导出,并可由其他组件引用

名称类型描述
输入otelcol.Consumer其他组件可以使用它发送遥测数据。

input 接受任何遥测信号(指标、日志或跟踪)的 otelcol.Consumer 数据。

组件健康

otelcol.connector.spanlogs 只有在给定无效配置时才会报告为不健康。

调试信息

otelcol.connector.spanlogs 不公开任何特定于组件的调试信息。

示例

以下配置将来自跨度的日志发送到 Loki。

此外,otelcol.processor.attributes 被配置为“提示”,以便 otelcol.exporter.loki 将跨度的“attribute1”属性提升为 Loki 标签。

alloy
otelcol.receiver.otlp "default" {
  grpc {}

  output {
    traces = [otelcol.connector.spanlogs.default.input]
  }
}

otelcol.connector.spanlogs "default" {
  spans              = true
  roots              = true
  processes          = true
  labels             = ["attribute1", "res_attribute1"]
  span_attributes    = ["attribute1"]
  process_attributes = ["res_attribute1"]

  output {
    logs = [otelcol.processor.attributes.default.input]
  }
}

otelcol.processor.attributes "default" {
  action {
    key = "loki.attribute.labels"
    action = "insert"
    value = "attribute1"
  }

  output {
    logs = [otelcol.exporter.loki.default.input]
  }
}

otelcol.exporter.loki "default" {
  forward_to = [loki.write.local.receiver]
}

loki.write "local" {
  endpoint {
    url = "loki:3100"
  }
}

对于以下输入跟踪...

json
{
  "resourceSpans": [
    {
      "resource": {
        "attributes": [
          {
            "key": "service.name",
            "value": { "stringValue": "TestSvcName" }
          },
          {
            "key": "res_attribute1",
            "value": { "intValue": "78" }
          },
          {
            "key": "unused_res_attribute1",
            "value": { "stringValue": "str" }
          },
          {
            "key": "res_account_id",
            "value": { "intValue": "2245" }
          }
        ]
      },
      "scopeSpans": [
        {
          "spans": [
            {
              "trace_id": "7bba9f33312b3dbb8b2c2c62bb7abe2d",
              "span_id": "086e83747d0e381e",
              "name": "TestSpan",
              "attributes": [
                {
                  "key": "attribute1",
                  "value": { "intValue": "78" }
                },
                {
                  "key": "unused_attribute1",
                  "value": { "intValue": "78" }
                },
                {
                  "key": "account_id",
                  "value": { "intValue": "2245" }
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

…从 otelcol.connector.spanlogs 输出的日志将如下所示

json
{
  "resourceLogs": [
    {
      "scopeLogs": [
        {
          "log_records": [
            {
              "body": {
                "stringValue": "span=TestSpan dur=0ns attribute1=78 svc=TestSvcName res_attribute1=78 tid=7bba9f33312b3dbb8b2c2c62bb7abe2d"
              },
              "attributes": [
                {
                  "key": "traces",
                  "value": { "stringValue": "span" }
                },
                {
                  "key": "attribute1",
                  "value": { "intValue": "78" }
                },
                {
                  "key": "res_attribute1",
                  "value": { "intValue": "78" }
                }
              ]
            },
            {
              "body": {
                "stringValue": "span=TestSpan dur=0ns attribute1=78 svc=TestSvcName res_attribute1=78 tid=7bba9f33312b3dbb8b2c2c62bb7abe2d"
              },
              "attributes": [
                {
                  "key": "traces",
                  "value": { "stringValue": "root" }
                },
                {
                  "key": "attribute1",
                  "value": { "intValue": "78" }
                },
                {
                  "key": "res_attribute1",
                  "value": { "intValue": "78" }
                }
              ]
            },
            {
              "body": {
                "stringValue": "svc=TestSvcName res_attribute1=78 tid=7bba9f33312b3dbb8b2c2c62bb7abe2d"
              },
              "attributes": [
                {
                  "key": "traces",
                  "value": { "stringValue": "process" }
                },
                {
                  "key": "res_attribute1",
                  "value": { "intValue": "78" }
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

兼容组件

otelcol.connector.spanlogs 可以接受以下组件的参数

otelcol.connector.spanlogs 的导出可以被以下组件消费

注意

连接某些组件可能不合理,或者组件可能需要进一步配置才能正确连接。请参考链接文档以获取更多详细信息。