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

otelcol.processor.resourcedetection

otelcol.processor.resourcedetection 从主机以符合 OpenTelemetry 资源语义规范 的格式检测资源信息,并将此信息附加或覆盖遥测数据中的资源值。

注意

otelcol.processor.resourcedetection 是上游 OpenTelemetry Collector Contrib resourcedetection 处理器的包装。如有必要,错误报告或功能请求将被重定向到上游仓库。

您可以通过提供不同的标签来指定多个 otelcol.processor.resourcedetection 组件。

用法

alloy
otelcol.processor.resourcedetection "LABEL" {
  output {
    logs    = [...]
    metrics = [...]
    traces  = [...]
  }
}

参数

otelcol.processor.resourcedetection 支持以下参数:

名称类型描述默认值必选
detectorslist(string)一个按名称命名的检测器的有序列表,用于检测资源信息。["env"]no
overridebool配置是否应该覆盖或保留现有的资源属性。trueno
timeoutduration所有指定检测器必须完成的超时。"5s"no

detectors 可以包含以下值

  • env
  • ec2
  • ecs
  • eks
  • elasticbeanstalk
  • lambda
  • azure
  • aks
  • consul
  • docker
  • gcp
  • heroku
  • system
  • openshift
  • kubernetes_node

env 是唯一的不是通过块配置的检测器。该 env 检测器从 OTEL_RESOURCE_ATTRIBUTES 环境变量读取资源信息。该变量必须采用以下格式 <key1>=<value1>,<key2>=<value2>,...,其详细情况目前在 OpenTelemetry 规范中待确认。

如果需要除 env 以外的检测器,您可以使用相关块来自定义它。例如,您可以使用 ec2 块来自定义 ec2 检测器。如果您省略了 ec2 块,则使用 ec2 块文档中指定的默认值。

如果多个检测器插入相同的属性名称,则第一个插入的检测器获胜。例如,如果您有 detectors = ["eks", "ec2"],则 cloud.platform 将为 aws_eks 而不是 ec2

对于 AWS,以下顺序是推荐的

  1. lambda
  2. elasticbeanstalk
  3. eks
  4. ecs
  5. ec2

以下块可以在 otelcol.processor.resourcedetection 的定义中使用:

层次结构描述必选
outputoutput配置要将接收到的遥测数据发送到何处。yes
ec2ec2no
ecsecsno
ekseksno
elasticbeanstalkelasticbeanstalkno
lambdalambdano
azureazureno
aksaksno
consulconsulno
dockerdockerno
gcpgcpno
herokuherokuno
systemsystemno
openshiftopenshiftno
kubernetes_nodekubernetes_nodeno
debug_metricsdebug_metrics配置该组件生成的指标以监控其状态。no

output

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

以下参数是被支持的:

名称类型描述默认值必选
日志otelcol.Consumer 列表发送日志的消费者列表。[]no
度量指标otelcol.Consumer 列表发送度量指标的消费者列表。[]no
跟踪信息otelcol.Consumer 列表发送跟踪信息的消费者列表。[]no

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

debug_metrics 块

debug_metrics 块配置生成以监控该组件状态的度量指标。

以下参数是被支持的:

名称类型描述默认值必选
disable_high_cardinality_metrics布尔型是否禁用某些高基数度量指标。trueno
level字符串控制包装收集器产生的度量指标的详细程度。"详细"no

disable_high_cardinality_metrics 是 Grafana Alloy 与 OpenTelemetry Collector 中的 telemetry.disableHighCardinalityMetrics 功能门的功能等价物。它移除可能引起高基数度量指标的属性。例如,关于 HTTP 和 gRPC 连接的度量指标中,带有 IP 地址和端口号的属性被移除。

注意

如果配置了 disable_high_cardinality_metrics,则它仅适用于 otelcol.exporter.*otelcol.receiver.* 组件。

level 是 OpenTelemetry Collector 中的 telemetry.metrics.level 功能门在 Alloy 中的等价物。可能的值是 "none""basic""normal""detailed"

ec2

ec2 块使用 EC2 实例元数据 APIAWS SDK for GoEC2 实例元数据 API 读取资源信息。

ec2 块支持以下属性

属性类型描述默认值必选
tagslist(string)一个正则表达式列表,用于匹配 EC2 实例的标签键。[]no

