使用 OpenTelemetry Collector + Elastic APM 在 Kibana 中顯示系統資訊 (with Elasticreseach)
大家好,我是無能。
我嘗試獲取系統資訊。
這是因為我學到了 OpenTelemetry,
❄ 使用 NixOS 和 Raspberry Pi 搭建家庭伺服器 | 第 5 部分:將 CPU 溫度作為指標獲取
也看過了,所以最終我希望有一天能實現獲取 CPU 溫度的目標...。
作為實現該目標的其中一步,我將嘗試一下。
安裝
由於我在上一篇文章中已經安裝了 Elasticresarch 和 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篇文章!)