LoginSignup
3
2

InstanaでAWS Serverlessアプリを可視化しよう!Lambda編

Last updated at Posted at 2023-09-25

はじめに

本記事は、下記動画の手順を書き起こしたものです。
実際に動く画面を確認したい方はぜひご視聴ください。
今回利用している言語はPythonです、その他言語については公式ドキュメントを参照の上、適宜読み替えてお試しください。

Instanaは14日間のFree Trialが可能です。
Try Instana! > https://www.instana.com/trial/

検証用Lambdaの作成

AWS Lambdaのダッシュボードを開き、関数の作成 をクリックします。
image.png

任意の関数名を入力し、ランタイムは Python 3.9 を選択します。

image.png

動画撮影時点ではPython3.9までのサポートだったため。
Pythonの最新サポート状況は下記URLにてご確認ください。
https://www.ibm.com/docs/ja/instana-observability/current?topic=lambda-aws-native-tracing-python

詳細設定にて 関数URLを有効化 をONにし、認証タイプは NONE(デモ用に簡略化していますが、IAMでの認証を指定しても問題ありません) を指定します。
image.png

画面を下までスクロールし、関数の作成 をクリックします。

Lambdaが作成できたら関数URLのURLをクリックし Hello from Lambda! と表示されたらLambdaの動作確認完了です。
image.png

参考:Chromeで試した場合の画面
image.png

AWS Lambdaへの追加設定

Lambdaに設定する情報をInstanaのWebコンソールから入手します。
画面左の[•••] > [More] > [Agents] と進みます。
image.png

エージェント画面が表示されたら Installing Instana Agents をクリックします。
image.png

PLATFORMで AWS を選択し、Technologyで AWS Lambda を選択します。
Lambda runtimeは Python 2.7 and 3.x を選択します。
image.png

AWS Web Consoleセクションまでスクロールし、AWSのリージョンを指定します。
今回は東京リージョンにLambdaを作成したので ap-northeast-1 に変更します。
image.png

これで設定に必要な情報は準備できました。
以降の手順でこの画面の表示内容を使用しますので、このままページを開いておいてください。

1. レイヤーの設定

Instanaの画面でARNの文字列をコピー(右上のCopyの文字をクリック)します。
image.png

Lambdaの画面に戻り、コードタブの下までスクロールし レイヤーの追加 をクリックします。
image.png

レイヤー選択画面で ARNを指定 を選択し、テキストボックスに先ほどInstanaの画面でコピーしたARNの文字列を貼り付け 検証 をクリックします。
正しいARNを指定している場合、画像の様に説明などが表示されます。
問題なければ 追加 をクリックします。
image.png

2. ランタイムの設定

Instanaの画面でHandlerの文字列をコピー(右上のCopyの文字をクリック)します。
image.png

AWSの画面に戻り、コードタブの下までスクロールし 編集 をクリックします。
image.png

ハンドラの値を先ほどInstanaの画面でコピーした値で上書きし、下までスクロールし 保存 をクリックします。
image.png

3. 環境変数の設定

AWSの画面で[設定タブ] > [環境変数]へ移動し 編集 をクリックします。
image.png

環境変数の追加 を2回クリックし、入力欄を追加します。
image.png

それぞれのキーと値を入力し 保存 をクリックします。
Qiitaにもキー名は記載しますが、Instana側の画面にも表示されているのでそちらをコピーすると間違いなく確実です。

キー
INSTANA_ENDPOINT_URL Instanaの画面でコピー
INSTANA_AGENT_KEY Instanaの画面でコピー

image.png

以上でLambda側への設定は完了です。

動作確認

InstanaでLambdaの情報が取得できているか確認します。

Instanaの画面左上のアイコンをクリックし、Applicationsを選択します。
image.png

作成したLambdaの名前の明細が表示されるまで少し待ちます。
連携しているアプリケーションが多い場合は見つけるのが大変なので、右上の絞り込みにて AWS Lambda を選択するなどしてください。
表示がされたら、名前をクリックします。
image.png

Lambda側の設定が完了してから一度も実行していないのでまだ何も表示されていません。
image.png

エラー発生時

AWSの画面に戻り、コードタブにてソースコードを変更し意図的にエラーを発生させInstanaで確認してみます。
既存のソースコードの5行目にraise SyntaxErrorを追加し Deploy をクリックします。

sample
import json

def lambda_handler(event, context):
    # TODO implement
+   raise SyntaxError
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

image.png

Deployが完了したら再度関数URLから実行してみると、この様にエラーが発生していることがわかります。
image.png

Instanaの画面に戻り 画面をリロード もしくは (見切れていますが)右上のLiveをクリック してデータが表示されるのを待ちます。
少しすると以下の様にエラーの呼び出しがあったことを示す棒グラフが表示されます。
バーにマウスを持っていくと詳細が表示されます。
画像では、「呼び出しが1回あり、そのうち1回がエラーが発生した」ことがわかります。
image.png

無事にエラー発生時の動作を確認することができたので、正常時の動作も確認してみます。

正常時

AWSの画面に戻り、ソースコードを再度変更し先ほど仕込んだエラーをコメントアウトします。
既存のソースコードの5行目の先頭に#を追加し Deploy をクリックします。

sample
import json

def lambda_handler(event, context):
    # TODO implement
-   raise SyntaxError
+   # raise SyntaxError
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

image.png

Deployが完了したら何度か関数の呼び出しを行ってInstana側に反映されるのを待ちましょう。
少しすると画像の様に青いバーが表示されます。
200系のHTTPステータスコードが返ってきているのでエラーにはカウントされていないことがこの画面で確認できます。
image.png

正常系の動作確認もできましたので、手順は以上となります。

まとめ

すでにAWS Lambdaをお持ちの場合は、設定項目は以下の3点のみとなります。(ちょー簡単!)
(AWS側)レイヤーの設定
(AWS側)ランタイムの設定
(AWS側)環境変数の設定

参考

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2