菜单
文档目录箭头 Grafana Alloy目录箭头 参考目录箭头 组件目录箭头 otelcol目录箭头 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 支持以下参数

名称类型描述默认值必需的
spans布尔值每跨度一行记录。falseno
roots布尔值为每个跟踪的根跨度记录一行。falseno
processes布尔值为每个进程记录一行。falseno
span_attributes字符串列表要记录的额外跨度属性。[]no
process_attributes字符串列表要记录的额外进程属性。[]no
labels字符串列表将作为标签记录的键的列表。[]no

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

警告

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

otelcol.connector.spanlogs 的定义中支持以下块

层次结构描述必需的
overridessoverridess日志体中键的重写。no
outputoutput配置接收到的遥测数据发送位置。yes

overridess 块

overridess 块配置了将记录在日志行体中的键的重写。

以下属性受支持

名称类型描述默认值必需的
logs_instance_tag字符串指示日志行是否为跨度、根或进程。tracesno
service_key字符串资源服务名的记录键。svcno
span_name_key字符串跨度的名称的记录键。spanno
status_key字符串跨度的状态的记录键。statusno
duration_key字符串跨度的持续时间的记录键。durno
trace_id_key字符串跨度的跟踪 ID 的记录键。tidno

output 块

输出块配置了一套组件,以便将结果遥测数据转发到。

支持以下参数

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

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

导出字段

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

名称类型描述
inputotelcol.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能够被以下组件消费:

注意

连接某些组件可能不合理,或者组件可能需要进一步的配置才能正确连接。有关更多详细信息,请参阅相关文档。