Kotlin サービスのアプリケーションシグナル
はじめに
Kotlin Web アプリケーションのパフォーマンスと健全性の監視は、コンポーネント間の複雑な相互作用のため、課題となることがあります。 Kotlin Web サービスは通常、Java アーカイブ (jar) ファイルにビルドされ、Java が動作する任意のプラットフォームにデプロイできます。 これらのアプリケーションは、データベース、外部 API、キャッシュレイヤーなど、複数の相互接続されたコンポーネントを含む分散環境で動作することが多く、この複雑さにより平均解決時間 (MTTR) が大幅に増加する可能性があります。
このガイドでは、Linux EC2 サーバー上で実行されている Kotlin Web サービスを自動計測する方法を説明します。 CloudWatch Application Signals を有効にすることで、AWS Distro for OpenTelemetry (ADOT) Java 自動計測エージェントを使用して、コードを変更することなくアプリケーションからテレメトリを収集できます。 呼び出し量、可用性、レイテンシー、障害、エラーなどの主要なメトリクスを活用することで、アプリケーションサービスの現在の運用状態を迅速に確認してトリアージを行い、長期的なパフォーマンスとビジネス目標を達成しているかどうかを検証できます。
前提条件
- CloudWatch Application Signals と連携するための適切な IAM アクセス許可 を持つ Linux EC2 インスタン ス。このガイドでは Amazon Linux インスタンスを使用しているため、他のものを使用している場合はコマンドが若干異なる可能性があります。
- インスタンスに SSH で接続できること。
ソリューションの概要
大まかな手順は以下の通りです。
- CloudWatch Application Signals を有効化します。
- ktor web service を fat jar としてデプロイします。
- Web サービスから Application Signals を受信するように設定された CloudWatch エージェントをインストールします。
- ADOT 自動計装エージェントをダウンロードします。
- サービスを自動計装するために、kotlin サービス jar を java エージェントと一緒に実行します。
- テレメトリを生成するためにテストを実行します。
アーキテクチャ図
CloudWatch Application Signals の有効化
アカウントで手順 1: Application Signals の有効化 に従ってください。
Ktor Web サービスのデプロイ
Ktor は、Web サービスを作成するための人気のある Kotlin フレームワークです。 非同期サーバーサイドアプリケーションを素早く開始することができます。
作業ディレクトリを作成します
mkdir kotlin-signals && cd kotlin-signals
Ktor のサンプルリポジトリをクローンします
git clone https://github.com/ktorio/ktor-samples.git && cd ktor-samples/structured-logging
アプリケーションをビルドします
./gradlew build && cd build/libs
アプリケーションが実行できることをテストします
java -jar structured-logging-all.jar
サービスが正しくビルドされ実行された場合、ctrl + c
で停止できます