Fastly リアルタイムログ機能を Compute で活用するためのガイド
現在 Fastly では、コミットメントなしで Compute を試すことができる、無料トライアルキャンペーンを実施しています。エッジコンピューティングを実際に試してみたい方は、ぜひこの機会に無料トライアルをご利用ください。
Compute で WebAssembly (通称 Wasm) ベースのアプリケーションを構築し、Fastly エッジキャッシュを使用するには、VCL (Varnish Configuration Language) で CDN の動作を設定する方法から、従来型のソフトウェアを構築するのと同様に、Rust や JavaScript、AssemblyScript などを使用するプログラミングへのパラダイムシフトが必要です。
今まで VCL を使用してきた方も、Compute を初めて使う方も、効果的なトラブルシューティングや継続的な指標の取得のために、いずれは Wasm アプリケーションから診断テキストの出力を送信する方法を学ぶ必要があります。
Compute 上で Wasm を使用して構築されたアプリから出力をストリームする方法は、メッセージを取得・保存する送信先の種類に合わせて、2通りあります。
STDIO
stdout と stderr ファイル記述子への出力は、ホスト環境によって取得され、監視可能な場所に送信されます。これは、ターミナルやファイルへ出力がリダイレクトされる方法と似ています。Compute@ で「Log Tailing」と呼ばれているこの機能は、Fastly CLI によってサポートされています。Log Tailing 機能は、Wasm ベースのアプリからの未処理ランタイムエラーも取得・表示することができます。ログフレームワーク
Computeのログフレームワークは、形式的な構造体の追加、目的のコード化、出力の送信先システムの設定などをサポートしています。Fastly のログ・ストリーミング・プラットフォームで利用可能な統合機能のいずれかを使用して、ログメッセージを Apache Kafka、S3、Splunk などさまざまなシステムに送信できます。ログは、情報、警告、エラーの種類などの重要性に基づいて分類可能です。送信先に到達したログは、この分類または任意の基準によって自動 的に処理されます。
今回は、STDIO に出力したメッセージを Fastly CLI を使って監視するための基本的な手順のほか、ログ・ストリーミング・エンドポイントの設定、アプリでのログ送信、適切な送信先へのログ配信の確認方法などをご紹介します。ログストリーミングには、Apache Kafka プロトコルと互換性のあるサービスバスである Azure Event Hubs をログ集約ポイントとして使用します。別のログ集約ポイントを使用する場合は、ログストリーミングに関するドキュメントをご確認の上、ログエンドポイント設定を調整してください。
プロジェクトの初期設定
今回は、手順を分かりやすくするために CLI ツールのみを使用します。このチュートリアルでは、あらかじめ Fastly アカウントの作成および、Fastly CLI と Rust のインストールが完了していることを前提としています。まだアカウントをお持ちでない方は、こちらから作成してください。また、このチュートリアルでは Fastly CLI のバージョン 1.0.0 を使用しています。別バージョンをご利用の場合は、コマンドフラグが異なる場合がありますのでご注意ください。今回は Rust のみを使用しますが、手順の一部は JavaScript や AssemblyScript でも実行可能です。
まず、CLI トークンを作成します。アカウントの管理者として以下のコマンドを実行し、後続の CLI ツールの設定コマンド用の API トークンを生成します。その際、トークンに適切な有効期限 (日時) を設定してください。
fastly auth-token create --password=<your-Fastly-acct-password> \--name='My WASM API Token' --scope=global \--expires 2021-12-31T23:59:59Z
次のような出力が表示されます。
SUCCESS: Created token ‘<token-string>’ ...
引用符の間の文字列が、Fastly API トークンの値です。次に、以下のコマンドを実行し、プロンプトが表示されたら作成したトークンを指定します。
fastly configure
これで、Fastly サービスと Compute の Wasm アプリケーションを作成、設定、管理する準備ができました。
以下のコマンドを実行し、Wasm ベースのサービスを作成します。
fastly service create --name=MyService --type=wasm
なお、このコマンドでは従来の VCL ベースのサービスではなく、Wasm ベースの Fastly サービスが作成されます。この新しいサービスは、Fastly のコントロールパネルでも確認することができます。
サービス設定を有効化するには、最低でも専用のドメイン名が必要になります。そのためには、まず新しいサービスのサービス ID が必要です。以下のコマンドを実行し、サービス ID を取得します。
fastly service list