如果您在 EC2 实例上使用代理服务器,请确保如 AWS CLI 用户指南 中所述免除对实例元数据的请求。否则可能会导致代理或缺少实例数据。

如果实例是 AWS ParallelCluster 的一部分,并且检测器无法连接到元数据服务器,请检查 iptable 并确保链 PARALLELCLUSTER_IMDS 包含允许 Alloy 用户访问 169.254.169.254/32 的规则。

tags 可以用来收集 Alloy 运行的 EC2 实例的标签。要获取 EC2 标签,分配给 EC2 实例的 IAM 角色必须有一个包含 ec2:DescribeTags 权限的策略。

ec2 块支持以下块

描述必选
resource_attributes配置要添加的资源属性。no
ec2 > resource_attributes

resource_attributes 块支持以下块

描述必选
cloud.account.id切换 cloud.account.id 资源属性。
默认设置为 enabledtrue
no
cloud.availability_zone切换 cloud.availability_zone 资源属性。
默认设置为 enabledtrue
no
cloud.platform切换 cloud.platform 资源属性。
默认设置为 enabledtrue
no
cloud.provider切换 cloud.provider 资源属性。
默认设置为 enabledtrue
no
cloud.region切换 cloud.region 资源属性。
默认设置为 enabledtrue
no
host.id切换 host.id 资源属性。
默认设置为 enabledtrue
no
host.image.id切换 host.image.id 资源属性。
默认设置为 enabledtrue
no
host.name切换 host.name 资源属性。
默认设置为 enabledtrue
no
host.type切换 host.type 资源属性。
默认设置为 enabledtrue
no

ecs

ecs 块查询 Task Metadata Endpoint (TMDE) 以记录当前 ECS 任务的有关信息。仅支持 TMDE V4 和 V3。

ecs 块支持以下块

描述必选
resource_attributes配置要添加的资源属性。no

ecs > resource_attributes

resource_attributes 块支持以下块

描述必选
aws.ecs.cluster.arn切换 aws.ecs.cluster.arn 资源属性。
默认设置为 enabledtrue
no
aws.ecs.launchtype切换 aws.ecs.launchtype 资源属性。
默认设置为 enabledtrue
no
aws.ecs.task.arn切换 aws.ecs.task.arn 资源属性。
默认设置为 enabledtrue
no
aws.ecs.task.family切换 aws.ecs.task.family 资源属性。
默认设置为 enabledtrue
no
aws.ecs.task.id切换 aws.ecs.task.id 资源属性。
默认设置为 enabledtrue
no
aws.ecs.task.revision切换 aws.ecs.task.revision 资源属性。
默认设置为 enabledtrue
no
aws.log.group.arns切换 aws.log.group.arns 资源属性。
默认设置为 enabledtrue
no
aws.log.group.names切换 aws.log.group.names 资源属性。
默认设置为 enabledtrue
no
aws.log.stream.arns切换 aws.log.stream.arns 资源属性。
默认设置为 enabledtrue
no
aws.log.stream.names切换 aws.log.stream.names 资源属性。
默认设置为 enabledtrue
no
cloud.account.id切换 cloud.account.id 资源属性。
默认设置为 enabledtrue
no
cloud.availability_zone切换 cloud.availability_zone 资源属性。
默认设置为 enabledtrue
no
cloud.platform切换 cloud.platform 资源属性。
默认设置为 enabledtrue
no
cloud.provider切换 cloud.provider 资源属性。
默认设置为 enabledtrue
no
cloud.region切换 cloud.region 资源属性。
默认设置为 enabledtrue
no

eks

eks 块为 Amazon EKS 添加资源属性。

eks 块支持以下块

描述必选
resource_attributes配置要添加的资源属性。no

eks > resource_attributes

resource_attributes 块支持以下块

描述必选
cloud.platform切换 cloud.platform 资源属性。
默认设置为 enabledtrue
no
cloud.provider切换 cloud.provider 资源属性。
默认设置为 enabledtrue
no
k8s.cluster.name切换 k8s.cluster.name 资源属性。
默认情况下将 enabled 设置为 false
no

示例值

  • cloud.provider: "aws"
  • cloud.platform: "aws_eks"

elasticbeanstalk

