Amazon Web Services ブログ

AWS SFTP 環境のモニタリング

世界中の組織は、セキュアシェル (SSH) ファイル転送プロトコルとも呼ばれるセキュアファイル転送プロトコル (SFTP) を使用して、ビジネスニーズを満たすためにファイルを共有します。SFTP は、既存のシステム間でのデータの簡単かつ安全な移動を可能にする確立されたプロトコルです。これがない場合、当該システムにおいて、一般的なインターフェイスメカニズムを見つけるのに問題が生じる可能性があります。特定の組織は SFTP 環境を運用していますが、エンドユーザーのアクティビティについての優れた可視性を欠いています。組織がオンボードするユーザーとアプリケーションは増加していくため、組織は、重要な運用メトリックについての適切な可視性と当該メトリクスへの迅速なアクセスを確保したいと考えています。

この機能は、AWS Transfer for SFTP (AWS SFTP) を用いることにより、簡単に実現できます。AWS SFTP はフルマネージド型のサービスであり、Amazon Simple Storage Service (Amazon S3) バケットとの間でファイルを直接転送でき、数分で起動できます。金融サービス、小売、医療などの多くの業界のお客様は、SFTP 要件に対する非常にスケーラブルで利用可能なソリューションとしてこのサービスを採用しています。

この投稿では、シンプルな Amazon CloudWatch Dashboard を作成して、SFTP サービスに関する情報を表示する方法を紹介します。接続しているユーザーの数、アップロードおよびダウンロードされたファイル、転送されたデータの量、エラーなどの情報を表示できます。CloudWatch Logs に送信されたログを解析し、CloudWatch Log Insights を使用して、ウィジェットで視覚化する動的クエリを構築します。このダッシュボードを使用することにより、ユーザーがサービスとどのようにインタラクションしているかについてより深い洞察を得て、傾向や異常をすばやく特定できます。

ステップ 1: AWS SFTP サーバーを作成する

開始する前に、AWS SFTP エンドポイントが必要です。これにより、トラフィックを生成してログを作成できます。CloudWatch ログ記録ロールで正しく設定された既存の AWS SFTP サーバーが実行されている場合、この部分をスキップできます。

AWS SFTP サーバーを作成する方法の詳細については、「AWS Transfer for SFTP を開始する」をご覧ください。

「SFTP サーバーを作成する」のステップに到達したら、サービスがログを CloudWatch Logs ストリームに送信するようにログ記録ロールを設定します。

「SFTP サーバーを作成する」のステップに到達したら、サービスがログを CloudWatch Logs ストリームに送信するようにログ記録ロールを設定します。

独自のポリシーを最初から作成するか、CloudWatch Logs グループに書き込むために必要なアクセス許可を持つ AWS 管理ポリシーの「AWSTransferLoggingAccess」を使用できます。

独自のポリシーを最初から作成するか、AWS 管理ポリシーの AWSTransferLoggingAcess を使用できます

エンドポイントが実行されたら、いくつかのファイルをアップロードおよびダウンロードして、いくつかのログデータを視覚化します。

ダッシュボードへ進みましょう!

ステップ 2: ダッシュボードを作成する

  1. CloudWatch コンソールにアクセスします。
  2. [Dashboards] を選択します。
  3. [Create Dashboard] を選択します。
  4. ダッシュボードの名前 (MySFTPDashboard など) を入力し、[Create Dashboard] を選択します。

ウィジェット: 送受信バイト

最初のウィジェットは、エンドポイントで送受信される合計バイト数を表示します。

  1. [Add Widget] を選択します。

[Add Widget] を選択します。

  1. [Number] を選択してから、[Configure] を選択します。
  2. 利用可能なメトリクスから、[Transfer]、[By Server Metrics] の順に選択します。次に、監視するエンドポイントの [BytesIn] および [BytesOut] のメトリクスを選択します。
  3. [Graphed metrics] を選択します
    [Graphed metrics] タブを選択します。
  4. このウィジェットで値を計算する方法を選択できます。両方のメトリクスの [Statistic] 設定を [Sum] に変更し、[Period] を 30 日に変更します。これにより、直近 30 日間にアップロードおよびダウンロードされたデータの合計量が表示されます。

これにより、直近 30 日間にアップロードおよびダウンロードされたデータの合計量が表示されます。

ウィジェット: 接続されたユーザー

次のウィジェットは、時間の経過に伴う一意のユーザーセッションを積み上げ折れ線グラフとしてグラフ化します。

  1. [Logs]、[Insights] の順にアクセスします。
  2. [log groups] ボックスで、SFTP サーバーのロググループを選択します。
  3. コードウィンドウで、次の検索関数をコピーして貼り付けます。
filter @message like "OPEN"
    | parse @message "*.* OPEN Path=* Mode=*" as user, sessionID, path, mode
    | fields @timestamp
    | sort @timestamp desc
    | stats count_distinct(sessionID) as uniquesessions by bin(10min)
  1. [Run Query] を選択します。
  2. [visualization] タブで、[stacked area] を選択します。
  3. [Actions]、[Add to dashboard] の順に選択します。
  4. ダッシュボードを選択し、種類が積み上げ折れ線であることを確認し、わかりやすい名前 (「Number of users」など) を入力します。

