6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWSサーバレス環境における必要最低限の監視設定 ( ECS + Fargate 編 )

Posted at

AWSでちょっとしたプロダクト(MVP)をECS+Fargateが開発したようなケースでアプリケーションを運用開始したときに、とりあえずそこまで手間はかけたくないけど最低限の監視はしたいという場合のために、箇条書き程度ですが、必要設定項目を整理してみました。

もしこういういった観点も必要だよねというのがありましたらご指摘いただけますと幸いです。

前提条件

  • ECS + Fargate 環境でアプリケーションを運用する環境
    • EC2を利用したサーバー運用がないこと
  • ECS Serviceに対してAuto Scaling Groupが適用されていること
  • アプリケーションの要件的に 24/365監視を専属のインフラチームが対応するほどではないこと
    • 夜間にアラートがなったら PagerDuty等のインフラチームのメンバーの電話を鳴らすような仕組みは今回は対象外です
  • インフラの監視にはあまりコストはかけたくなく、監視に関するツールはAWS内になるべく閉じたいこと
  • CloudTrail, AWS Configの設定が有効であること
    • 後述するGuardDutyを使用するためには、AWSリソース操作の証跡を残す必要があるため

セキュリティ監視

外形監視

  • 以下の観点でサービスが正しく動作しているか、ユーザー影響の把握のための監視をおこないます
    • 5xxステータスコードを返していないか
    • レスポンスタイムに異常無いか
  • Cloudwatch Synthetics でアプリケーションのエンドポイントの外形監視を行います
    • Canaryを作成するとblueprintが発行されるので、timeout値を定義修正してレスポンスタイムが一定値を超えた場合をエラーとするように任意で変更します
    • 異常時はCloudwatch alermイベントが発行されるのでSNSで通知を受け取ってLambda経由でslackに通知します
    • なお、Cloudwatch alermのイベントをSNS経由でLambdaからslack通知をする際は blueprintを使用しますが、通常のCloudwatch alertのイベントのメッセージの構造が微妙に違うので以下のように修正します。
-    alarm_name =  message['AlarmName']
-    new_state =  message['NewStateValue']
-    reason = message['NewStateReason']
+    alarm_name =  message['detail']['alarmName']
+    new_state =  message['detail']['state']['value']
+    reason = message['detail']['state']['reason']

リソース監視

  • マネージドなリソースでもCPUやストレージなどリソース制限があるものに対して監視をおこないます
    • 例えばRDSのStorageのオートスケーリングが有効の場合はコスト面だけ監視していれば大丈夫かと思います
    • Cloudwatch Metricsでひとつひとつの監視項目にたいしてCloudwatch Alermのイベント設定をおこないます
    • Cloudwatch alermをSNSで受け取って lambda経由でslackに通知します
  • ECRのイメージスキャンを有効にして、脆弱性の監視を行います

アプリケーション監視

  • Sentryでアプリケーションのエラー監視を行います
    • アプリケーションのエラー監視だけはAWSのサービスだけだと効率よく検知、分析ができないので外部サービスを利用します
    • Sentryはチーム利用は最低料金は月26ドルですが、複数のPJを跨って使用が可能なので、会社でまるっと契約して利用すると効率よく低コストでアプリケーションのエラー監視ができるかと思います
    • 個人のPJの場合は無料枠でも利用ができます
    • 基本的には Slack channel に異常時に通知が飛ぶようにできるので、そこだけ見ていれば大丈夫なようにしておきます
  • アプリケーションのログはCloudWatch logsで閲覧できるようにしておきます
    • 障害発生時の調査材料としてアプリケーションのログは CloudWatch logsで見れるようにしておきます

コスト監視

  • コストが必要以上にかかっていないかを確認します。

参考

6
7
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
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?