使用 OpenTelemetry Collector + Elastic APM 在 Kibana 中显示系统信息 (与 Elasticsearch 一起)

5 min

language: ja bn en es hi pt ru zh-cn zh-tw

大家好,我是无能。
我尝试获取系统信息。
这是因为我了解了 OpenTelemetry,并且
❄ NixOS 和 Raspberry Pi 上的家庭服务器 | 第 5 部分 获取 CPU 温度作为指标 我也看了,所以最终有一天我想实现获取 CPU 温度...
作为实现这一目标的一个中间步骤,我来尝试一下。

安装

在上一篇文章中,我安装了 Elasticsearch 和 Kibana),所以这次我将安装OpenTelemetry CollectorElastic 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-servervim/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

另外,为了以防万一,请重启elasticsearchkibana

从浏览器中的 Kibana 进行确认

Image
如果正确连接到 APM 服务器,应该可以从Observability -> APM 进行确认。
此外,可以从Analytics -> Dashboard 进行如下设置。
Image

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

Related Posts