ダッシュボードを選択し、種類が積み上げ折れ線であることを確認し、わかりやすい名前 (「Number of users」など) を入力します。

ウィジェット: アップロードおよびダウンロード

これらのウィジェットは、Amazon S3 にアップロードおよびダウンロードされているファイルの数を表示します。

  1. [Logs] に戻り、その後 [Insights] に戻ります。
  2. [log groups] ボックスで、SFTP サーバーのロググループを選択します。
  3. コードウィンドウで、以下の検索関数をコピーして貼り付けます。
    filter @message like "READ"
    | fields @timestamp
    | sort @timestamp desc
    | stats count(*) as FileRead by bin(10min)
  1. [Run Query] を選択します。
  2. [Actions]、[Add to dashboard] の順にクリックします。
  3. ダッシュボードを選択し、視覚化の種類が [line] に設定されていることを確認し、最後にわかりやすい名前 (「Get Operations」など) を付けます。
  4. 新しいウィジェットで、縦の省略記号 () をクリックして、[Duplicate] を選択します。
  5. [Duplicate] タブで、(鉛筆を選択して) 名前を編集し、「Put Operations」に変更します。
  6. 縦の省略記号 () をクリックして、[Edit] を選択します。
  7. クエリボックスで [READ] を [WRITE] に変更して、[save changes] をクリックします。

クエリボックスで [READ] を [WRITE] に変更して、[save changes] をクリックします。

ウィジェット: エラー数

このウィジェットは、エンドポイントによってログ記録されているエラーの数を表示します。時間の経過に伴うベースラインの突然の変化は、環境に問題があることを反映するため、この変化の有無を確認すると役立ちます。

  1. [Logs]、[Insights] の順にアクセスします。
  2. [log groups] ボックスで、SFTP サーバーのロググループを選択します。
  3. コードウィンドウで、以下の検索関数をコピーして貼り付けます。
filter @message like "ERROR"
| fields @timestamp
| sort @timestamp desc
| stats count(*) as Errors by bin(24hr)
  1. [Run Query] を選択します。
  2. [visualization] タブで、[stacked area] を選択します。
  3. [Actions]、[Add to dashboard] の順に選択します。
  4. ダッシュボードを選択し、種類が積み上げ折れ線であることを確認し、わかりやすい名前 (「Error Count」など) を入力します。

ウィジェット: 上位のダウンロード

最後のウィジェットは、ダウンロードされた上位 10 個のファイルを表示します。

  1. [Logs] に戻り、その後 [Insights] に戻ります。
  2. [log groups] ボックスで、SFTP サーバーのロググループを選択します。
  3. コードウィンドウで、以下の検索関数をコピーして貼り付けます。
filter @message like "OPEN"
| parse @message "*.* OPEN Path=* Mode=*" as user, sessionID, path, mode
| fields @timestamp
| filter mode like "READ"
| sort path desc
| stats count(path) as NumberOfRequests by path
| limit 10
  1. [Run Query] を選択します。
  2. [Actions]、[Add to dashboard] の順に選択します。
  3. ダッシュボードを選択し、種類が [Query Result] であることを確認し、わかりやすい名前 (「Top File Downloads」など) を入力します。

ダッシュボードを選択し、種類が [Query Result] であることを確認し、わかりやすい名前 (「Top Downloads」など) を入力します。

まとめ

この投稿では、AWS SFTP 環境の主要な運用メトリクスに関する洞察を提供する Amazon CloudWatch オペレーションダッシュボードを構築する方法を示しました。これにより、次のような多様かつ有用な情報を表示できます。

  • サービスの送受信するデータの量
  • 一意のユーザーおよびユーザーセッションの数
  • アップロードおよびダウンロードされたファイルの数
  • エラーカウントの数
  • ダウンロードされた上位 10 個のファイル名

上記の手順を複製してクエリ文字列を編集することにより、AWS SFTP ログを解析して追加のメトリクスを提供する独自のカスタムウィジェットを構築できます。

構築したダッシュボードは、AWS SFTP 環境に関するさらなる洞察を提供するのに役立ちます。ダッシュボードを使用すると、手動でログをステップスルーまたは検索することなく、傾向や想定外の問題を迅速に見つけることができます。このような機能により、運用上のオーバーヘッドを削減して、時間およびお金を節約でき、ビジネスにおいてより重要なことに集中できます。

クリーンアップ

AWS SFTP エンドポイントを含め、本日デプロイしたリソースを使い終えたら、不要になったアクセス許可をクリーンアップして確認することを忘れないでください。

その他のリソース

詳細については、AWS SFTP および Amazon CloudWatch Dashboard のドキュメントをご覧ください。また、このサービスに関する私の過去の投稿を確認して、AWS SFTP をより深く知ってください。

いつも読んでくださってありがとうございます。何かご質問がある場合は、以下のコメント欄に記入してください。