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は前提条件セクションで設定した環境変数から取得されます
メモ

トレースが Splunk APM に表示されるまで数分かかる場合があります。環境のリストにあなたの環境名が表示されるまで、ブラウザの更新ボタンを押してみてください

Splunk APM, Environment Name Splunk APM, Environment Name

環境のサービスマップを表示する

Environment ドロップダウンから環境名を選択したら、Lambda 関数のサービスマップを確認できます。

  • APM 概要ページの右側にあるService Mapボタンをクリックします。これによりサービスマップビューに移動します。

Splunk APM、サービスマップボタン Splunk APM、サービスマップボタン

producer-lambda関数とそのレコードを配置するために Kinesis ストリームに対して行っている呼び出しが表示されるはずです。

Splunk APM、サービスマップ Splunk APM、サービスマップ

ワークショップの質問

あなたのconsumer-lambda関数はどうなっていますか?

Lambda 関数からのトレースを調査する

  • Tracesボタンをクリックしてトレースアナライザーを表示します。

Splunk APM、トレースボタン Splunk APM、トレースボタン

このページでは、producer-lambda関数の OpenTelemetry Lambda layer から取り込まれたトレースを確認できます。

Splunk APM、トレースアナライザー Splunk APM、トレースアナライザー

  • リストからハイパーリンクされたTrace IDをクリックして、調査するトレースを選択します。

Splunk APM、トレースとスパン Splunk APM、トレースとスパン

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と応答します
    • これによりリソースが破棄され、クリーンな環境が残ります

このプロセスにより、私たちの活動の結果として作成されたファイルとディレクトリは残ります。それらについては心配する必要はありません。