はじめに
オブザーバビリティ界隈では、ますますOpenTelemetryの人気が上がっていますが、本記事ではさくっとバックエンドの監視ツールとしてElasticを試してみる方法を紹介します。
OpenTelemetryのDemoアプリケーションを使います。Demoアプリケーションのバージョン1.5.0で動作確認しているので、それを使う前提です。
https://opentelemetry.io/docs/demo
前提
- 4 GB RAM のパソコンがあればかろうじて動くと思います。(公式的な推奨は6GBか8GBだったとかだったと思います)
- Docker Compose v2 以上が必要です。
- Elastic環境はv8の新しめのバージョンであれば使えると思いますが、今回は8.10でやっています。Elastic Cloudを使うと非常に楽に環境を作って消すことができます。
手順
手順1. v1.5.0のコードをダウンロードし、docker-compose upでまず起動確認してください。
git clone https://github.com/open-telemetry/opentelemetry-demo.git --branch 1.5.0 --single-branch opentelemetry-demo-1.5.0
cd opentelemetry-demo-1.5.0
docker-compose up --no-build -d
手順2. KibanaのAPM画面からAdd dataをクリックします。
手順3. OTEL_EXPORTER_OTLP_ENDPOINT と OTEL_EXPORTER_OTLP_HEADERSの値をコピーしてメモしてください。
手順4. 1.でダウンロードしたコードのsrc/otelcollector/otelcol-config-extras.ymlをエディタで開き、以下をコピーしてください。
# Copyright The OpenTelemetry Authors
# SPDX-License-Identifier: Apache-2.0
# extra settings to be merged into OpenTelemetry Collector configuration
# do not delete this file
exporters:
logging:
loglevel: warn
otlp/elastic:
endpoint: "<ELASTIC_APM_SERVER_URL>"
headers:
Authorization: "Bearer <ELASTIC_APM_SECRET_TOKEN>"
processors:
memory_limiter:
check_interval: 1s
limit_mib: 2000
batch:
service:
pipelines:
traces:
receivers: [otlp]
exporters: [logging, otlp/elastic]
metrics:
receivers: [otlp]
exporters: [logging, otlp/elastic]
logs:
receivers: [otlp]
exporters: [logging, otlp/elastic]
手順5. メモしておいてURLとトークンを上記の と へ置き換えてください。(トークンは: Authorization: "Bearer QlXHQrkIEFY6IMiNCl" のような形となります。)
手順6.
docker-compose up -d
かdocker-compose restart otelcol
でコンフィグを反映させます。
どうしてもメモリが足りない! という場合、いくつかサービスを減らしたこちらのdocker-compose.ymlを試してみてください。
https://gist.github.com/nobuhikosekiya/428be2c7339d5821bdfc65eb63332e1e