使用 OpenTelemetry Collector + Elastic APM 在 Kibana 中显示系统信息 (与 Elasticsearch 一起)
大家好,我是无能。
我尝试获取系统信息。
这是因为我了解了 OpenTelemetry,并且
❄ NixOS 和 Raspberry Pi 上的家庭服务器 | 第 5 部分 获取 CPU 温度作为指标
我也看了,所以最终有一天我想实现获取 CPU 温度...
作为实现这一目标的一个中间步骤,我来尝试一下。
安装
在上一篇文章中,我安装了 Elasticsearch 和 Kibana),所以这次我将安装OpenTelemetry Collector 和 Elastic APM。
此外,这次我仍然使用熟悉的Supervisor 来管理守护进程,所以如果按照文章的步骤操作,任何人应该都能成功...是的。
在此之前,我将配置 elastic 用户。
cd /usr/share/elasticsearch/
bin/elasticsearch-setup-passwords interactive
这将创建几个与 elastic 相关的用户,所以请务必设置好密码。
然后,在vim/elasticsearasticsearch.yml 中
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true
添加以下内容。
现在,终于让我们安装opentelemetry-collector。从以下链接获取.deb 包。
httpithub.cen-telemetentelemetry-collector-releasleases
wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.109.0/otelcol_0.109.0_linux_amd64.deb
sudo dpkg -i otelcol_0.109.0_linux_amd64.deb
接下来,安装Elastic APM Server。
httpww.elastic.i/arvtup-repositories.html
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo update-rc.d apm-server defaults 95 10
接下来配置apm-server。vim/apm-servm-server.yml
apm-server:
host: "0.0.0.0:8200"
protocol: "http"
username: "elastic"
password: "elastic用户密码"
rum:
enabled: true
ilm:
enabled: "auto"
output.elasticsearch:
username: "elastic"
password: "elastic用户密码"
instrumentation:
enabled: true
setup.kibana:
host: "kibana:5601"
现在才说,这个配置对吗...
然后,配置opentelemetry-collector。由于会进行大量更改,请先备份再编辑。
sudo cp -p /etc/otelcol/config.yaml /etc/otelcol/bak.config.yaml
sudo vim /etc/otelcol/config.yaml
receivers:
hostmetrics:
collection_interval: 10s
scrapers:
cpu:
memory:
disk:
filesystem:
network:
load:
paging:
processors:
batch:
exporters:
otlp:
endpoint: "localhost:8200"
tls:
insecure: true
service:
pipelines:
metrics:
receivers: [hostmetrics]
processors: [batch]
exporters: [otlp]
telemetry:
logs:
level: "info"
metrics:
level: "detailed"
address: "0.0.0.0:8888"
特别让我卡住的是insecure: true 这一行,如果不添加它,无论如何都无法成功...
虽然在init.d 中创建了守护进程脚本,但它无法正常工作,所以我将使用Supervisor 来启动它。
关于 command 的守护进程执行,请务必使用which 确认并使用正确的路径。
这是 APM-Server 的配置
sudo cat /etc/supervisor/conf.d/apm-server.conf
[program:apm-server]
command=/usr/bin/apm-server -e -c /etc/apm-server/apm-server.yml
autostart=true
autorestart=true
redirect_stderr=true
stderr_logfile=/var/log/apm-server/apm-server.error.log
stdout_logfile=/var/log/apm-server/apm-server.out.log
user=apm-server
这是 opentelemetry-collector 的配置
sudo cat/supervisnfelcol.conf
[program:otelcol]
commanr/belcol --confic/otelcnfig.yaml
autostart=true
autorestart=true
stderr_logfilr/lelcelcol.err.log
stdout_logfilr/lelcelcol.out.log
user=otel
environment=OTEL_EXPORTER_OTLP_ENDPOINT="httocalhost:4317"
关于 OTEL_EXPORTER_OTLP_ENDPOINT
使用Supervisor 应用配置。
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start apm-server
sudo supervisorctl start otelcol
另外,为了以防万一,请重启elasticsearch 和kibana。
从浏览器中的 Kibana 进行确认

如果正确连接到 APM 服务器,应该可以从Observability -> APM 进行确认。
此外,可以从Analytics -> Dashboard 进行如下设置。
我遇到了一个问题,
这里的TSVB
,然后
选择这里即可显示。另外,如果显示异常,触摸图表部分会导致显示的时间戳自动改变,所以请从右上角的
这里更改时间轴查看。
总之,随便摸索了一下,半天就过去了。
那么,下次再见。
请多多关照。(因为去喝酒偷懒了,所以一口气更新了3篇文章!)