OpenTelemetry Collector采集日志时部分主机host.name字段始终为localhost的问题排查求助
OpenTelemetry Collector采集日志时部分主机host.name字段始终为localhost的问题排查求助
各位大佬,我碰到一个OpenTelemetry Collector的棘手问题,想请教下大家怎么排查:
我使用otelcol-contrib(v0.95.0)从多台主机采集系统日志,然后发送到自建的OpenObserve实例。目前的情况是,有2台主机的host.name字段能正确设置为实际的主机名,但其他所有主机的这个字段都一直显示localhost。而且我之前用v0.93.0版本时也是同样的问题。
主机环境列表
| Host | Kind | OS | Arch | Retrieved host.name |
|---|---|---|---|---|
| raspi2 | Raspberry Pi 2 Model B Rev 1.1 | Rasbian 11 | armv7l | raspi1 |
| raspi3 | Raspberry Pi 3 Model B Rev 1.2 | Debian 11 | aarch64 | raspi2 |
| raspi4a | Raspberry Pi 4 Model B | Debian 12 | aarch64 | localhost |
| raspi4b | Raspberry Pi 4 Model B | Debian 12 | aarch64 | localhost |
| raspi4c | Raspberry Pi 4 Model B | Debian 12 | aarch64 | localhost |
| serv1 | Hetzner VM (CX21) | Rocky Linux 9.3 | x86_64 | localhost |
| serv2 | Hetzner VM (CX21) | Rocky Linux 9.3 | x86_64 | localhost |
统一配置说明
所有主机都是通过Ansible统一配置的,Ansible能正确识别ansible_hostname变量,说明主机本身的主机名配置是没问题的;而且每台主机上执行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]
我的疑问
我想搞清楚:
host.name字段具体是通过什么逻辑获取的?- 为什么部分主机能拿到正确值,另一部分却始终是
localhost? - 是我的otelcol配置有问题,还是需要检查主机的特定系统配置来帮助otelcol获取正确的主机名?
备注:内容来源于stack exchange,提问作者Antwane
相关产品推荐
相关产品推荐

