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 destroy
Enter a value:
プロンプトが表示されたらyes
と応答します- これによりリソースが破棄され、クリーンな環境が残ります
このプロセスにより、私たちの活動の結果として作成されたファイルとディレクトリは残ります。それらについては心配する必要はありません。