otelcol 处理器资源检测
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 | 列表(字符串) | 用于检测资源信息的命名检测器的有序列表。 | ["env"] | 否 |
覆盖 | 布尔型 | 配置是否应覆盖现有资源属性或保留。 | 是 | 否 |
timeout | 持续时间 | 所有指定检测器必须完成的超时时间。 | "5s" | 否 |
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,以下顺序是推荐的
块
在 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 | 否 | |
debug_metrics | debug_metrics | 配置此组件生成的用于监控其状态的指标。 | 否 |
output
output
块配置了一组组件,以将结果遥测数据转发到。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
logs | 列表(otelcol.Consumer) | 要发送日志的消费者列表。 | [] | 否 |
metrics | 列表(otelcol.Consumer) | 要发送指标的消费者列表。 | [] | 否 |
traces | 列表(otelcol.Consumer) | 要发送跟踪的消费者列表。 | [] | 否 |
您必须指定 output
块,但其所有参数都是可选的。默认情况下,遥测数据将被丢弃。根据需要配置 metrics
、logs
和 traces
参数,以将遥测数据发送到其他组件。
debug_metrics 块
debug_metrics
块配置此组件生成的用于监控其状态的指标。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
disable_high_cardinality_metrics | 布尔型 | 是否禁用某些高基数指标。 | 是 | 否 |
level | 字符串 | 控制包装收集器发出的指标的详细程度。 | "detailed" | 否 |
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 实例元数据 API 和 AWS SDK for Go 从 EC2 实例读取资源信息。
ec2
块支持以下属性
属性 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
tags | 列表(字符串) | 一个正则表达式列表,用于匹配 EC2 实例标签键。 | [] | 否 |
如果您在 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.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
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 | 列表(字符串) | 可以指定一组正则表达式,以匹配标签键并将其作为资源属性添加。 | [] | 否 |
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_<资源组>_<集群名称>_<位置>
。
示例
- 资源组:
my-resource-group
- 集群名称:
my-cluster
- 位置:
eastus
- 生成的名称:
MC_my-resource-group_my-cluster_eastus
如果集群名称不包含下划线且未使用自定义基础设施资源组名称,则会检测到集群名称。
如果无法执行准确解析,则返回基础设施资源组值。此值可用于唯一标识集群,因为 Azure 不允许用户创建具有相同基础设施资源组名称的多个集群。
consul
《consul》块查询 Consul 代理并读取其配置端点以检索资源属性的值。
《consul》块支持以下属性:
属性 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
address | 字符串 | Consul 服务器地址 | "" | 否 |
datacenter | 字符串 | 要使用的数据中心。如果未提供,则使用默认代理数据中心。 | "" | 否 |
token | secret | 每个请求的 ACL 令牌,它覆盖 Consul 代理的默认(空)令牌。 | "" | 否 |
namespace | 字符串 | 要发送的请求的命名空间名称。 | "" | 否 |
meta | 列表(字符串) | 允许使用的 Consul 元数据 键,用作资源属性。 | [] | 否 |
token
仅在启用 Consul 的 ACL 系统 时才需要。
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 守护进程从主机机器检索各种资源属性。
您需要挂载 Docker 套接字(Linux 上的 /var/run/docker.sock
)以联系 Docker 守护进程。Docker 检测在 MacOS 上不起作用。
docker
块支持以下块
块 | 描述 | 必需 |
---|---|---|
resource_attributes | 配置要添加哪些资源属性。 | 否 |
docker > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必需 |
---|---|---|
host.name | 切换 host.name 资源属性。默认设置为 enabled 为 true 。 | 否 |
os.type | 切换 os.type 资源属性。默认设置为 enabled 为 true 。 | 否 |
gcp
gcp
块通过使用 Go 的 Google Cloud 客户端库 识别资源属性,它从 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 。 | 否 |
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
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
- 通过 向下 API 使用
env
检测器获取node.name
。 - 从 Kubernetes API(使用
k8s.io/client-go
)获取 Kubernetes 节点名。
Google Cloud Run 服务元数据
cloud.provider
:"gcp"
cloud.platform
:"gcp_cloud_run"
cloud.account.id
: 项目 IDcloud.region
: 例如"us-central1"
faas.id
: 实例 IDfaas.name
: 服务名称faas.version
: 服务版本
Cloud Run 作业元数据
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 动态进程元数据 中派生出的资源属性。
《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 动态进程元数据 激活时,Heroku 应用程序通过环境变量发布信息。我们将这些环境变量映射到以下资源属性
动态进程元数据环境变量 | 资源属性 |
---|---|
HEROKU_APP_ID | heroku.app.id |
HEROKU_APP_NAME | service.name |
HEROKU_DYNO_ID | service.instance.id |
HEROKU_RELEASE_CREATED_AT | heroku.release.creation_timestamp |
HEROKU_RELEASE_VERSION | service.version |
HEROKU_SLUG_COMMIT | heroku.release.commit |
有关更多信息,请参阅 Heroku 云提供商文档,该文档位于 OpenTelemetry 规范语义约定 下。
system
《system》块查询主机以检索各种资源属性。
注意
如果将 Alloy 作为 Docker 容器运行,请使用 Docker 检测器。
《system》块支持以下属性
属性 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
hostname_sources | 列表(字符串) | 用于获取主机名的来源的优先级列表。 | ["dns", "os"] | 否 |
《hostname_sources》的有效选项包括
"dns"
:使用多个来源获取完全限定的域名。首先,在本地计算机的hosts
文件中查找主机名。如果失败,则查找 CNAME。最后,如果失败,则执行反向 DNS 查询。注意:此主机名来源可能在 Windows 上产生不可靠的结果。为了生成 FQDN,Windows 主机可能使用以下提到的“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 | 字符串 | OpenShift API 服务器地址。 | 见下方 | 否 |
token | 字符串 | 用于在OpenShift API服务器上进行身份验证的令牌。 | "" | 否 |
需要“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
确定,服务令牌从/var/run/secrets/kubernetes.io/serviceaccount/token
读取。如果未显式禁用TLS且未配置ca_file
,则使用/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
。如果配置中已设置,则跳过API地址、ca_file
和服务令牌的确定。
openshift
块支持以下块
块 | 描述 | 必需 |
---|---|---|
resource_attributes | 配置要添加哪些资源属性。 | 否 |
tls | OpenShift API连接的TLS设置。 | 是 |
openshift > tls
tls
块配置用于连接gRPC服务器的TLS设置。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
ca_file | 字符串 | CA文件路径。 | 否 | |
ca_pem | 字符串 | 用于验证服务器的CA PEM编码文本。 | 否 | |
cert_file | 字符串 | TLS证书路径。 | 否 | |
cert_pem | 字符串 | 用于客户端身份验证的证书PEM编码文本。 | 否 | |
insecure_skip_verify | 布尔型 | 忽略不安全的服务器TLS证书。 | 否 | |
include_system_ca_certs_pool | 布尔型 | 是否在证书权威机构旁边加载系统证书权威机构池。 | false | 否 |
insecure | 布尔型 | 连接到配置的服务器时禁用TLS。 | 否 | |
key_file | 字符串 | TLS证书密钥路径。 | 否 | |
key_pem | secret | 用于客户端身份验证的密钥PEM编码文本。 | 否 | |
max_version | 字符串 | 连接可接受的TLS最大版本。 | "TLS 1.3" | 否 |
min_version | 字符串 | 连接可接受的最小TLS版本。 | "TLS 1.2" | 否 |
cipher_suites | 列表(字符串) | TLS传输可以使用的一组TLS密码套件。 | [] | 否 |
reload_interval | 持续时间 | 证书重新加载后的持续时间。 | "0s" | 否 |
server_name | 字符串 | 当设置时,验证服务器证书的域名。 | 否 |
如果服务器不支持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文档。
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 | 字符串 | 配置如何对K8s API服务器进行身份验证。 | "none" | 否 |
context | 字符串 | 当auth_type 设置为"kubeConfig" 时,覆盖当前上下文。 | "" | 否 |
node_from_env_var | 字符串 | 从其中检索节点名称的环境变量名称。 | "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 。 | 否 |
通用配置
资源属性配置
此块描述了如何配置资源属性,例如 k8s.node.name
和 azure.vm.name
。每个块都使用相同的属性集进行配置。只有这些属性的默认值可能因资源属性而异。例如,某些资源属性默认将 enabled
设置为 true
,而其他则不是。
以下属性被支持
属性 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
| 布尔型 | 切换是否将资源属性添加到跨度、日志或度量资源。 | 见下方 | 否 |
要查看 enabled
的默认值,请参阅上述列资源属性块的表格。描述列将声明...
默认设置为
enabled
为true
。
...
默认设置为
enabled
为false
。
导出字段
以下字段被导出,并可由其他组件引用
名称 | 类型 | 描述 |
---|---|---|
|
| 其他组件可以使用该值发送遥测数据。 |
input
接受任何遥测信号类型的 otelcol.Consumer
OTLP 格式数据
- logs
- metrics
- traces
组件健康状态
otelcol.processor.resourcedetection
仅在给定无效配置时报告为不健康。
调试信息
otelcol.processor.resourcedetection
不公开任何特定组件的调试信息。
示例
环境检测器
如果您设置一个 OTEL_RESOURCE_ATTRIBUTES
环境变量,其值为 TestKey=TestValue
,则所有日志、指标和跟踪都具有键 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]
}
}
环境和 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
的导出可以被以下组件消费
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能正确连接。请参阅链接的文档以获取更多详细信息。