使用 OpenTelemetry Collector + Elastic APM 在 Kibana 中顯示系統資訊 (with Elasticreseach)

5 min

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

大家好,我是無能。
我嘗試獲取系統資訊。
這是因為我學到了 OpenTelemetry,
❄ 使用 NixOS 和 Raspberry Pi 搭建家庭伺服器 | 第 5 部分:將 CPU 溫度作為指標獲取 也看過了,所以最終我希望有一天能實現獲取 CPU 溫度的目標...。
作為實現該目標的其中一步,我將嘗試一下。

安裝

由於我在上一篇文章中已經安裝了 Elasticresarch 和 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