otelcol.processor.resourcedetection
otelcol.processor.resourcedetection
以符合 OpenTelemetry 资源语义约定的格式检测主机的资源信息,并使用此信息附加或覆盖遥测数据中的资源值。
注意
otelcol.processor.resourcedetection
是上游 OpenTelemetry Collector Contribresourcedetection
处理器的封装。如有必要,错误报告或功能请求将重定向到上游仓库。
您可以通过为 otelcol.processor.resourcedetection
组件赋予不同的标签来指定多个实例。
用法
otelcol.processor.resourcedetection "LABEL" {
output {
logs = [...]
metrics = [...]
traces = [...]
}
}
参数
otelcol.processor.resourcedetection
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
detectors | list(string) | 用于检测资源信息的有序命名检测器列表。 | ["env"] | 否 |
override | bool | 配置是应覆盖现有资源属性还是保留。 | true | 否 |
否 | timeout | duration | 所有指定检测器必须在此超时时间内完成。 | 否 |
detectors
可以包含以下值
env
ec2
ecs
eks
elasticbeanstalk
lambda
azure
aks
consul
docker
gcp
heroku
system
openshift
kubernetes_node
kubeadm
dynatrace
env
是唯一不通过块进行配置的检测器。env
检测器从 OTEL_RESOURCE_ATTRIBUTES
环境变量读取资源信息。此变量必须采用 <key1>=<value1>,<key2>=<value2>,...
格式,具体细节尚待 OpenTelemetry 规范确认。
如果需要除 env
之外的检测器,您可以使用相应的块进行自定义。例如,您可以使用 ec2 块自定义 ec2
检测器。如果省略 ec2 块,则使用 ec2 块文档中指定的默认值。
如果多个检测器插入相同的属性名称,则第一个插入的检测器生效。例如,如果您设置了 detectors = ["eks", "ec2"]
,则 cloud.platform
将是 aws_eks
而不是 ec2
。
建议在 AWS 中使用以下顺序
块
otelcol.processor.resourcedetection
定义中支持以下块
层级 | 块 | 描述 | 必需 |
---|---|---|---|
output | output | 配置将接收到的遥测数据发送到何处。 | 是 |
ec2 | ec2 | 否 | |
ecs | ecs | 否 | |
eks | eks | 否 | |
elasticbeanstalk | elasticbeanstalk | 否 | |
lambda | lambda | 否 | |
azure | azure | 否 | |
aks | aks | 否 | |
consul | consul | 否 | |
docker | docker | 否 | |
gcp | gcp | 否 | |
heroku | heroku | 否 | |
system | system | 否 | |
openshift | openshift | 否 | |
kubernetes_node | kubernetes_node | 否 | |
kubeadm | kubeadm | 否 | |
dynatrace | dynatrace | 否 | |
debug_metrics | debug_metrics | 配置此组件生成的用于监控其状态的指标。 | 否 |
output
output
块配置一组组件,用于转发生成的遥测数据。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
logs | list(otelcol.Consumer) | 发送日志的消费者列表。 | [] | 否 |
metrics | list(otelcol.Consumer) | 发送指标的消费者列表。 | [] | 否 |
traces | list(otelcol.Consumer) | 发送跟踪的消费者列表。 | [] | 否 |
您必须指定 output
块,但其所有参数都是可选的。默认情况下,遥测数据会被丢弃。请相应地配置 metrics
、logs
和 traces
参数,将遥测数据发送到其他组件。
debug_metrics 块
debug_metrics
块配置此组件生成的用于监控其状态的指标。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
disable_high_cardinality_metrics | boolean | 是否禁用某些高基数指标。 | true | 否 |
disable_high_cardinality_metrics
是 Grafana Alloy 中相当于 OpenTelemetry Collector 中 telemetry.disableHighCardinalityMetrics
特性门控的功能。它会移除可能导致高基数指标的属性。例如,关于 HTTP 和 gRPC 连接的指标中带有 IP 地址和端口号的属性将被移除。
注意
如果配置了
disable_high_cardinality_metrics
,它仅适用于otelcol.exporter.*
和otelcol.receiver.*
组件。
ec2
ec2
块使用 AWS SDK for Go 从 EC2 实例元数据 API 读取资源信息。
ec2
块支持以下属性
属性 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
tags | list(string) | 与 EC2 实例的标签键匹配的正则表达式列表。 | [] | 否 |
max_attempts | int | 检索元数据的最大尝试次数。 | 3 | 否 |
max_backoff | timeout | 重试之间的最大退避时间。 | "20s" | 否 |
如果您在 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 | 配置要添加哪些资源属性。 | 否 |
ec2 > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必需 |
---|---|---|
cloud.account.id | 切换 cloud.account.id 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.availability_zone | 切换 cloud.availability_zone 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.platform | 切换 cloud.platform 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.provider | 切换 cloud.provider 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.region | 切换 cloud.region 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
host.id | 切换 host.id 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
host.image.id | 切换 host.image.id 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
host.name | 切换 host.name 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
host.type | 切换 host.type 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
ecs
ecs
块查询 任务元数据端点 (TMDE) 以记录有关当前 ECS 任务的信息。仅支持 TMDE V4 和 V3。
ecs
块支持以下块
块 | 描述 | 必需 |
---|---|---|
resource_attributes | 配置要添加哪些资源属性。 | 否 |
ecs > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必需 |
---|---|---|
aws.ecs.cluster.arn | 切换 aws.ecs.cluster.arn 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
aws.ecs.launchtype | 切换 aws.ecs.launchtype 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
aws.ecs.task.arn | 切换 aws.ecs.task.arn 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
aws.ecs.task.family | 切换 aws.ecs.task.family 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
aws.ecs.task.id | 切换 aws.ecs.task.id 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
aws.ecs.task.revision | 切换 aws.ecs.task.revision 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
aws.log.group.arns | 切换 aws.log.group.arns 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
aws.log.group.names | 切换 aws.log.group.names 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
aws.log.stream.arns | 切换 aws.log.stream.arns 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
aws.log.stream.names | 切换 aws.log.stream.names 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.account.id | 切换 cloud.account.id 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.availability_zone | 切换 cloud.availability_zone 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.platform | 切换 cloud.platform 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.provider | 切换 cloud.provider 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.region | 切换 cloud.region 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
eks
eks
块为 Amazon EKS 添加资源属性。
eks
块支持以下块
块 | 描述 | 必需 |
---|---|---|
resource_attributes | 配置要添加哪些资源属性。 | 否 |
eks > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必需 |
---|---|---|
cloud.account.id | 切换 cloud.account.id 资源属性。默认情况下将 enabled 设置为 false 。 | 否 |
cloud.platform | 切换 cloud.platform 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.provider | 切换 cloud.provider 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
k8s.cluster.name | 切换 k8s.cluster.name 资源属性。默认情况下将 enabled 设置为 false 。 | 否 |
示例值
cloud.provider
:"aws"
cloud.platform
:"aws_eks"
elasticbeanstalk
elasticbeanstalk
块读取所有启用了 X-Ray 的 Beanstalk 实例上可用的 AWS X-Ray 配置文件。
elasticbeanstalk
块支持以下块
块 | 描述 | 必需 |
---|---|---|
resource_attributes | 配置要添加哪些资源属性。 | 否 |
elasticbeanstalk > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必需 |
---|---|---|
cloud.platform | 切换 cloud.platform 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.provider | 切换 cloud.provider 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
deployment.envir | 切换 deployment.envir 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
service.instance | 切换 service.instance 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
service.version | 切换 service.version 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
示例值
cloud.provider
:"aws"
cloud.platform
:"aws_elastic_beanstalk"
lambda
lambda
块使用 AWS Lambda 运行时环境变量 来检索各种资源属性。
lambda
块支持以下块
块 | 描述 | 必需 |
---|---|---|
resource_attributes | 配置要添加哪些资源属性。 | 否 |
lambda > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必需 |
---|---|---|
aws.log.group.names | 切换 aws.log.group.names 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
aws.log.stream.names | 切换 aws.log.stream.names 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.platform | 切换 cloud.platform 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.provider | 切换 cloud.provider 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.region | 切换 cloud.region 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
faas.instance | 切换 faas.instance 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
faas.max_memory | 切换 faas.max_memory 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
faas.name | 切换 faas.name 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
faas.version | 切换 faas.version 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.provider
:"aws"
cloud.platform
:"aws_lambda"
cloud.region
:$AWS_REGION
函数即服务 (Function as a Service) 语义约定 和 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.log.group.names
:$AWS_LAMBDA_LOG_GROUP_NAME
aws.log.stream.names
:$AWS_LAMBDA_LOG_STREAM_NAME
azure
azure
块查询 Azure 实例元数据服务 来检索各种资源属性。
azure
块支持以下块
块 | 描述 | 必需 |
---|---|---|
resource_attributes | 配置要添加哪些资源属性。 | 否 |
azure
块支持以下属性
属性 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
tags | list(string) | 可以指定一个正则表达式列表来匹配标签键,以便作为资源属性添加。 | [] | 否 |
azure > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必需 |
---|---|---|
azure.resourcegroup.name | 切换 azure.resourcegroup.name 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
azure.vm.name | 切换 azure.vm.name 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
azure.vm.scaleset.name | 切换 azure.vm.scaleset.name 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
azure.vm.size | 切换 azure.vm.size 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.account.id | 切换 cloud.account.id 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.platform | 切换 cloud.platform 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.provider | 切换 cloud.provider 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.region | 切换 cloud.region 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
host.id | 切换 host.id 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
host.name | 切换 host.name 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
示例值
cloud.provider
:"azure"
cloud.platform
:"azure_vm"
aks
aks
块添加与 Azure AKS 相关的资源属性。
aks
块支持以下块
块 | 描述 | 必需 |
---|---|---|
resource_attributes | 配置要添加哪些资源属性。 | 否 |
aks > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必需 |
---|---|---|
cloud.platform | 切换 cloud.platform 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.provider | 切换 cloud.provider 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
k8s.cluster.name | 切换 k8s.cluster.name 资源属性。默认情况下将 enabled 设置为 false 。 | 否 |
示例值
cloud.provider
:"azure"
cloud.platform
:"azure_vm"
Azure AKS 集群名称派生自 Azure 实例元数据服务 (IMDS) 的基础设施资源组字段。此字段包含资源组和集群名称,用下划线分隔。例如:MC_<resource group>_<cluster name>_<location>
。
示例
- 资源组:
my-resource-group
- 集群名称:
my-cluster
- 位置:
eastus
- 生成的名称:
MC_my-resource-group_my-cluster_eastus
如果集群名称不包含下划线且未使用自定义基础设施资源组名称,则会检测到集群名称。
如果无法执行准确的解析,则返回基础设施资源组值。此值可用于唯一标识集群,因为 Azure 不允许用户创建多个具有相同基础设施资源组名称的集群。
consul
consul
块查询 Consul agent 并读取其配置端点以检索资源属性的值。
consul
块支持以下属性
属性 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
address | string | Consul 服务器的地址。 | "" | 否 |
datacenter | string | 要使用的数据中心。如果未提供,则使用默认的 agent 数据中心。 | "" | 否 |
token | secret | 一个按请求 ACL token,它会覆盖 Consul agent 的默认(空)token。 | "" | 否 |
namespace | string | 请求时发送的命名空间名称。 | "" | 否 |
meta | list(string) | Consul 元数据 键的允许列表,用作资源属性。 | [] | 否 |
只有在启用 Consul 的 ACL 系统 时才需要 token
。
consul
块支持以下块
块 | 描述 | 必需 |
---|---|---|
resource_attributes | 配置要添加哪些资源属性。 | 否 |
consul > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必需 |
---|---|---|
cloud.region | 切换 cloud.region 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
host.id | 切换 host.id 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
host.name | 切换 host.name 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
docker
docker
块查询 Docker daemon 以检索主机上的各种资源属性。
您需要挂载 Docker socket(在 Linux 上是 /var/run/docker.sock
)才能联系 Docker daemon。Docker 检测在 MacOS 上不起作用。
docker
块支持以下块
块 | 描述 | 必需 |
---|---|---|
resource_attributes | 配置要添加哪些资源属性。 | 否 |
docker > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必需 |
---|---|---|
host.name | 切换 host.name 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
os.type | 切换 os.type 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
gcp
gcp
块使用 Google Cloud Client Libraries for Go 检测资源属性,它从 GCP 元数据服务器 读取资源信息。该检测器还使用环境变量来识别应用程序运行在哪个 GCP 平台,并为该平台分配适当的资源属性。
无论 Alloy 运行在哪种 GCP 平台上,都使用 gcp
检测器。
gcp
块支持以下块
块 | 描述 | 必需 |
---|---|---|
resource_attributes | 配置要添加哪些资源属性。 | 否 |
gcp > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必需 |
---|---|---|
cloud.account.id | 切换 cloud.account.id 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.availability_zone | 切换 cloud.availability_zone 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.platform | 切换 cloud.platform 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.provider | 切换 cloud.provider 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.region | 切换 cloud.region 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
faas.id | 切换 faas.id 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
faas.instance | 切换 faas.instance 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
faas.name | 切换 faas.name 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
faas.version | 切换 faas.version 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
gcp.cloud_run.job.execution | 切换 gcp.cloud_run.job.execution 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
gcp.cloud_run.job.task_index | 切换 gcp.cloud_run.job.task_index 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
gcp.gce.instance.hostname | 切换 gcp.gce.instance.hostname 资源属性。默认情况下将 enabled 设置为 false 。 | 否 |
gcp.gce.instance.name | 切换 gcp.gce.instance.name 资源属性。默认情况下将 enabled 设置为 false 。 | 否 |
gcp.gce.instance.group_manager.name | 切换 gcp.gce.instance.group_manager.name 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
gcp.gce.instance.group_manager.region | 切换 gcp.gce.instance.group_manager.region 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
gcp.gce.instance.group_manager.zone | 切换 gcp.gce.instance.group_manager.zone 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
host.id | 切换 host.id 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
host.name | 切换 host.name 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
host.type | 切换 host.type 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
k8s.cluster.name | 切换 k8s.cluster.name 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
Google Compute Engine (GCE) 元数据
cloud.provider
:"gcp"
cloud.platform
:"gcp_compute_engine"
cloud.account.id
: 项目 IDcloud.region
: 例如"us-central1"
cloud.availability_zone
: 例如"us-central1-c"
host.id
: 实例 IDhost.name
: 实例名称host.type
: 机器类型- (可选)
gcp.gce.instance.hostname
- (可选)
gcp.gce.instance.name
gcp.gce.instance.group_manager.name
: 托管实例组名称gcp.gce.instance.group_manager.region
: 托管实例组区域gcp.gce.instance.group_manager.zone
: 托管实例组可用区
Google Kubernetes Engine (GKE) 元数据
cloud.provider
:"gcp"
cloud.platform
:"gcp_kubernetes_engine"
cloud.account.id
: 项目 IDcloud.region
: 仅适用于区域性 GKE 集群;例如"us-central1"
cloud.availability_zone
: 仅适用于可用区性 GKE 集群;例如"us-central1-c"
k8s.cluster.name
host.id
: 实例 IDhost.name
: 实例名称;仅在工作负载身份禁用时
已知问题发生在启用 GKE 工作负载身份时。GCE 元数据端点将不可用,GKE 资源检测器将无法确定 host.name
。如果发生这种情况,您可以通过以下资源之一设置 host.name
- 通过 downward API 和
env
检测器获取node.name
。 - 从 Kubernetes API(使用
k8s.io/client-go
)获取 Kubernetes 节点名称。
Google Cloud Run Services 元数据
cloud.provider
:"gcp"
cloud.platform
:"gcp_cloud_run"
cloud.account.id
: 项目 IDcloud.region
: 例如"us-central1"
faas.id
: 实例 IDfaas.name
: 服务名称faas.version
: 服务版本
Cloud Run Jobs 元数据
cloud.provider
:"gcp"
cloud.platform
:"gcp_cloud_run"
cloud.account.id
: 项目 IDcloud.region
: 例如"us-central1"
faas.id
: 实例 IDfaas.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
: 项目 IDcloud.region
: 例如"us-central1"
faas.id
: 实例 IDfaas.name
: 函数名称faas.version
: 函数版本
Google App Engine 元数据
cloud.provider
:"gcp"
cloud.platform
:"gcp_app_engine"
cloud.account.id
: 项目 IDcloud.region
: 例如"us-central1"
cloud.availability_zone
: 例如"us-central1-c"
faas.id
: 实例 IDfaas.name
: 服务名称faas.version
: 服务版本
heroku
heroku
块添加从 Heroku dyno 元数据 派生的资源属性。
heroku
块支持以下块
块 | 描述 | 必需 |
---|---|---|
resource_attributes | 配置要添加哪些资源属性。 | 否 |
heroku > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必需 |
---|---|---|
cloud.provider | 切换 cloud.provider 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
heroku.app.id | 切换 heroku.app.id 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
heroku.dyno.id | 切换 heroku.dyno.id 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
heroku.release.commit | 切换 heroku.release.commit 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
heroku.release.creation_timestamp | 切换 heroku.release.creation_timestamp 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
service.instance.id | 切换 service.instance.id 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
service.name | 切换 service.name 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
service.version | 切换 service.version 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
当 Heroku dyno 元数据 处于活动状态时,Heroku 应用程序会通过环境变量发布信息。我们将这些环境变量映射到资源属性,如下所示
Dyno 元数据环境变量 | 资源属性 |
---|---|
HEROKU_APP_ID | heroku.app.id |
heroku.app.name | service.name |
HEROKU_DYNO_ID | service.instance.id |
heroku.dyno.id | heroku.release.creation_timestamp |
HEROKU_RELEASE_CREATED_AT | service.version |
heroku.release.creation_timestamp | heroku.release.commit |
更多信息,请参阅 OpenTelemetry 规范语义约定 中的 Heroku 云提供商文档。
system
system
块查询主机以检索各种资源属性。
注意
如果在 Docker 容器中运行 Alloy,请使用 Docker 检测器。
system
块支持以下属性
属性 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
hostname_sources | list(string) | 获取主机名的优先级来源列表。 | ["dns", "os"] | 否 |
hostname_sources
的有效选项包括
"dns"
: 使用多个来源获取完全限定域名。首先,它在本地机器的hosts
文件中查找主机名。如果失败,它会查找 CNAME。最后,如果仍然失败,它会执行反向 DNS 查询。注意:此主机名来源在 Windows 上可能会产生不可靠的结果。要在 Windows 上生成 FQDN,使用下方提到的“lookup”主机名来源可能会获得更好的结果。"os"
: 提供本地机器内核提供的主机名。"cname"
: 提供规范名称,由 Go 标准库中的net.LookupCNAME
提供。注意:此主机名来源在 Windows 上可能会产生不可靠的结果。"lookup"
: 对当前主机的 IP 地址执行反向 DNS 查找。
如果在从某个源获取主机名时发生错误,将考虑 hostname_sources
列表中的下一个源。
system
块支持以下块
块 | 描述 | 必需 |
---|---|---|
resource_attributes | 配置要添加哪些资源属性。 | 否 |
system > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必需 |
---|---|---|
host.arch | 切换 host.arch 资源属性。默认情况下将 enabled 设置为 false 。 | 否 |
host.cpu.cache.l2.size | 切换 host.cpu.cache.l2.size 资源属性。默认情况下将 enabled 设置为 false 。 | 否 |
host.cpu.family | 切换 host.cpu.family 资源属性。默认情况下将 enabled 设置为 false 。 | 否 |
host.cpu.model.id | 切换 host.cpu.model.id 资源属性。默认情况下将 enabled 设置为 false 。 | 否 |
host.cpu.model.name | 切换 host.cpu.model.name 资源属性。默认情况下将 enabled 设置为 false 。 | 否 |
host.cpu.stepping | 切换 host.cpu.stepping 资源属性。默认情况下将 enabled 设置为 false 。 | 否 |
host.cpu.vendor.id | 切换 host.cpu.vendor.id 资源属性。默认情况下将 enabled 设置为 false 。 | 否 |
host.id | 切换 host.id 资源属性。默认情况下将 enabled 设置为 false 。 | 否 |
host.ip | 切换 host.ip 资源属性。默认情况下将 enabled 设置为 false 。 | 否 |
host.mac | 切换 host.mac 资源属性。默认情况下将 enabled 设置为 false 。 | 否 |
host.name | 切换 host.name 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
os.description | 切换 os.description 资源属性。默认情况下将 enabled 设置为 false 。 | 否 |
os.type | 切换 os.type 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
openshift
openshift
块查询 OpenShift 和 Kubernetes API 以检索各种资源属性。
openshift
块支持以下属性
属性 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
address | string | OpenShift API 服务器的地址。 | 默认值 | 否 |
token | string | 用于针对 OpenShift API 服务器进行身份验证的 token。 | "" | 否 |
需要“get”、“watch”和“list”权限
kind: ClusterRole
metadata:
name: alloy
rules:
- apiGroups: ["config.openshift.io"]
resources: ["infrastructures", "infrastructures/status"]
verbs: ["get", "watch", "list"]
默认情况下,API 地址由环境变量 KUBERNETES_SERVICE_HOST
、KUBERNETES_SERVICE_PORT
确定,服务 token 从 /var/run/secrets/kubernetes.io/serviceaccount/token
读取。如果没有显式禁用 TLS 且未配置 ca_file
,则使用 /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
。如果在配置中设置了 API 地址、ca_file
和服务 token,则跳过确定过程。
openshift
块支持以下块
块 | 描述 | 必需 |
---|---|---|
resource_attributes | 配置要添加哪些资源属性。 | 否 |
tls | TLS 设置,用于与 OpenShift API 的连接。 | 是 |
openshift > tls
tls
块配置用于连接 gRPC 服务器的 TLS 设置。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
ca_file | string | CA 文件的路径。 | 否 | |
ca_pem | string | 用于验证服务器的 CA PEM 编码文本。 | 否 | |
cert_file | string | TLS 证书的路径。 | 否 | |
cert_pem | string | 用于客户端身份验证的证书 PEM 编码文本。 | 否 | |
insecure_skip_verify | boolean | 忽略不安全的服务器 TLS 证书。 | 否 | |
include_system_ca_certs_pool | boolean | 是否在证书颁发机构之外加载系统证书颁发机构池。 | false | 否 |
insecure | boolean | 连接到配置的服务器时禁用 TLS。 | 否 | |
key_file | string | TLS 证书密钥的路径。 | 否 | |
key_pem | secret | 用于客户端身份验证的密钥 PEM 编码文本。 | 否 | |
max_version | string | 连接可接受的最大 TLS 版本。 | "TLS 1.3" | 否 |
min_version | string | 连接可接受的最小 TLS 版本。 | "TLS 1.2" | 否 |
cipher_suites | list(string) | TLS 传输可使用的 TLS 密码套件列表。 | [] | 否 |
reload_interval | timeout | 证书重新加载的时间间隔。 | "0s" | 否 |
server_name | string | 设置后验证服务器证书的主机名。 | 否 | |
curve_preferences | list(string) | 握手过程中使用的椭圆曲线集合。 | [] | 否 |
如果服务器不支持 TLS,您必须将 insecure
参数设置为 true
。
要禁用与服务器连接的 tls
,请将 insecure
参数设置为 true
。
如果 reload_interval
设置为 "0s"
,则证书永不重新加载。
以下参数对互斥,不能同时设置
ca_pem
和ca_file
cert_pem
和cert_file
key_pem
和key_file
如果 cipher_suites
为空,则使用安全的默认列表。有关支持的密码套件列表,请参阅 Go TLS 文档。
curve_preferences
参数按优先顺序确定在握手期间优先选择的椭圆曲线集。如果未提供,则使用默认列表。可用的椭圆曲线集包括 X25519
、P521
、P256
和 P384
。
openshift > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必需 |
---|---|---|
cloud.platform | 切换 cloud.platform 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.provider | 切换 cloud.provider 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
cloud.region | 切换 cloud.region 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
k8s.cluster.name | 切换 k8s.cluster.name 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
kubernetes_node
kubernetes_node
块查询 Kubernetes API 服务器以检索各种节点资源属性。
kubernetes_node
块支持以下属性
属性 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
auth_type | string | 配置如何向 K8s API 服务器进行身份验证。 | "none" | 否 |
context | string | 当 auth_type 设置为 "kubeConfig" 时,覆盖当前上下文。 | "" | 否 |
node_from_env_var | string | 用于从中检索节点名称的环境变量的名称。 | "K8S_NODE_NAME" | 否 |
需要“get”和“list”权限
kind: ClusterRole
metadata:
name: alloy
rules:
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get", "list"]
auth_type
可以设置为以下之一
none
:无认证。serviceAccount
:使用提供给 Alloy Pod 的标准服务帐户令牌。kubeConfig
:使用~/.kube/config
中的凭据。
kubernetes_node
块支持以下块
块 | 描述 | 必需 |
---|---|---|
resource_attributes | 配置要添加哪些资源属性。 | 否 |
kubernetes_node > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必需 |
---|---|---|
k8s.node.name | 切换 k8s.node.name 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
k8s.node.uid | 切换 k8s.node.uid 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
kubeadm
kubeadm
块查询 Kubernetes API 服务器以检索 kubeadm 资源属性。
kubeadm
块支持以下属性
属性 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
auth_type | string | 配置如何向 Kubernetes API 服务器进行身份验证。 | "none" | 否 |
context | string | 当 auth_type 设置为 "kubeConfig" 时,覆盖当前上下文。 | "" | 否 |
需要以下权限
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: otel-collector
namespace: kube-system
rules:
- apiGroups: [""]
resources: ["configmaps"]
resourceNames: ["kubeadm-config"]
verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: otel-collector-rolebinding
namespace: kube-system
subjects:
- kind: ServiceAccount
name: default
namespace: default
roleRef:
kind: Role
name: otel-collector
apiGroup: rbac.authorization.k8s.io
您可以将 auth_type
设置为以下之一
none
:无认证。serviceAccount
:使用提供给 Alloy Pod 的标准服务帐户令牌。kubeConfig
:使用~/.kube/config
中的凭据。
kubeadm
块支持以下块
块 | 描述 | 必需 |
---|---|---|
resource_attributes | 配置要添加哪些资源属性。 | 否 |
kubeadm > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必需 |
---|---|---|
k8s.cluster.name | 切换 k8s.cluster.name 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
k8s.cluster.uid | 切换 k8s.cluster.uid 资源属性。默认将 enabled 设置为 true 。 | 否 |
dynatrace
dynatrace
块从 dt_host_metadata.properties
文件加载资源信息,该文件位于 /var/lib/dynatrace/enrichment
(*nix 系统上) 或 %ProgramData%\dynatrace\enrichment
(Windows 上) 目录中。
dynatrace
块支持以下块
块 | 描述 | 必需 |
---|---|---|
resource_attributes | 配置要添加哪些资源属性。 | 否 |
dynatrace > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必需 |
---|---|---|
host.name | 切换 host.name 资源属性。默认情况下将 enabled 设置为 true 。 | 否 |
dt.entity.host | 切换 dt.entity.host 资源属性。默认将 enabled 设置为 true 。 | 否 |
通用配置
资源属性配置
此块描述了如何配置 k8s.node.name
和 azure.vm.name
等资源属性。每个块都使用相同的属性集进行配置。只有这些属性的默认值可能因资源属性而异。例如,某些资源属性默认将 enabled
设置为 true
,而其他则没有。
支持以下属性
属性 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
enabled | bool | 切换是否将资源属性添加到 span、日志或指标资源中。 | 默认值 | 否 |
要查看 enabled
的默认值,请参阅上面列出资源属性块的章节中的表格。“Description”列将说明是…
默认情况下将
enabled
设置为true
。
…或
默认情况下将
enabled
设置为false
。
导出字段
导出以下字段,其他组件可以引用它们
名称 | 类型 | 描述 |
---|---|---|
input | otelcol.Consumer | 其他组件可用于发送遥测数据的值。 |
input
接受针对这些类型的任何遥测信号的 otelcol.Consumer
OTLP 格式数据
- logs
- metrics
- traces
组件健康状况
只有在给定无效配置时,otelcol.processor.resourcedetection
才会报告为不健康。
调试信息
otelcol.processor.resourcedetection
不公开任何特定于组件的调试信息。
示例
env detector
如果您设置一个值为 TestKey=TestValue
的 OTEL_RESOURCE_ATTRIBUTES
环境变量,那么所有日志、指标和 traces 都将具有一个键为 TestKey
、值为 TestValue
的资源属性。
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]
}
}
env and ec2
无需添加 ec2 {}
块。正如 ec2 中所指定,会自动应用 ec2
默认值。
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
默认值。
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
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
默认值。
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]
}
}
您需要将其添加到您的工作负载中
env:
- name: K8S_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
带有自定义环境变量的 kubernetes_node
此示例使用设置为 my_custom_var
的自定义 node_from_env_var
。
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]
}
}
您需要将其添加到您的工作负载中
env:
- name: my_custom_var
valueFrom:
fieldRef:
fieldPath: spec.nodeName
兼容组件
otelcol.processor.resourcedetection
可以接受来自以下组件的参数
otelcol.processor.resourcedetection
具有可供以下组件使用的导出项
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参阅链接的文档。