Ruby のLambda関数に対するトレースの設定
Instana の AWS Lambda トレースを有効にして、パフォーマンスを監視し、問題を検出し、 Ruby ベースの AWS Lambda の実行状況を可視化します。
詳細については、 AWS Lambda tracing を参照してください。
サポートされるランタイム
- Ruby 3.3
- Ruby 3.2
- Ruby 3.1
前提条件
Lambdaの監視用に AWS エージェントを設定し、 Instana が AWS Lambda ランタイム内部からは収集できないバージョン情報や一部のランタイムメトリクスの収集を確実に行えるようにします。
AWS Lambda 関数の設定
以下の設定オプションのいずれかを使用することで、Lambda関数のトレースを有効にできます:
- Instana のLambdaレイヤーの使用 :これはトレースを有効にするための推奨される方法です。
- gem
instanaの手動インストール : FedRAMP-compliant 環境などの制限のある環境では、 Instana Ruby Tracer gemを手動でインストールすることができます。
Ruby のLambda関数でトレース機能を有効にする
Lambda関数のトレース機能は、 AWS のWebコンソール、または以下の AWS 管理ツールのいずれかを使用して有効にできます:
- AWS コマンドラインインターフェース(CLI)
- AWS Cloud Development Kit (CDK)
- AWS CloudFormation テンプレート
- Terraform またはその他のインフラストラクチャ・アズ・コード(IaC)ツール
AWS のWebコンソールを使用してトレースを有効にする
AWS のWebコンソールで Ruby のLambda関数のトレースを有効にするには、以下の手順を実行してください:
関数に Instana のLambdaレイヤーを追加します:
Lambda 関数の設定ページで、 「レイヤー」 をクリックします。
図 1. Lambdaレイヤー [ レイヤー] ボックスで、 [レイヤーを追加] をクリックします。
図 2. 層の追加 「 レイヤーの追加」 ページで、レイヤーのソースとして 「ARNを指定」 オプションを選択します。
「ARNを指定 」フィールドに、ご利用のリージョンに対応する「 Instana 」LambdaレイヤーのARNをコピーして貼り付けてください。 「 Instana 」Lambdaレイヤーに対応するARNは、 「 Instana 」 の「Lambdaレイヤー」セクションで確認できます。
追加 をクリックします。
図 3. Instana の「 Ruby 」レイヤーを追加
ハンドラ関数を実装する:
次の例に示すように、 Ruby のラムダ関数を `
Instana.serverless.wrap_awsblock` で囲み、イベントとコンテキストを引数として渡します。 このラッパーは、Lambdaの呼び出しに対して自動的にspanを生成し、トレースコンテキストを処理します。require 'bundler/setup' require 'json' require 'instana' def lambda_handler(event:, context:) Instana.serverless.wrap_aws(event, context) do # Your original Lambda function code goes here { statusCode: 200, body: { message: "Hello World!", }.to_json } end endラッパー方式を採用すれば、既存のハンドラ関数の名前を維持したまま、 Instana のトレース機能を追加することができます。 AWS コンソールでLambdaハンドラーの設定を変更する必要はありません。
環境変数を設定します。
以下の環境変数を追加します。
INSTANA_ENDPOINT_URL: サーバーレス監視のエンドポイント。 該当するリージョン用の、https://serverless-で始まる適切な値を使用していることを確認してください。INSTANA_AGENT_KEY: エージェントキー。LAMBDA_HANDLER: デフォルトのハンドラーを使用していない場合lambda_function.lambda_handler、独自のハンドラー。
これらの環境変数の正しい値は、 Instana のUIからも確認できます。 これらの環境変数の正しい値を取得するには、 [データソース] > [エージェントのインストール ] > [ AWS Lambda ] をクリックします。
AWS CLI を使用してトレースを有効にする
以下の例は、 AWS Lambda 関数における Instana との連携を自動化したい場合に、出発点として活用できる AWS のCLIコマンドを示しています:
# Do not copy and paste this verbatim!
# It will overwrite any previously defined collection of layers and
# environment variables.
aws --region $YOUR_REGION lambda update-function-configuration \
--function-name $YOUR_LAMBDA_FUNCTION_NAME \
--layers $INSTANA_LAYER_ARN \
--environment ""Variables={INSTANA_ENDPOINT_URL=... , INSTANA_AGENT_KEY=... , LAMBDA_HANDLER=...}""
gemを手動 instana でインストールする
Instana のLambdaレイヤーを使用する代わりに、 Instana の Ruby Tracer gemを手動でインストールすることも可能です。 このオプションは、 FedRAMP-compliant 環境などの制限のある環境において推奨されます。
Ruby のLambda関数のトレースを有効にするには、以下の手順を実行してください:
- 関数プロジェクトに、 Instana Ruby の Tracer gem を依存関係として追加してください。 [1]
- Ruby のラムダ関数を `
Instana.serverless.wrap_awsblock` で囲み、イベントとコンテキストを引数として渡します。 - Lambda関数に対して、以下の環境変数を設定してください:
INSTANA_ENDPOINT_URL: サーバーレス監視のエンドポイント。 該当するリージョン用の、https://serverless-で始まる適切な値を使用していることを確認してください。INSTANA_AGENT_KEY: エージェントキー。LAMBDA_HANDLER: デフォルトのハンドラーを使用していない場合lambda_function.lambda_handler、独自のハンドラー。
トラブルシューティング
Ruby とLambdaの連携で問題が発生した場合は、以下の手順でトラブルシューティングを行ってください
- お使いのリージョンに対して正しいレイヤーARNが使用されていることを確認してください。
- 必要な環境変数がすべて正しく設定されていることを確認してください。
- CloudWatch のログを確認し、 Instana との連携に関連するエラーメッセージがないか確認してください。
- Lambda関数が Instana のバックエンドにアクセスできることを確認してください。
さらにサポートが必要な場合は、『 AWS Lambda 』のトラブルシューティングガイドを参照するか、 Instana のサポートまでお問い合わせください。
Instana Lambda レイヤー
Ruby 向けの「 AWS Lambda 」レイヤーの最新バージョンの ARN は、リージョンごとに以下の通りです
| リージョン | ARN |
|---|---|
af-south-1 |
arn:aws:lambda:af-south-1:410797082306:layer:instana-ruby:8 |
ap-east-1 |
arn:aws:lambda:ap-east-1:410797082306:layer:instana-ruby:8 |
ap-northeast-1 |
arn:aws:lambda:ap-northeast-1:410797082306:layer:instana-ruby:8 |
ap-northeast-2 |
arn:aws:lambda:ap-northeast-2:410797082306:layer:instana-ruby:8 |
ap-northeast-3 |
arn:aws:lambda:ap-northeast-3:410797082306:layer:instana-ruby:8 |
ap-south-1 |
arn:aws:lambda:ap-south-1:410797082306:layer:instana-ruby:8 |
ap-south-2 |
arn:aws:lambda:ap-south-2:410797082306:layer:instana-ruby:8 |
ap-southeast-1 |
arn:aws:lambda:ap-southeast-1:410797082306:layer:instana-ruby:8 |
ap-southeast-2 |
arn:aws:lambda:ap-southeast-2:410797082306:layer:instana-ruby:8 |
ap-southeast-3 |
arn:aws:lambda:ap-southeast-3:410797082306:layer:instana-ruby:8 |
ap-southeast-4 |
arn:aws:lambda:ap-southeast-4:410797082306:layer:instana-ruby:8 |
ap-southeast-5 |
arn:aws:lambda:ap-southeast-5:410797082306:layer:instana-ruby:8 |
ap-southeast-7 |
arn:aws:lambda:ap-southeast-7:410797082306:layer:instana-ruby:8 |
ca-central-1 |
arn:aws:lambda:ca-central-1:410797082306:layer:instana-ruby:8 |
ca-west-1 |
arn:aws:lambda:ca-west-1:410797082306:layer:instana-ruby:8 |
cn-north-1 |
arn:aws-cn:lambda:cn-north-1:107998019096:layer:instana-ruby:8 |
cn-northwest-1 |
arn:aws-cn:lambda:cn-northwest-1:107998019096:layer:instana-ruby:8 |
eu-central-1 |
arn:aws:lambda:eu-central-1:410797082306:layer:instana-ruby:8 |
eu-central-2 |
arn:aws:lambda:eu-central-2:410797082306:layer:instana-ruby:8 |
eu-north-1 |
arn:aws:lambda:eu-north-1:410797082306:layer:instana-ruby:8 |
eu-south-1 |
arn:aws:lambda:eu-south-1:410797082306:layer:instana-ruby:8 |
eu-south-2 |
arn:aws:lambda:eu-south-2:410797082306:layer:instana-ruby:8 |
eu-west-1 |
arn:aws:lambda:eu-west-1:410797082306:layer:instana-ruby:8 |
eu-west-2 |
arn:aws:lambda:eu-west-2:410797082306:layer:instana-ruby:8 |
eu-west-3 |
arn:aws:lambda:eu-west-3:410797082306:layer:instana-ruby:8 |
il-central-1 |
arn:aws:lambda:il-central-1:410797082306:layer:instana-ruby:8 |
me-central-1 |
arn:aws:lambda:me-central-1:410797082306:layer:instana-ruby:null |
me-south-1 |
arn:aws:lambda:me-south-1:410797082306:layer:instana-ruby:null |
sa-east-1 |
arn:aws:lambda:sa-east-1:410797082306:layer:instana-ruby:8 |
us-east-1 |
arn:aws:lambda:us-east-1:410797082306:layer:instana-ruby:8 |
us-east-2 |
arn:aws:lambda:us-east-2:410797082306:layer:instana-ruby:8 |
us-west-1 |
arn:aws:lambda:us-west-1:410797082306:layer:instana-ruby:8 |
us-west-2 |
arn:aws:lambda:us-west-2:410797082306:layer:instana-ruby:8 |
中国地域のパターンは であり arn:aws-cn:lambda:${region}:107998019096:layer:instana-ruby:${layer-version} 、その他の地域のパターンは です arn:aws:lambda:${region}:410797082306:layer:instana-ruby:${layer-version}。
常に最新バージョンを使用し、使用中のレイヤーのバージョンも定期的に更新して、新しいバージョンで提供される新機能や修正の恩恵を受けられるようにしてください。
AWS Lambda の公式ドキュメントに従って、 依存関係を含む.zip形式のデプロイメントパッケージを作成してください。↩︎