OpenTelemetry Collector + Elastic APM でシステム情報をKibanaで表示する(with Elasticreseach)
3 min read
こんにちは、無能です。
システム情報をGetするためにやってみた。
OpenTelemetoryを教えて頂いたことのきっかけと
❄ NixOSとRaspberry Piで自宅server | Part 5 CPUの温度をmetricsとして取得 も見たので最終的には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-Severはこれ
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記事更新!)