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"] | no |
override | bool | 配置是否应该覆盖或保留现有的资源属性。 | true | no |
timeout | duration | 所有指定检测器必须完成的超时。 | "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,以下顺序是推荐的
块
以下块可以在 otelcol.processor.resourcedetection
的定义中使用:
层次结构 | 块 | 描述 | 必选 |
---|---|---|---|
output | output | 配置要将接收到的遥测数据发送到何处。 | yes |
ec2 | ec2 | no | |
ecs | ecs | no | |
eks | eks | no | |
elasticbeanstalk | elasticbeanstalk | no | |
lambda | lambda | no | |
azure | azure | no | |
aks | aks | no | |
consul | consul | no | |
docker | docker | no | |
gcp | gcp | no | |
heroku | heroku | no | |
system | system | no | |
openshift | openshift | no | |
kubernetes_node | kubernetes_node | no | |
debug_metrics | debug_metrics | 配置该组件生成的指标以监控其状态。 | no |
output
该 output
块配置了一组组件,以将结果遥测数据转发到。
以下参数是被支持的:
名称 | 类型 | 描述 | 默认值 | 必选 |
---|---|---|---|---|
日志 | otelcol.Consumer 列表 | 发送日志的消费者列表。 | [] | no |
度量指标 | otelcol.Consumer 列表 | 发送度量指标的消费者列表。 | [] | no |
跟踪信息 | otelcol.Consumer 列表 | 发送跟踪信息的消费者列表。 | [] | no |
必须指定 output
块,但所有其参数都是可选的。默认情况下,遥测数据将被丢弃。按照相应的配置 metrics
、logs
和 traces
参数,以将遥测数据发送到其他组件。
debug_metrics 块
debug_metrics
块配置生成以监控该组件状态的度量指标。
以下参数是被支持的:
名称 | 类型 | 描述 | 默认值 | 必选 |
---|---|---|---|---|
disable_high_cardinality_metrics | 布尔型 | 是否禁用某些高基数度量指标。 | true | no |
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 实例元数据 API 和 AWS SDK for Go 从 EC2 实例元数据 API 读取资源信息。
ec2
块支持以下属性
属性 | 类型 | 描述 | 默认值 | 必选 |
---|---|---|---|---|
tags | list(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 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.availability_zone | 切换 cloud.availability_zone 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.platform | 切换 cloud.platform 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.provider | 切换 cloud.provider 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.region | 切换 cloud.region 资源属性。默认设置为 enabled 为 true 。 | no |
host.id | 切换 host.id 资源属性。默认设置为 enabled 为 true 。 | no |
host.image.id | 切换 host.image.id 资源属性。默认设置为 enabled 为 true 。 | no |
host.name | 切换 host.name 资源属性。默认设置为 enabled 为 true 。 | no |
host.type | 切换 host.type 资源属性。默认设置为 enabled 为 true 。 | 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 资源属性。默认设置为 enabled 为 true 。 | no |
aws.ecs.launchtype | 切换 aws.ecs.launchtype 资源属性。默认设置为 enabled 为 true 。 | no |
aws.ecs.task.arn | 切换 aws.ecs.task.arn 资源属性。默认设置为 enabled 为 true 。 | no |
aws.ecs.task.family | 切换 aws.ecs.task.family 资源属性。默认设置为 enabled 为 true 。 | no |
aws.ecs.task.id | 切换 aws.ecs.task.id 资源属性。默认设置为 enabled 为 true 。 | no |
aws.ecs.task.revision | 切换 aws.ecs.task.revision 资源属性。默认设置为 enabled 为 true 。 | no |
aws.log.group.arns | 切换 aws.log.group.arns 资源属性。默认设置为 enabled 为 true 。 | no |
aws.log.group.names | 切换 aws.log.group.names 资源属性。默认设置为 enabled 为 true 。 | no |
aws.log.stream.arns | 切换 aws.log.stream.arns 资源属性。默认设置为 enabled 为 true 。 | no |
aws.log.stream.names | 切换 aws.log.stream.names 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.account.id | 切换 cloud.account.id 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.availability_zone | 切换 cloud.availability_zone 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.platform | 切换 cloud.platform 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.provider | 切换 cloud.provider 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.region | 切换 cloud.region 资源属性。默认设置为 enabled 为 true 。 | no |
eks
eks
块为 Amazon EKS 添加资源属性。
eks
块支持以下块
块 | 描述 | 必选 |
---|---|---|
resource_attributes | 配置要添加的资源属性。 | no |
eks > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必选 |
---|---|---|
cloud.platform | 切换 cloud.platform 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.provider | 切换 cloud.provider 资源属性。默认设置为 enabled 为 true 。 | 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 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.provider | 切换 cloud.provider 资源属性。默认设置为 enabled 为 true 。 | no |
deployment.envir | 切换 deployment.envir 资源属性。默认设置为 enabled 为 true 。 | no |
service.instance | 切换 service.instance 资源属性。默认设置为 enabled 为 true 。 | no |
service.version | 切换 service.version 资源属性。默认设置为 enabled 为 true 。 | 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 资源属性。默认设置为 enabled 为 true 。 | no |
aws.log.stream.names | 切换 aws.log.stream.names 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.platform | 切换 cloud.platform 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.provider | 切换 cloud.provider 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.region | 切换 cloud.region 资源属性。默认设置为 enabled 为 true 。 | no |
faas.instance | 切换 faas.instance 资源属性。默认设置为 enabled 为 true 。 | no |
faas.max_memory | 切换 faas.max_memory 资源属性。默认设置为 enabled 为 true 。 | no |
faas.name | 切换 faas.name 资源属性。默认设置为 enabled 为 true 。 | no |
faas.version | 切换 faas.version 资源属性。默认设置为 enabled 为 true 。 | no |
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 | 配置要添加的资源属性。 | no |
azure
块支持以下属性
属性 | 类型 | 描述 | 默认值 | 必选 |
---|---|---|---|---|
tags | list(string) | 可以指定一个正则表达式列表,以匹配标签键以将其作为资源属性添加。 | [] | no |
azure > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必选 |
---|---|---|
azure.resourcegroup.name | 切换 azure.resourcegroup.name 资源属性。默认设置为 enabled 为 true 。 | no |
azure.vm.name | 切换 azure.vm.name 资源属性。默认设置为 enabled 为 true 。 | no |
azure.vm.scaleset.name | 切换 azure.vm.scaleset.name 资源属性。默认设置为 enabled 为 true 。 | no |
azure.vm.size | 切换 azure.vm.size 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.account.id | 切换 cloud.account.id 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.platform | 切换 cloud.platform 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.provider | 切换 cloud.provider 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.region | 切换 cloud.region 资源属性。默认设置为 enabled 为 true 。 | no |
host.id | 切换 host.id 资源属性。默认设置为 enabled 为 true 。 | no |
host.name | 切换 host.name 资源属性。默认设置为 enabled 为 true 。 | 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 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.provider | 切换 cloud.provider 资源属性。默认设置为 enabled 为 true 。 | 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 |
token | secret | 一个请求级别的ACL令牌,它覆盖Consul代理的默认(空)令牌。 | "" | no |
namespace | 字符串 | 要随请求发送的命名空间名称。 | "" | no |
meta | list(string) | 允许列表,使用作为资源属性的Consul元数据键。 | [] | no |
token
仅在Consul的ACL系统启用时才需要。
consul
块支持以下块:
块 | 描述 | 必选 |
---|---|---|
resource_attributes | 配置要添加的资源属性。 | no |
consul > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必选 |
---|---|---|
cloud.region | 切换 cloud.region 资源属性。默认设置为 enabled 为 true 。 | no |
host.id | 切换 host.id 资源属性。默认设置为 enabled 为 true 。 | no |
host.name | 切换 host.name 资源属性。默认设置为 enabled 为 true 。 | 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 资源属性。默认设置为 enabled 为 true 。 | no |
os.type | 切换os.type 资源属性。默认设置为 enabled 为 true 。 | 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 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.availability_zone | 切换 cloud.availability_zone 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.platform | 切换 cloud.platform 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.provider | 切换 cloud.provider 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.region | 切换 cloud.region 资源属性。默认设置为 enabled 为 true 。 | no |
faas.id | 切换faas.id 资源属性。默认设置为 enabled 为 true 。 | no |
faas.instance | 切换 faas.instance 资源属性。默认设置为 enabled 为 true 。 | no |
faas.name | 切换 faas.name 资源属性。默认设置为 enabled 为 true 。 | no |
faas.version | 切换 faas.version 资源属性。默认设置为 enabled 为 true 。 | no |
gcp.cloud_run.job.execution | 切换gcp.cloud_run.job.execution 资源属性。默认设置为 enabled 为 true 。 | no |
gcp.cloud_run.job.task_index | 切换gcp.cloud_run.job.task_index 资源属性。默认设置为 enabled 为 true 。 | 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 资源属性。默认设置为 enabled 为 true 。 | no |
host.name | 切换 host.name 资源属性。默认设置为 enabled 为 true 。 | no |
host.type | 切换 host.type 资源属性。默认设置为 enabled 为 true 。 | no |
k8s.cluster.name | 切换 k8s.cluster.name 资源属性。默认设置为 enabled 为 true 。 | no |
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
:
- 通过使用
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
: 项目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 dyno元数据派生的资源属性。
heroku
块支持以下块
块 | 描述 | 必选 |
---|---|---|
resource_attributes | 配置要添加的资源属性。 | no |
heroku > resource_attributes
resource_attributes
块支持以下块
块 | 描述 | 必选 |
---|---|---|
cloud.provider | 切换 cloud.provider 资源属性。默认设置为 enabled 为 true 。 | no |
heroku.app.id | 切换heroku.app.id 资源属性。默认设置为 enabled 为 true 。 | no |
heroku.dyno.id | 切换heroku.dyno.id 资源属性。默认设置为 enabled 为 true 。 | no |
heroku.release.commit | 切换heroku.release.commit 资源属性。默认设置为 enabled 为 true 。 | no |
heroku.release.creation_timestamp | 切换heroku.release.creation_timestamp 资源属性。默认设置为 enabled 为 true 。 | no |
service.instance.id | 切换service.instance.id 资源属性。默认设置为 enabled 为 true 。 | no |
service.name | 切换service.name 资源属性。默认设置为 enabled 为 true 。 | no |
service.version | 切换 service.version 资源属性。默认设置为 enabled 为 true 。 | no |
当Heroku dyno元数据处于活动状态时,Heroku应用程序通过环境变量发布信息。我们将这些环境变量映射到如下资源属性
dyno元数据环境变量 | 资源属性 |
---|---|
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 | list(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 资源属性。默认设置为 enabled 为 true 。 | no |
os.description | 切换 os.description 资源属性。默认情况下将 enabled 设置为 false 。 | no |
os.type | 切换os.type 资源属性。默认设置为 enabled 为 true 。 | no |
openshift
《code>openshift 块通过查询 OpenShift 和 Kubernetes API 来检索各种资源属性。
《code>openshift 块支持以下属性
属性 | 类型 | 描述 | 默认值 | 必选 |
---|---|---|---|---|
address | 字符串 | OpenShift API 服务器地址。 | 见下文 | no |
token | 字符串 | 用于在 OpenShift API 服务器上识别的令牌。 | "" | no |
需要“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
和服务令牌的确定。
《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 | 布尔型 | 是否要在证书颁发机构旁边加载系统证书颁发机构池。 | false | no |
insecure | 布尔型 | 连接到配置的服务器时禁用 TLS。 | no | |
key_file | 字符串 | TLS 证书密钥路径。 | no | |
key_pem | secret | 用于客户端身份验证的密钥 PEM 编码文本。 | no | |
max_version | 字符串 | 连接可接受的最大 TLS 版本。 | "TLS 1.3" | no |
min_version | 字符串 | 连接可接受的最小 TLS 版本。 | "TLS 1.2" | no |
cipher_suites | list(string) | TLS 传输可以使用的 TLS 密码套件列表。 | [] | no |
reload_interval | duration | 证书重新加载的时间间隔。 | "0s" | no |
server_name | 字符串 | 当设置时,验证服务器证书的域名。 | no |
如果服务器不支持 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 。 | no |
cloud.provider | 切换 cloud.provider 资源属性。默认设置为 enabled 为 true 。 | no |
cloud.region | 切换 cloud.region 资源属性。默认设置为 enabled 为 true 。 | no |
k8s.cluster.name | 切换 k8s.cluster.name 资源属性。默认设置为 enabled 为 true 。 | 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”权限
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 资源属性。默认设置为 enabled 为 true 。 | no |
k8s.node.uid | 切换 k8s.node.uid 资源属性。默认设置为 enabled 为 true 。 | no |
通用配置
资源属性配置
此块描述了如何配置资源属性,例如 k8s.node.name
和 azure.vm.name
。每个块都使用同一组属性进行配置。唯一的区别可能在于这些属性之间的默认值。例如,某些资源属性默认将 enabled
设置为 true
,而其他则不是。
以下属性受支持
属性 | 类型 | 描述 | 默认值 | 必选 |
---|---|---|---|---|
enabled | bool | 切换是否将资源属性添加到跨度、日志或指标资源。 | 见下文 | no |
要查看 enabled
的默认值,请参阅上面列出资源属性块的章节表。在“描述”列中会说明...
默认设置为
enabled
为true
。
… 或
默认情况下将
enabled
设置为false
。
导出字段
以下字段被导出,可被其他组件引用
名称 | 类型 | 描述 |
---|---|---|
input | otelcol.Consumer | 其他组件可用于发送遥测数据的值。 |
input
接受任何遥测信号类型的 OTLP 格式的 otelcol.Consumer
数据
- 日志
- 度量指标
- 跟踪信息
组件健康状态
otelcol.processor.resourcedetection
只有在提供无效配置时才会报告为不健康。
调试信息
otelcol.processor.resourcedetection
不公开任何特定组件的调试信息。
示例
环境检测器
如果您设置了值为 OTEL_RESOURCE_ATTRIBUTES=TestKey=TestValue
的 OTEL_RESOURCE_ATTRIBUTES
环境变量,那么所有日志、指标和跟踪都会有键为 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
的导出可以被以下组件消费
注意
连接某些组件可能没有意义,或者组件可能需要进一步配置以正确连接。请参阅相关文档以获取更多详细信息。