AIイノベーションズ
Railway/Tutorials

RailwayにOpenTelemetryコレクターとバックエンドをデプロイする

RailwayにOpenTelemetryコレクターとバックエンドをデプロイして、アプリケーションを監視およびトレースします。

著者: AIイノベーションズ 阿部隼也X / Twitter

Railwayはこちら

RailwayにOpenTelemetryコレクターとバックエンドをデプロイする

このチュートリアルでは、Railwayを使用して、アプリケーションの可観測性(オブザーバビリティ)を向上させるためのOpenTelemetryスタックをセットアップする方法を説明します。

OpenTelemetryとは?

OpenTelemetry (OTel)は、テレメトリーデータ(メトリクス、ログ、トレース)を計測、生成、収集、エクスポートするためのオープンソースの標準およびツールのセットです。これにより、アプリケーションのパフォーマンスと動作を深く理解することができます。

このチュートリアルについて

このチュートリアルでは、以下のコンポーネントをRailwayにデプロイします。

  • バックエンドサービス: Jaeger(分散トレーシング用)、Zipkin(同じくトレーシング用)、Prometheus(メトリクス収集用)
  • OpenTelemetryコレクター: アプリケーションからテレメトリーデータを受け取り、処理し、適切なバックエンドにエクスポートします。
  • サンプルアプリケーション: テレメトリーデータを生成するExpress (Node.js)アプリ。

1. バックエンドサービスのデプロイ

Railwayのテンプレートマーケットプレイスを使用して、Jaeger、Zipkin、Prometheusをワンクリックでデプロイします。

Jaegerサービスの追加

Zipkinサービスの追加

Prometheusサービスの追加

2. OpenTelemetryコレクターのデプロイ

OpenTelemetryコレクターのリポジトリをフォークし、それをRailwayにデプロイします。コレクターの設定ファイル (otel-collector-config.yaml) で、各バックエンド(Jaeger, Zipkin, Prometheus)へのエクスポーターを設定します。

Open Telemetry Collectorリポジトリのフォーク

Open Telemetryサービスの追加

チェックポイント

この時点で、Jaeger、Zipkin、Prometheus、およびOTelコレクターがRailwayプロジェクトで実行されているはずです。

3. Expressアプリのビルドと計測

OpenTelemetry SDKを使用してテレメトリーを生成するように、Expressアプリケーションを計測します。

プロジェクトの作成と初期化

アプリのビルド

計測SDKのビルド

4. Expressアプリのデプロイ

空のサービスを作成し、環境変数を設定して、計測されたExpressアプリをRailwayにデプロイします。

空のサービスの作成と環境の設定

Railway CLIからのデプロイ

5. テストと確認

デプロイしたExpressアプリにリクエストを送信し、JaegerやZipkinのUIでトレースデータが表示されること、またPrometheusでメトリクスが収集されていることを確認します。

ボーナス - NextJS

同様の計測アプローチは、Next.jsなどの他のフレームワークにも適用できます。

役立つリソース

結論

これで、Railway上に完全なOpenTelemetry可観測性スタックが構築されました。これにより、アプリケーションのパフォーマンスをプロアクティブに監視し、問題が発生した際に迅速にトラブルシューティングを行うことができます。

Railwayはこちら

PR