elasticbeanstalk 块读取所有 Beanstalk 实例上可用的 AWS X-Ray 配置文件,这些实例具有 X-Ray 启用

elasticbeanstalk 块支持以下块

描述必选
resource_attributes配置要添加的资源属性。no

elasticbeanstalk > resource_attributes

resource_attributes 块支持以下块

描述必选
cloud.platform切换 cloud.platform 资源属性。
默认设置为 enabledtrue
no
cloud.provider切换 cloud.provider 资源属性。
默认设置为 enabledtrue
no
deployment.envir切换 deployment.envir 资源属性。
默认设置为 enabledtrue
no
service.instance切换 service.instance 资源属性。
默认设置为 enabledtrue
no
service.version切换 service.version 资源属性。
默认设置为 enabledtrue
no

示例值

  • cloud.provider: "aws"
  • cloud.platform: "aws_elastic_beanstalk"

lambda

lambda 块使用 AWS Lambda 的运行时环境变量来检索各种资源属性。

lambda 块支持以下块

描述必选
resource_attributes配置要添加的资源属性。no

lambda > resource_attributes

resource_attributes 块支持以下块

描述必选
aws.log.group.names切换 aws.log.group.names 资源属性。
默认设置为 enabledtrue
no
aws.log.stream.names切换 aws.log.stream.names 资源属性。
默认设置为 enabledtrue
no
cloud.platform切换 cloud.platform 资源属性。
默认设置为 enabledtrue
no
cloud.provider切换 cloud.provider 资源属性。
默认设置为 enabledtrue
no
cloud.region切换 cloud.region 资源属性。
默认设置为 enabledtrue
no
faas.instance切换 faas.instance 资源属性。
默认设置为 enabledtrue
no
faas.max_memory切换 faas.max_memory 资源属性。
默认设置为 enabledtrue
no
faas.name切换 faas.name 资源属性。
默认设置为 enabledtrue
no
faas.version切换 faas.version 资源属性。
默认设置为 enabledtrue
no

云语义约定:

  • cloud.provider: "aws"
  • cloud.platform: "aws_lambda"
  • cloud.region: $AWS_REGION

服务作为服务的语义约定AWS Lambda 语义约定

  • faas.name: $AWS_LAMBDA_FUNCTION_NAME
  • faas.version: $AWS_LAMBDA_FUNCTION_VERSION
  • faas.instance: $AWS_LAMBDA_LOG_STREAM_NAME
  • faas.max_memory: $AWS_LAMBDA_FUNCTION_MEMORY_SIZE

AWS 日志语义约定:

  • aws.log.group.names: $AWS_LAMBDA_LOG_GROUP_NAME
  • aws.log.stream.names: $AWS_LAMBDA_LOG_STREAM_NAME

azure

azure 块查询 Azure 实例元数据服务 来检索各种资源属性。

azure 块支持以下块

描述必选
resource_attributes配置要添加的资源属性。no

azure 块支持以下属性

属性类型描述默认值必选
tagslist(string)可以指定一个正则表达式列表,以匹配标签键以将其作为资源属性添加。[]no

azure > resource_attributes

resource_attributes 块支持以下块

描述必选
azure.resourcegroup.name切换 azure.resourcegroup.name 资源属性。
默认设置为 enabledtrue
no
azure.vm.name切换 azure.vm.name 资源属性。
默认设置为 enabledtrue
no
azure.vm.scaleset.name切换 azure.vm.scaleset.name 资源属性。
默认设置为 enabledtrue
no
azure.vm.size切换 azure.vm.size 资源属性。
默认设置为 enabledtrue
no
cloud.account.id切换 cloud.account.id 资源属性。
默认设置为 enabledtrue
no
cloud.platform切换 cloud.platform 资源属性。
默认设置为 enabledtrue
no
cloud.provider切换 cloud.provider 资源属性。
默认设置为 enabledtrue
no
cloud.region切换 cloud.region 资源属性。
默认设置为 enabledtrue
no
host.id切换 host.id 资源属性。
默认设置为 enabledtrue
no
host.name切换 host.name 资源属性。
默认设置为 enabledtrue
no

示例值

  • cloud.provider: "azure"
  • cloud.platform: "azure_vm"

aks

aks 块添加与 Azure AKS 相关的资源属性。

aks 块支持以下块

