OpenTelemetry 收集器 - host.name 始终为 localhost

OpenTelemetry 收集器 - host.name 始终为 localhost

我使用 otelcol-contrib (v0.95.0) 从多个主机检索系统日志并将它们发送到自托管的 OpenObserve 实例。对于 2 个主机,该字段host.name已正确设置为正确的主机名,但对于所有其他主机,它始终将“localhost”作为值。使用 otelcol-contrib 0.93.0 的先前设置也观察到了相同的行为。

以下是主机列表:

主持人 种类 操作系统 检索到的主机名
raspi2 Raspberry Pi 2 型号 B 修订版 1.1 拉美裔 11 armv7l raspi1
raspi3 Raspberry Pi 3 型号 B 修订版 1.2 Debian 11 一个arch64 raspi2
raspi4a Raspberry Pi 4 型号 B Debian 12 一个arch64 本地主机
raspi4b Raspberry Pi 4 型号 B Debian 12 一个arch64 本地主机
raspi4c Raspberry Pi 4 型号 B Debian 12 一个arch64 本地主机
服务1 赫兹纳 VM (CX21) Rocky Linux 9.3 x86_64 本地主机
服务2 赫兹纳 VM (CX21) Rocky Linux 9.3 x86_64 本地主机

所有这些主机都以相同的方式配置,使用 ansible(并且 Ansible 在变量中检测正确的主机名ansible_hostname)。

otelcol-contrib 配置文件如下:

receivers:
  filelog/std:
    include: [ /var/log/**log ]

processors:
  resourcedetection/system:
    detectors: ["system"]
    system:
      hostname_sources: ["os"]
  memory_limiter:
    check_interval: 1s
    limit_percentage: 75
    spike_limit_percentage: 15
  batch:
    send_batch_size: 10000
    timeout: 10s

extensions:
  zpages: {}
  memory_ballast:
    size_mib: 512

exporters:
  otlphttp/openobserve:
    endpoint: {{ openobserve_url }}
    headers:
      Authorization: "Basic {{ openobserve_api_key }}"

service:
  extensions: [zpages, memory_ballast]
  pipelines:
    logs:
      receivers: [filelog/std]
      processors: [resourcedetection/system, memory_limiter, batch]
      exporters: [otlphttp/openobserve]

在每个主机上,该命令hostname都会返回正确的值。

那么,如何host.name检索?为什么 otelcol 在某些主机上检索到值,localhost而在其他主机上检索到正确的值?我的配置文件中是否有无效的内容,或者我应该检查某些特定于主机的配置以帮助 otelcol 检索正确的值?

相关内容