我使用 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 检索正确的值?