描述必选
resource_attributes配置要添加的资源属性。no

aks > resource_attributes

resource_attributes 块支持以下块

描述必选
cloud.platform切换 cloud.platform 资源属性。
默认设置为 enabledtrue
no
cloud.provider切换 cloud.provider 资源属性。
默认设置为 enabledtrue
no
k8s.cluster.name切换 k8s.cluster.name 资源属性。
默认情况下将 enabled 设置为 false
no

示例值

  • cloud.provider: "azure"
  • cloud.platform: "azure_vm"

Azure AKS 群名称是从 Azure 实例元数据服务(IMDS)的基础资源组字段中衍生的。此字段包含资源组和群名的资源组,由下划线分隔。例如: MC_<资源组>_<群名>_<位置>

示例

  • 资源组:my-resource-group
  • 集群名称:my-cluster
  • 位置:eastus
  • 生成名称:MC_my-resource-group_my-cluster_eastus

如果集群名称不含下划线且未使用自定义基础设施资源组名称,则会检测到集群名称。

如果无法进行精确解析,则返回基础设施资源组值。此值可以用来唯一标识集群,因为Azure不允许用户创建具有相同基础设施资源组名称的多个集群。

consul

consul块查询Consul代理并读取其配置端点以检索资源属性的值。

consul块支持以下属性:

属性类型描述默认值必选
address字符串Consul服务器的地址""no
datacenter字符串要使用的数据中心。如果没有提供,将使用默认的代理数据中心。""no
tokensecret一个请求级别的ACL令牌,它覆盖Consul代理的默认(空)令牌。""no
namespace字符串要随请求发送的命名空间名称。""no
metalist(string)允许列表,使用作为资源属性的Consul元数据键。[]no

token仅在Consul的ACL系统启用时才需要。

consul块支持以下块:

描述必选
resource_attributes配置要添加的资源属性。no

consul > resource_attributes

resource_attributes 块支持以下块

描述必选
cloud.region切换 cloud.region 资源属性。
默认设置为 enabledtrue
no
host.id切换 host.id 资源属性。
默认设置为 enabledtrue
no
host.name切换 host.name 资源属性。
默认设置为 enabledtrue
no

docker

docker块查询Docker守护进程以从主机机器检索各种资源属性。

您需要挂载Docker套接字(Linux上的/var/run/docker.sock)以连接Docker守护进程。Docker检测在MacOS上不起作用。

docker块支持以下块:

描述必选
resource_attributes配置要添加的资源属性。no

docker > resource_attributes

resource_attributes 块支持以下块

描述必选
host.name切换 host.name 资源属性。
默认设置为 enabledtrue
no
os.type切换os.type资源属性。
默认设置为 enabledtrue
no

gcp

gcp块使用Google Cloud Client Libraries for Go检测资源属性,该库从GCP元数据服务器读取资源信息。检测器还使用环境变量来识别应用程序正在哪个GCP平台上运行,并为该平台分配适当的资源属性。

无论Alloy运行在哪个GCP平台上,都应使用gcp检测器。

gcp块支持以下块:

描述必选
resource_attributes配置要添加的资源属性。no

gcp > resource_attributes

resource_attributes 块支持以下块

描述必选
cloud.account.id切换 cloud.account.id 资源属性。
默认设置为 enabledtrue
no
cloud.availability_zone切换 cloud.availability_zone 资源属性。
默认设置为 enabledtrue
no
cloud.platform切换 cloud.platform 资源属性。
默认设置为 enabledtrue
no
cloud.provider切换 cloud.provider 资源属性。
默认设置为 enabledtrue
no
cloud.region切换 cloud.region 资源属性。
默认设置为 enabledtrue
no
faas.id切换faas.id资源属性。
默认设置为 enabledtrue
no
faas.instance切换 faas.instance 资源属性。
默认设置为 enabledtrue
no
faas.name切换 faas.name 资源属性。
默认设置为 enabledtrue
no
faas.version切换 faas.version 资源属性。
默认设置为 enabledtrue
no
gcp.cloud_run.job.execution切换gcp.cloud_run.job.execution资源属性。
默认设置为 enabledtrue
no
gcp.cloud_run.job.task_index切换gcp.cloud_run.job.task_index资源属性。
默认设置为 enabledtrue
no
gcp.gce.instance.hostname切换gcp.gce.instance.hostname资源属性。
默认情况下将 enabled 设置为 false
no
gcp.gce.instance.name切换gcp.gce.instance.name资源属性。
默认情况下将 enabled 设置为 false
no
host.id切换 host.id 资源属性。
默认设置为 enabledtrue
no
host.name切换 host.name 资源属性。
默认设置为 enabledtrue
no
host.type切换 host.type 资源属性。
默认设置为 enabledtrue
no
k8s.cluster.name切换 k8s.cluster.name 资源属性。
默认设置为 enabledtrue
no

