OpenTelemetry Collector + Elastic APM でシステム情報をKibanaで表示する(with Elasticreseach)
4 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 /etc/elasticsearch/elasticsearch.yml
で
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true
を追記しておきます。
さてようやくopentelemetry-collector
のインストールをしましょう。 以下から.deb
パッケージを持ってきます。 https://github.com/open-telemetry/opentelemetry-collector-releases/releases
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
をいれます。
https://www.elastic.co/guide/en/apm/server/7.15/setup-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 /etc/apm-server/apm-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 /etc/supervisor/conf.d/otelcol.conf
[program:otelcol]
command=/usr/bin/otelcol --config /etc/otelcol/config.yaml
autostart=true
autorestart=true
stderr_logfile=/var/log/otelcol/otelcol.err.log
stdout_logfile=/var/log/otelcol/otelcol.out.log
user=otel
environment=OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4317"
OTEL_EXPORTER_OTLP_ENDPOINTに関して
Supervisor
で適応させます。
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start apm-server
sudo supervisorctl start otelcol
また、念の為にElasticservice
とkibana
も再起動してください。
ブラウザのKibanaから確認
正しくAPMサーバーと接続ができていればObservability -> APM
から確認出来るはずです。
またAnalytics -> Dashboard
からこんな感じに設定できます。
躓いたのですが
ここのTSVB
から
ここを選択すれば表示されます。また表示おかしい時はチャートの部分触ると表示されるタイムスタンプ勝手に変わっちゃってしまうので右上の
ここから時間軸を変えて見てください。
なんやかんや、ノリで触ったら半日消えました。
それではまた。
よろしくお願いします。(飲みに行ってサボってたから怒涛の3記事更新!)