色々なOpenTelemetry対応のオブザーバビリティバックエンドを触るにあたってクライアントになる分散Webサービスがほしくて作った。
トレースとログのみ対応。メトリクスはまだ。
名前が紛らわしいが、Next.jsのOpenTelemetry対応を試すためのリポジトリではない。@vercel/otelは使っていない。
- ./frontend
- Next.js ポート3000
- /でレンダリングされるページがサーバーサイドフェッチでbackendを叩く
- ./backend
- Next.js(めんどくさかったので) ポート3001
- /animalsでデータベース上のanimalsをContent-Type: application/jsonで返す
- ./db
- docker-composeでpostgresが立ち上がる。backendから叩かれる。ポート2345
- ./otel-collector
- docker-composeでOpenTelemetry Collectorが立ち上がる。 frontend/backendのサーバー2つからOTLPを受ける。ポート4318
- config.ymlなどを自由にさわって、試したいバックエンドを試す
- exporterをいっぱい定義すれば色々なところに同時並行でおくれる
- オブザーバビリティバックエンド次第ではDockerfileを変えないとダメ(イメージ指定があるとか)
pnpm install
とかは適宜
- otel-collector/config.ymlをいじって好きなバックエンドに送る設定をする
- otel-collector/.envファイルを作るとよい
1
docker-compose up -d
でOpenTelemetry CollectorとPostgresを立ち上げる
- otel-collector/.envファイルを作るとよい
1
- backendで
pnpm migrate
してPostgresにスキーマ適用する(申し訳ないが) - 適当な方法でPostgresにつないでanimalsテーブルに適当なレコードをつくる(申し訳ないが)
- 接続文字列はbackend/.env参照
- backend、frontendで
pnpm dev
- localhost:3000にアクセスすると画面にanimalsテーブルの内容が出る。オブザーバビリティバックエンドにトレースとログが送られていることを確認
- うまくいかなければ一旦logging(debug)とかでCollector上でstdoutしてもいいかも