Google Compute Engine (GCE)元数据

  • cloud.provider: "gcp"
  • cloud.platform: "gcp_compute_engine"
  • cloud.account.id: 项目ID
  • cloud.region: 例如 "us-central1"
  • cloud.availability_zone: 例如 "us-central1-c"
  • host.id: 实例ID
  • host.name: 实例名称
  • host.type: 机器类型
  • (可选)gcp.gce.instance.hostname
  • (可选)gcp.gce.instance.name

Google Kubernetes Engine (GKE)元数据

  • cloud.provider: "gcp"
  • cloud.platform: "gcp_kubernetes_engine"
  • cloud.account.id: 项目ID
  • cloud.region: 仅针对区域GKE集群;例如 "us-central1"
  • cloud.availability_zone: 仅针对区域GKE集群;例如 "us-central1-c"
  • k8s.cluster.name
  • host.id: 实例ID
  • host.name: 实例名称;仅当禁用了工作负载身份时

已知问题:当启用GKE工作负载身份时,会出现一个问题。GCE元数据端点将不可用,并且GKE资源检测器无法确定host.name。如果发生这种情况,您可以从以下资源之一设置host.name

  • 通过使用env检测器从向下API获取node.name
  • 从Kubernetes API(使用k8s.io/client-go)获取Kubernetes节点名称。

Google Cloud Run服务元数据

  • cloud.provider: "gcp"
  • cloud.platform: "gcp_cloud_run"
  • cloud.account.id: 项目ID
  • cloud.region: 例如 "us-central1"
  • faas.id: 实例ID
  • faas.name: 服务名称
  • faas.version: 服务版本

Cloud Run作业元数据

  • cloud.provider: "gcp"
  • cloud.platform: "gcp_cloud_run"
  • cloud.account.id: 项目ID
  • cloud.region: 例如 "us-central1"
  • faas.id: 实例ID
  • faas.name: 服务名称
  • gcp.cloud_run.job.execution: 例如"my-service-ajg89"
  • gcp.cloud_run.job.task_index: 例如"0"

Google Cloud Functions元数据

  • cloud.provider: "gcp"
  • cloud.platform: "gcp_cloud_functions"
  • cloud.account.id: 项目ID
  • cloud.region: 例如 "us-central1"
  • faas.id: 实例ID
  • faas.name: 函数名称
  • faas.version: 函数版本

Google App Engine元数据

  • cloud.provider: "gcp"
  • cloud.platform: "gcp_app_engine"
  • cloud.account.id: 项目ID
  • cloud.region: 例如 "us-central1"
  • cloud.availability_zone: 例如 "us-central1-c"
  • faas.id: 实例ID
  • faas.name: 服务名称
  • faas.version: 服务版本

heroku

使用heroku块添加从Heroku dyno元数据派生的资源属性。

heroku块支持以下块

描述必选
resource_attributes配置要添加的资源属性。no

heroku > resource_attributes

resource_attributes 块支持以下块

描述必选
cloud.provider切换 cloud.provider 资源属性。
默认设置为 enabledtrue
no
heroku.app.id切换heroku.app.id资源属性。
默认设置为 enabledtrue
no
heroku.dyno.id切换heroku.dyno.id资源属性。
默认设置为 enabledtrue
no
heroku.release.commit切换heroku.release.commit资源属性。
默认设置为 enabledtrue
no
heroku.release.creation_timestamp切换heroku.release.creation_timestamp资源属性。
默认设置为 enabledtrue
no
service.instance.id切换service.instance.id资源属性。
默认设置为 enabledtrue
no
service.name切换service.name资源属性。
默认设置为 enabledtrue
no
service.version切换 service.version 资源属性。
默认设置为 enabledtrue
no

