Splunk APM、Lambda関数およびトレース
Lambda 関数は相当量のトレースデータを生成しているはずで、それを確認する必要があります。Lambda 関数のリソース定義で構成された環境変数と OpenTelemetry Lambda layer の組み合わせにより、Splunk APM で関数とトレースを表示する準備が整いました。
Splunk APM 概要で環境名を確認する
まず、Splunk APM が受信しているトレースデータからEnvironmentを認識していることを確認しましょう。これはmain.tfの Lambda 関数定義で設定したOTEL_RESOURCE_ATTRIBUTES変数の一部として設定したdeployment.nameです。これは先ほど実行したterraform applyコマンドの出力の 1 つでもありました。
Splunk Observability Cloud で:
左側のメインメニューから
APMボタンをクリックします。これにより Splunk APM 概要に移動します。Environment:ドロップダウンからあなたの APM 環境を選択します。- APM 環境は
PREFIX-lambda-shop形式になっているはずです。PREFIXは前提条件セクションで設定した環境変数から取得されます
- APM 環境は
メモ
トレースが Splunk APM に表示されるまで数分かかる場合があります。環境のリストにあなたの環境名が表示されるまで、ブラウザの更新ボタンを押してみてください
環境のサービスマップを表示する
Environment ドロップダウンから環境名を選択したら、Lambda 関数のサービスマップを確認できます。
- APM 概要ページの右側にある
Service Mapボタンをクリックします。これによりサービスマップビューに移動します。
producer-lambda関数とそのレコードを配置するために Kinesis ストリームに対して行っている呼び出しが表示されるはずです。
ワークショップの質問
あなたのconsumer-lambda関数はどうなっていますか?
Lambda 関数からのトレースを調査する
Tracesボタンをクリックしてトレースアナライザーを表示します。
このページでは、producer-lambda関数の OpenTelemetry Lambda layer から取り込まれたトレースを確認できます。
- リストからハイパーリンクされた
Trace IDをクリックして、調査するトレースを選択します。
producer-lambda関数が Kinesis ストリームにレコードを配置しているのが確認できます。しかし、consumer-lambda関数のアクションが見当たりません!
これはトレースコンテキストが伝播されていないためです。このワークショップの時点では、Kinesis サービスはトレースコンテキスト伝播をすぐには対応していません。分散トレースは Kinesis サービスで止まっており、そのコンテキストがストリームを通じて自動的に伝播されないため、それ以上先を見ることができません。
少なくとも、今はまだ…
次のセクションでこの問題にどう対処するか見ていきましょう。しかしその前に、後片付けをしましょう!
クリーンアップ
この自動計装演習の一部としてデプロイしたリソースはクリーンアップする必要があります。同様に、producer-lambdaエンドポイントに対してトラフィックを生成していたスクリプトも、まだ実行中であれば停止する必要があります。以下の手順に従ってクリーンアップを行ってください。
send_messageの停止
send_message.pyスクリプトがまだ実行中の場合は、次のコマンドで停止します:fg- これによりバックグラウンドプロセスがフォアグラウンドに移動します。
- 次に
[CONTROL-C]を押してプロセスを終了できます。
全ての AWS リソースを破棄する
Terraform は個々のリソースの状態をデプロイメントとして管理するのに優れています。定義に変更があっても、デプロイされたリソースを更新することもできます。しかし、一からやり直すために、リソースを破棄し、このワークショップの手動計装部分の一部として再デプロイします。
以下の手順に従ってリソースを破棄してください:
autoディレクトリにいることを確認します:pwd- 期待される出力は ~/o11y-lambda-workshop/auto です
autoディレクトリにいない場合は、以下のコマンドを実行します:cd ~/o11y-lambda-workshop/auto先ほどデプロイした Lambda 関数とその他の AWS リソースを破棄します:
terraform destroyEnter a value:プロンプトが表示されたらyesと応答します- これによりリソースが破棄され、クリーンな環境が残ります
このプロセスにより、私たちの活動の結果として作成されたファイルとディレクトリは残ります。それらについては心配する必要はありません。





