[監視] AWS ECSを軸に考える監視と通知への入門
この記事は?
著者はAWSでのインフラ構築を専門領域としていますが、監視はできるだけ早め早めに各所に行なって1箇所に集約した通知ハブを作っておくのが好みです(将来自分やメンバーが気付きやすく、対応しやすくなるため)。この記事では、私が実践している監視と通知の方法を解説します。
監視の意義
先ほど述べた通り、監視を行うのは将来対応しやすくするためで、それによってフォールトレランシーが増します。適切な監視体制があれば、問題が深刻化する前に察知し、迅速な対応が可能になります。これは結果的にシステムの安定性向上とインシデント対応コストの削減につながります。
代表的な監視の経路
経路をイメージしやすくするために何個か代表的なものを考えてみましょう。
APIサービスの監視
メトリクス監視(この場合は閾値通知・定時通知):
・閾値通知
例えばCPU, メモリーが80%以上になった場合など閾値を決めておいて到達観測した結果通知します。
ECS → CloudWatch Metrics → CloudWatch Alarm → SNS → AWS Chatbot → Slack
・定時通知
また、次のように6時間おきなど定時通知にはEvent Bridge Schedulerを使うと便利です。
ECS → CloudWatch Metrics/ Scheduler→ Lambda → (Slack WebHook) → Slack
アプリケーションログ監視(この場合は即時通知・条件通知):
エラーレベルがFatalおよびErrorのものを即時通知するとともに、
例えば1時間に5回以上同じWarningが観測された場合にはそれも条件通知する。
ECS → CloudWatch Logs Subscription Filter → Lambda → (Slack WebHook) → Slack
バッチ処理の監視
バッチ処理はランが失敗した場合は必ず通知を出して手動または自動リトライをする。
著者はバッチ構築と監視を長期担当していたことがあるがバッチでは特に監視が大事。
StepFunctions → CloudWatch → Lambda → (Slack WebHook) → Slack
通知戦略
通知はできるだけ1箇所に集約させるようにするとともに、即時通知、閾値通知、条件通知、定時通知など監視の種類によってそれぞれだし分けて通知するようにすると便利です。Slackを中心とした通知ハブを構築することで、情報の一元管理と迅速な対応が可能になります。
代表的な通知の方法
即時通知
プロダクション環境の重大な障害や、ユーザー体験に直接影響する問題に対して使用します。24時間365日の対応が必要なケースです。
実装例: @channel メンションを含むSlack通知
対象: サービス停止、クリティカルエラーの急増など
閾値通知
システムリソースや性能指標が特定の閾値を超えた場合に通知します。複数の閾値を設定することで、状況の深刻度に応じた対応が可能です。
実装例: CPU使用率80%で警告、95%で緊急通知
対象: メモリ使用率、API応答時間、データベースコネクション数など
条件通知
複数の条件が揃った場合や、特定のパターンを検出した場合に通知します。単純な閾値だけでは捉えられない複雑な状況に対応します。
実装例: 5分以内に同一エラーが10回以上発生した場合のみ通知
対象: 特定の例外パターン、認証失敗の急増など
定時通知
定期的なシステム状態の報告や、バッチ処理の結果などを通知します。長期的なトレンド分析やキャパシティプランニングに役立ちます。
実装例: 毎朝9時に前日のシステム状態サマリーを送信
対象: 日次バッチ処理結果、リソース使用状況レポートなど
総括
効果的な監視と通知構築は、問題の早期発見と迅速な対応を可能にします。
とりわけ重要なのは、監視と通知の仕組みをシステムの成長に合わせて継続的に見直し、改善していくことです。最終的には、適切な監視と通知の仕組みがあることで、チームは安心してシステムの改善や新機能の開発に集中することができます。それこそが、監視を「できるだけ各所に行なって早めに通知をしておく」ことの真の価値なのです。
終わりに
現在(2025年4月)手が空いているので、気軽な相談役としてNode.js, TyepScript, インフラ支援をさせていただける会社様があればお声がけください! 気軽にTwitterか私のHPからメッセージください。
以下のような内容でお困りの場合特にお力になれるかもしれません・・
・技術負債の解消(歴20年くらいまでであれば対応可能
・AWS/IaCでの構築、インフラ全般の相談役
・エンジニア採用やプロダクト方針を含むスタートアップでの0-1立ち上げ
HP
Discussion