Heroku dyno元数据处于活动状态时,Heroku应用程序通过环境变量发布信息。我们将这些环境变量映射到如下资源属性

dyno元数据环境变量资源属性
HEROKU_APP_IDheroku.app.id
HEROKU_APP_NAMEservice.name
HEROKU_DYNO_IDservice.instance.id
HEROKU_RELEASE_CREATED_ATheroku.release.creation_timestamp
HEROKU_RELEASE_VERSIONservice.version
HEROKU_SLUG_COMMITheroku.release.commit

有关更多信息,请参阅Heroku云提供商文档,其中包含OpenTelemetry规范语义约定

system

使用system块查询主机以获取各种资源属性。

注意

如果Alloy作为Docker容器运行,请使用Docker检测器。

system块支持以下属性

属性类型描述默认值必选
hostname_sourceslist(string)获取主机名的来源优先级列表。["dns", "os"]no

hostname_sources的有效选项

  • "dns": 使用多个来源来获取完全限定域名。首先,在本地机器的hosts文件中查找主机名。如果失败,则查找CNAME。最后,如果失败,则进行反向DNS查询。注意:此主机名来源可能在Windows上产生不可靠的结果。为了产生FQDN,Windows主机可能更适合使用以下提到的“lookup”主机名源。
  • "os": 由本地机器的内核提供主机名。
  • "cname": 由Go标准库中的net.LookupCNAME提供的规范名称。注意:此主机名来源可能在Windows上产生不可靠的结果。
  • "lookup": 对当前主机的IP地址进行反向DNS查询。

如果从来源获取主机名时发生错误,则将从hostname_sources列表中的下一个源考虑。

system块支持以下块

描述必选
resource_attributes配置要添加的资源属性。no

system > resource_attributes

resource_attributes 块支持以下块

描述必选
host.arch切换host.arch资源属性。
默认情况下将 enabled 设置为 false
no
host.cpu.cache.l2.size切换host.cpu.cache.l2.size资源属性。
默认情况下将 enabled 设置为 false
no
host.cpu.family切换host.cpu.family资源属性。
默认情况下将 enabled 设置为 false
no
host.cpu.model.id切换host.cpu.model.id资源属性。
默认情况下将 enabled 设置为 false
no
host.cpu.model.name切换host.cpu.model.name资源属性。
默认情况下将 enabled 设置为 false
no
host.cpu.stepping切换host.cpu.stepping资源属性。
默认情况下将 enabled 设置为 false
no
host.cpu.vendor.id切换 host.cpu.vendor.id 资源属性。
默认情况下将 enabled 设置为 false
no
host.id切换 host.id 资源属性。
默认情况下将 enabled 设置为 false
no
host.ip切换 host.ip 资源属性。
默认情况下将 enabled 设置为 false
no
host.mac切换 host.mac 资源属性。
默认情况下将 enabled 设置为 false
no
host.name切换 host.name 资源属性。
默认设置为 enabledtrue
no
os.description切换 os.description 资源属性。
默认情况下将 enabled 设置为 false
no
os.type切换os.type资源属性。
默认设置为 enabledtrue
no

openshift

《code>openshift 块通过查询 OpenShift 和 Kubernetes API 来检索各种资源属性。

《code>openshift 块支持以下属性

属性类型描述默认值必选
address字符串OpenShift API 服务器地址。见下文no
token字符串用于在 OpenShift API 服务器上识别的令牌。""no

需要“get”,“watch”和“list”权限

yaml
kind: ClusterRole
metadata:
  name: alloy
rules:
- apiGroups: ["config.openshift.io"]
  resources: ["infrastructures", "infrastructures/status"]
  verbs: ["get", "watch", "list"]

默认情况下,API 地址从环境变量 KUBERNETES_SERVICE_HOSTKUBERNETES_SERVICE_PORT 确定,服务令牌从 /var/run/secrets/kubernetes.io/serviceaccount/token 读取。如果没有明确禁用 TLS 且未配置 ca_file,则使用 /var/run/secrets/kubernetes.io/serviceaccount/ca.crt。如果配置中设置了这些值,则跳过 API 地址,ca_file 和服务令牌的确定。

《code>openshift 块支持以下块

