Lambda関数のデプロイとトレースデータの生成
トレースデータを収集したい関数やサービスに手動計装を適用する方法がわかったので、Lambda関数を再度デプロイして、producer-lambda エンドポイントに対するトラフィックを生成していきましょう。
manual ディレクトリで Terraform を初期化する
新しいディレクトリにいるので、ここでもう一度Terraformを初期化する必要があります。
manualディレクトリにいることを確認します- 予想される出力は ~/o11y-lambda-workshop/manual です
manualディレクトリにいない場合は、次のコマンドを実行します次のコマンドを実行して、このディレクトリでTerraformを初期化します
Lambda 関数とその他の AWS リソースをデプロイする
それでは、これらのリソースを再度デプロイしましょう!
問題がないことを確認するために、terraform plan コマンドを実行します。
続いて、terraform apply コマンドを使用して main.tf ファイルからLambda関数とその他のサポートリソースをデプロイします
Enter a value: プロンプトが表示されたら yes と応答します
これにより、以下のような出力が得られます
見ての通り、base_urlの最初の部分とログループARN以外は、このワークショップの自動計装部分をこの同じ時点まで実行したときと出力は概ね同じはずです。
producer-lambda エンドポイント (base_url) にトラフィックを送信する
もう一度、name と superpower をメッセージとしてエンドポイントに送信します。これはトレースコンテキストとともに、Kinesisストリーム内のレコードに追加されます。
manualディレクトリにいることを確認します- 予想される出力は ~/o11y-lambda-workshop/manual です
manualディレクトリにいない場合は、次のコマンドを実行しますsend_message.pyスクリプトをバックグラウンドプロセスとして実行します次に、response.logsファイルの内容を確認して、producer-lambdaエンドポイントへの呼び出しが成功しているか確認します
メッセージが成功していれば、画面に表示される行の中に次の出力が表示されるはずです
失敗した場合は、次のように表示されます
重要
これが発生した場合は、ワークショップ進行役の一人に支援を求めてください。
Lambda 関数のログの確認
ログがどのようになっているか見てみましょう。
producer.logs ファイルを確認します
そして consumer.logs ファイルを確認します
ログを注意深く調べてください。
ワークショップの質問
違いに気づきましたか?
consumer-lambda ログからのトレース ID のコピー
今回は、consumer-lambdaのロググループが、我々が伝播した tracecontext とともに、メッセージを record としてログに記録しているのが確認できます。
トレースIDをコピーするには
Kinesis Messageログの1つを見てみましょう。その中にはdataディクショナリがあります- ネストされた
tracecontextディクショナリを見るために、dataをより詳しく見てください tracecontextディクショナリ内には、traceparentというキーと値のペアがありますtraceparentキーと値のペアには、私たちが探しているトレースIDが含まれています-で区切られた4つの値のグループがあります。トレースIDは2番目の文字グループです
- トレース ID をコピーして保存してください。 このワークショップの後のステップで必要になります
