Amazon Web Services ブログ

新機能 – Amazon DevOps Guru for Serverless で Lambda 関数の運用上の問題を自動的に検出

2022 年 4 月 21 日(米国時間)、Amazon DevOps Guru の新機能である Amazon DevOps Guru for Serverless を発表しました。これにより、デベロッパーはサーバーレスアプリケーションの運用パフォーマンスと可用性を向上させることができます。

AWS は 2014 年に AWS Lambda の提供を開始し、サーバーレスコンピューティングの分野を開拓しました。今日、何十万ものお客様が AWS Lambda を利用しています。Lambda では、メモリの割り当て、プロビジョニングされる同時実行数、タイムアウトなど、関数用に多くのパラメータを設定できます。多くのお客様にとって、関数のパフォーマンスと可用性を最適化するために、これらすべてのパラメータの適切なバランスを見つけることは困難です。

2020 年 12 月、当社は DevOps Guru を発表しました。これは、アプリケーションの問題を自動的に検出してお客様にアラートを送信し、アプリケーションの可用性の改善をサポートする、フルマネージド AIOps (IT オペレーション向け人工知能) サービスです。2022 年 4 月 21 日、DevOps Guru の新機能である DevOps Guru for Serverless を発表します。これは、Lambda を使用するデベロッパーが関数レベルで異常な動作を自動的に検出し、機械学習を活用したレコメンデーションを使用して検出された問題を修正できるようにするものです。

DevOps Guru for Serverless は機械学習を使用して、プロビジョニングされる同時実行数やメモリの使用量が低いことなど、Lambda 関数のパフォーマンスや可用性に関連するさまざまな問題を自動的に特定および分析します。この機能を使用するために、サーバーレスや機械学習のエキスパートである必要はありません。

この機能のリアクティブインサイトは、最短時間で根本原因を特定して修正するのに役立つ実用的なレコメンデーションを使用して、サーバーレスアプリケーションに影響する進行中の問題を効率的にトラブルシューティングするのに役立ちます。

また、DevOps Guru for Serverless は、サーバーレスアプリケーションのパフォーマンスに影響が及ぶよりもかなり前に、幅広い運用上の異常を特定するのに役立つプロアクティブなインサイトも提供します。また、問題の根本原因の解決方法に関するレコメンデーションも示します。

問題が検出されると、DevOps Guru for Serverless はその検出結果を DevOps Guru コンソールに表示し、Amazon EventBridge またはAmazon Simple Notification Service (Amazon SNS) を使用して通知を送信します。これにより、デベロッパーは検出された課題を自動的に管理し、リアルタイムでアクションを実行できます。

DevOps Guru for Serverless のプロアクティブなインサイト
DevOps Guru for Serverless を使用すると、デベロッパーは顧客に影響を及ぼすイベントが発生する前に、アプリケーションの問題をプロアクティブに検出できます。例えば、Lambda 関数向けのプロビジョニング同時実行数の設定が低すぎて、このアプリケーションのトラフィックが増加している場合、DevOps Guru は増加するトラフィックとアプリケーションレイテンシーの悪化を検出し、問題を示すプロアクティブなインサイトを生成します。

機械学習アルゴリズムは、運用データとアプリケーションメトリクスからこれらのインサイトを作成します。インサイトは、概要レベルの情報、重要度、ステータス、およびこの問題の解決方法に関するレコメンデーションを提供します。

現在、DevOps Guru for Serverless は Lambda と Amazon DynamoDB 向けにプロアクティブなインサイトを提供しています。運用上の問題と、現在利用可能なプロアクティブなインサイトは次のとおりです。

  • Lambda 同時実行数がアカウントの上限に達します – 連続した期間に同時実行数がアカウントの上限に達するとトリガーされます。
  • Lambda Provisioned Concurrency 関数の上限を超えました – プロビジョニングされる同時実行数の予約量が、ある期間にわたって不足している場合にトリガーされます。
  • SQS の可視性タイムアウトと比較して Lambda タイムアウトが高くなっています – Lambda 関数の期間が、イベントソース Amazon Simple Queue Service (Amazon SQS)可視性タイムアウトを超えるとトリガーされます。
  • Lambda Provisioned Concurrency の使用量が想定よりも低くなっています – プロビジョニングされる同時実行数の使用量が低すぎる場合にトリガーされます。
  • DynamoDB の消費に対するアカウントの読み取り/書き込み容量がアカウントの上限に達しようとしています – ある期間中、アカウントの消費容量がアカウントレベルの上限に近づくとトリガーされます。
  • DynamoDB テーブルの読み取り/書き込みで消費された容量がテーブルの上限に達しようとしています – テーブルへの書き込みまたは読み取りが、ある期間にわたってテーブルの ProvisionedWriteCapacityUnits または ProvisionedReadCapacityUnits の上限に達しようとしているときにトリガーされます。
  • DynamoDB テーブルの消費容量が AutoScaling Max パラメータの上限に達します – テーブルの使用済み容量が、ある期間にわたって AutoScaling Max パラメータの上限に達しようとしているときにトリガーされます。
  • DynamoDB の読み取り/書き込み消費量が想定よりも低くなっています – ProvisionedWriteCapacityUnits または ProvisionedReadCapacityUnits の値が、一定期間中に消費されている値とは大きく異なる場合にトリガーされます。