描述必选
resource_attributes配置要添加的资源属性。no
tls与 OpenShift API 连接的 TLS 设置。yes

openshift > tls

《code>tls 块配置用于连接到 gRPC 服务器的 TLS 设置。

以下参数是被支持的:

名称类型描述默认值必选
ca_file字符串CA 文件路径。no
ca_pem字符串用于验证服务器的 CA PEM 编码文本。no
cert_file字符串TLS 证书路径。no
cert_pem字符串用于客户端身份验证的证书 PEM 编码文本。no
insecure_skip_verify布尔型忽略不安全的服务器 TLS 证书。no
include_system_ca_certs_pool布尔型是否要在证书颁发机构旁边加载系统证书颁发机构池。falseno
insecure布尔型连接到配置的服务器时禁用 TLS。no
key_file字符串TLS 证书密钥路径。no
key_pemsecret用于客户端身份验证的密钥 PEM 编码文本。no
max_version字符串连接可接受的最大 TLS 版本。"TLS 1.3"no
min_version字符串连接可接受的最小 TLS 版本。"TLS 1.2"no
cipher_suiteslist(string)TLS 传输可以使用的 TLS 密码套件列表。[]no
reload_intervalduration证书重新加载的时间间隔。"0s"no
server_name字符串当设置时,验证服务器证书的域名。no

如果服务器不支持 TLS,您必须将 insecure 参数设置为 true

要禁用连接到服务器的 TLS,请将 insecure 参数设置为 true

如果将 reload_interval 设置为 "0s",则证书不会重新加载。

以下参数对是互斥的,不能同时设置

  • ca_pemca_file
  • cert_pemcert_file
  • key_pemkey_file

如果 cipher_suites 留为空,则使用安全默认列表。有关受支持的密码套件的列表,请参阅Go TLS 文档

openshift > resource_attributes

resource_attributes 块支持以下块

描述必选
cloud.platform切换 cloud.platform 资源属性。
默认设置为 enabledtrue
no
cloud.provider切换 cloud.provider 资源属性。
默认设置为 enabledtrue
no
cloud.region切换 cloud.region 资源属性。
默认设置为 enabledtrue
no
k8s.cluster.name切换 k8s.cluster.name 资源属性。
默认设置为 enabledtrue
no

kubernetes_node

《code>kubernetes_node 块通过查询 Kubernetes API 服务器来检索各种节点资源属性。

《code>kubernetes_node 块支持以下属性

属性类型描述默认值必选
auth_type字符串配置如何对 K8s API 服务器进行身份验证。"none"no
context字符串auth_type 设置为 "kubeConfig" 时,覆盖当前上下文。""no
node_from_env_var字符串用于从中检索节点名称的环境变量名称。"K8S_NODE_NAME"no

需要“get”和“list”权限

yaml
kind: ClusterRole
metadata:
  name: alloy
rules:
  - apiGroups: [""]
    resources: ["nodes"]
    verbs: ["get", "list"]

auth_type 可以设置为以下之一

  • none:没有验证。
  • serviceAccount:使用提供给 Alloy 集群的标准化服务账户令牌。
  • kubeConfig:使用 ~/.kube/config 中的凭据。

kubernetes_node 块支持以下块

描述必选
resource_attributes配置要添加的资源属性。no

kubernetes_node > resource_attributes

resource_attributes 块支持以下块

描述必选
k8s.node.name切换 k8s.node.name 资源属性。
默认设置为 enabledtrue
no
k8s.node.uid切换 k8s.node.uid 资源属性。
默认设置为 enabledtrue
no

通用配置

资源属性配置

此块描述了如何配置资源属性,例如 k8s.node.nameazure.vm.name。每个块都使用同一组属性进行配置。唯一的区别可能在于这些属性之间的默认值。例如,某些资源属性默认将 enabled 设置为 true,而其他则不是。

以下属性受支持

属性类型描述默认值必选
enabledbool切换是否将资源属性添加到跨度、日志或指标资源。见下文no

要查看 enabled 的默认值,请参阅上面列出资源属性块的章节表。在“描述”列中会说明...

默认设置为 enabledtrue

… 或

默认情况下将 enabled 设置为 false

导出字段

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

名称类型描述
inputotelcol.Consumer其他组件可用于发送遥测数据的值。

