AWS API Gatewayアクセスログ

Amazon APIゲートウェイは、APIの作成、維持、監視を行う中心サービスです。
API要求のログを有効にし、リクエスト実行やクライアントアクセスに関するデバック問題を行えます。

AWS API Gatewayアクセスログには、APIゲートウェイインスタンスが行った個々のリクエストの概要を収集されます。

Site24x7アプリケーションログを使用して、AWS API Gatewayアクセスログの収集、追跡、管理を行えます。

必要な条件

APIゲートウェイのログ収集を有効にし、そのログをCloudWatchログに転送する必要があります。

目次

1. AWS API Gatewayアクセスログのログプロファイルの作成

2. Lambda関数の作成

3. AWS API Gatewayアクセスログの表示

1.ログプロファイルの作成

Site24x7でAWS APIログのログプロファイルを作成します。
作成方法は次のとおりです。

  1. Site24x7にログインし、[管理]→[アプリケーションログ]→[ログプロファイル]→画面右上の[ログプロファイルの追加]に移動します。
  2. ログプロファイル名を入力します。
  3. ログの種類のドロップダウンから[AWS API Gatewayログ]を選択します。
    • デフォルトで次のログパターンが入力されます。
      ログパターン:
      json $requestTime:date:dd/MMM/yyyy:HH:mm:ss Z$ $domainname$ $path$ $caller$ $protocol$ $requestId$ $ip:ip$ $resourcePath$ $responseLength$ $httpMethod$ $user$ $status$ $responselatency:number$File Path
    • サンプルログ:
      { "domainname":"zlyker.com", "path":"\user", "requestId":"1f286b4d-2d8b-432a-9841-6e931accb312", "ip": "16.41.70.121", "caller":"-", "user":"-","requestTime":"14/Feb/2020:20:42:25 +0000", "httpMethod":"POST","resourcePath":"/{myproxy+}", "status":"200","protocol":"HTTP/1.1", "responseLength":"307", "responselatency":"39" }
      { "domainname":"zlyker.com", "path":"\view", "requestId":"1f286b4d-2d8b-432a-9841-6e931accb322", "ip": "46.11.70.221", "caller":"-", "user":"-","requestTime":"14/Feb/2020:20:43:25 +0000", "httpMethod":"POST","resourcePath":"/{myproxy+}", "status":"200","protocol":"HTTP/1.1", "responseLength":"1507", "responselatency":"149" }
      { "domainname":"zlyker.com", "path":"\validate", "requestId":"1f286b4d-2d8b-432a-9841-6e931accb332", "ip": "86.41.10.221", "caller":"-", "user":"-","requestTime":"14/Feb/2020:20:44:30 +0000", "httpMethod":"POST","resourcePath":"/{myproxy+}", "status":"400","protocol":"HTTP/1.1", "responseLength":"7","responselatency":"3" }
    • [鉛筆]アイコンから、自身のログパターンを指定することができます。
    • 3行のサンプルログを入力し、ログパターンに反映させます。
  4. ログソースに[Amazon Lambda]を選択します。
  5. 表示された入力変数をコピーします。この変数は次のステップで使用します。
  6. [保存]をクリックします。

2. Lambda関数の作成

  1. AWSにログインし、サービスドロップダウンから[Lambda]を選択し、[関数の作成]をクリックします。
    [Author from scratch]を選択し、関数の名前を入力後、ランタイムにPython 3.7を選択します。
  2. Configure lambda function

    • 権限:既存のIAMロールを選択するか、ベーシックLambda権限をもつロールを新規作成します。
      新規ユーザーを作成し、権限を拡張することも可能です。
    • トリガーの追加:スクロールダウンし、[CloudWatchログ]を選択します。
      ログファイルが追加されると、Lambda関数によってSite24x7にそのログが送信されます。
      Add trigger
    • トリガー設定
      • ロググループ:ログ送信元として機能するCloudWatchロググループを選択します。
        選択したグループ内のイベントで、Lambda関数がトリガーされます。
      • フィルター名:フィルター名を入力します。
      • チェックボックスを選択し、トリガーを有効化して[追加]をクリックします。
    • 開かれたウィンドウで、[Lambda Function]をクリックします。
      s3 trigger
    • エディターを開き、次のリンクにあるコードを配置します。
  3. コード入力後、Site24x7に移動し、[管理]→[アプリケーションログ]→[ログプロファイル]→[作成したログプロファイル]に移動します。
    画面に表示されたコードをコピーし、環境変数項目配下のlogTypeConfigにコードをペーストします。

3. AWS API Gatewayアクセスログの表示

アプリケーションログでは、すべてのログの種類を集約したダッシュボードを作成でき、複数ウィジェット上にデータを表示します。
AWS API Gatewayアクセスログダッシュボードで表示されるウィジェットは次のとおりです。

  • リクエストの合計
  • 平均応答時間
  • 平均応答サイズ
  • 失敗したリクエスト
  • トップ20 失敗したリクエスト
  • リクエストトレンド
  • トップ10 クライアントIP
  • ステータスコード統計
  • 応答時間統計
  • トップ50 成功したリクエスト
  • トップ10 最も遅いリクエスト