DevOps Guru for Serverless の開始方法
使用を開始するには、DevOps Guru コンソールに移動して、Lambda ベースのアプリケーション、サポートされている他のリソース、またはアカウント全体でサービスを有効にします。

DevOps Guru の設定

このデモでは、プロビジョニングされる同時実行数が 1 の新しい Lambda 関数を作成します。これは AWS コンソールから、またはプログラムで実行できます。作成後、関数の概要ページで、プロビジョニングされる同時実行数が 1 に設定されていることを確認できます。

Lambda でプロビジョニングされる同時実行の設定

Lambda 関数に、1 分ごとに関数をトリガーする CloudWatch Event を追加します。これは AWS コンソールから、またはプログラムで実行できます。このチュートリアルに従って、その方法を学ぶことができます。このプロセスをさらに 5 回繰り返します。これで、関数はさまざまなイベントから毎分 6 回トリガーされます。

プロアクティブなインサイトをトリガーするには、この Lambda 関数の 6 個の同時実行呼び出しを設定する必要があります。そのためには、各呼び出しの持続時間を十分に長くする必要があります。このデモでは、関数を 30 秒間スリープさせることができます。

'use strict';

exports.handler = async (event) => {
  
    console.log('Sleep for 30 seconds')
    await new Promise(r => setTimeout(r, 30000));
    console.log('finish sleeping')

    return;
};

この設定により、この関数に向けに「Lambda Provisioned Concurrency 関数の上限を超えました」のプロアクティブインサイトがトリガーされます。問題が発生してから 3 時間以内にコンソールにインサイトが表示されます。

DevOps Guru コンソールからインサイトを確認する方法
数時間後、DevOps Guru コンソールにアクセスして、プロビジョニングされる同時実行数の超過によってプロアクティブなインサイトがトリガーされたことを確認できます。

プロアクティブなインサイトの一覧

[Ongoing] (進行中) インサイトを選択して、詳細を表示します。インサイトページが開き、インサイト、メトリクス、イベント、およびこの問題に関する推奨アクションに関連する情報が表示されます。

このページをさらに詳しく見てみましょう。ページの上部には、インサイトの概要のほかに、インサイトの内容と問題の重要度の説明が表示されます。これはプロアクティブなインサイトであるため、この問題によってユーザーエクスペリエンスが損なわれることはありません。また、問題が進行中かどうか、いつ発生したかについても知ることができます。問題がもう発生していない場合は、そのインサイトの終了日を知ることができます。影響を受けるアプリケーションのリンクを選択すると、このインサイトの影響を受ける Lambda 関数をすべて確認できます。

インサイトの説明の情報ボックス

次の情報ボックスには、プロアクティブなインサイトに関連する CloudWatch メトリクスに関する情報が含まれています。このグラフは、ProvisionedConcurrecySpilloverInvocations メトリクスと、プロビジョニングされる同時実行数がスピルした直近 1 時間のすべての呼び出しの概要を示しています。

メトリクスに関する情報

ページ上には、[Relevant events] (関連イベント) という情報ボックスもあります。これらは AWS CloudTrail イベントであり、DevOps Guru が CloudWatch メトリクスおよび運用データと組み合わせて使用して、インサイトを生み出した異常な動作を特定します。

インサイトに関する関連情報

最後に、ページ上にある [Recommendations] (レコメンデーション) 情報ボックスについて説明します。DevOps Guru は、生成されたすべてのレコメンデーションを出力して、お客様が問題を解決するのをサポートします。レコメンデーションを使用して、問題を修復するために実行できる即時のステップを知ることができます。

インサイトに関するレコメンデーション

このプロアクティブなインサイトでは、DevOps Guru は Lambda 関数のプロビジョニングの同時実行数をチューニングすることが推奨されています。関数の過去の使用状況に基づいて、どの値に設定すべきかを知らせています。また、DevOps Guru がこのインサイトを推奨する理由を知ることもできます。

料金と利用可能なリージョン
DevOps Guru for Serverless は、追加料金なしでご利用いただけます。

DevOps Guru for Serverless は、DevOps Guru が提供されている米国東部 (オハイオ)、米国東部 (バージニア北部)、米国西部 (オレゴン)、アジアパシフィック (シンガポール)、アジアパシフィック (シドニー)、アジアパシフィック (東京)、欧州 (フランクフルト)、欧州 (アイルランド)、および欧州 (ストックホルム) の各 AWS リージョンでご利用いただけます。

Marcia

原文はこちらです。