input 接受任何遥测信号类型的 OTLP 格式的 otelcol.Consumer 数据

  • 日志
  • 度量指标
  • 跟踪信息

组件健康状态

otelcol.processor.resourcedetection 只有在提供无效配置时才会报告为不健康。

调试信息

otelcol.processor.resourcedetection 不公开任何特定组件的调试信息。

示例

环境检测器

如果您设置了值为 OTEL_RESOURCE_ATTRIBUTES=TestKey=TestValueOTEL_RESOURCE_ATTRIBUTES 环境变量,那么所有日志、指标和跟踪都会有键为 TestKey、值为 TestValue 的资源属性。

alloy
otelcol.processor.resourcedetection "default" {
  detectors = ["env"]

  output {
    logs    = [otelcol.exporter.otlp.default.input]
    metrics = [otelcol.exporter.otlp.default.input]
    traces  = [otelcol.exporter.otlp.default.input]
  }
}

环境和 ec2

不必放入 ec2 {} 块。默认会自动应用 ec2 设置,如第 ec2 中所述。

alloy
otelcol.processor.resourcedetection "default" {
  detectors = ["env", "ec2"]

  output {
    logs    = [otelcol.exporter.otlp.default.input]
    metrics = [otelcol.exporter.otlp.default.input]
    traces  = [otelcol.exporter.otlp.default.input]
  }
}

带有默认资源属性的 ec2

不必放入 ec2 {} 块。如第 ec2 中所述,默认会自动应用 ec2 设置。

alloy
otelcol.processor.resourcedetection "default" {
  detectors = ["ec2"]

  output {
    logs    = [otelcol.exporter.otlp.default.input]
    metrics = [otelcol.exporter.otlp.default.input]
    traces  = [otelcol.exporter.otlp.default.input]
  }
}

带有显式资源属性的 ec2

alloy
otelcol.processor.resourcedetection "default" {
  detectors = ["ec2"]
  ec2 {
    tags = ["^tag1$", "^tag2$", "^label.*$"]
    resource_attributes {
      cloud.account.id  { enabled = true }
      cloud.availability_zone  { enabled = true }
      cloud.platform  { enabled = true }
      cloud.provider  { enabled = true }
      cloud.region  { enabled = true }
      host.id  { enabled = true }
      host.image.id  { enabled = false }
      host.name  { enabled = false }
      host.type  { enabled = false }
    }
  }

  output {
    logs    = [otelcol.exporter.otlp.default.input]
    metrics = [otelcol.exporter.otlp.default.input]
    traces  = [otelcol.exporter.otlp.default.input]
  }
}

kubernetes_node

此示例使用了 K8S_NODE_NAME 的默认 node_from_env_var 选项。

不必放入 kubernetes_node {} 块。默认会自动应用 kubernetes_node 设置,如第 kubernetes_node 中所述。

alloy
otelcol.processor.resourcedetection "default" {
  detectors = ["kubernetes_node"]

  output {
    logs    = [otelcol.exporter.otlp.default.input]
    metrics = [otelcol.exporter.otlp.default.input]
    traces  = [otelcol.exporter.otlp.default.input]
  }
}

您需要将其添加到您的负载中

yaml
        env:
          - name: K8S_NODE_NAME
            valueFrom:
              fieldRef:
                fieldPath: spec.nodeName

带有自定义环境变量的 kubernetes_node

此示例使用设置为 my_custom_var 的自定义 node_from_env_var

alloy
otelcol.processor.resourcedetection "default" {
  detectors = ["kubernetes_node"]
  kubernetes_node {
    node_from_env_var = "my_custom_var"
  }

  output {
    logs    = [otelcol.exporter.otlp.default.input]
    metrics = [otelcol.exporter.otlp.default.input]
    traces  = [otelcol.exporter.otlp.default.input]
  }
}

您需要将其添加到您的负载中

yaml
        env:
          - name: my_custom_var
            valueFrom:
              fieldRef:
                fieldPath: spec.nodeName

兼容的组件

otelcol.processor.resourcedetection 可以接受以下组件的参数

otelcol.processor.resourcedetection 的导出可以被以下组件消费

注意

连接某些组件可能没有意义,或者组件可能需要进一步配置以正确连接。请参阅相关文档以获取更多详细信息。