ECSプロダクトの監視をTerraform Moduleで標準化

目次

自己紹介

はじめまして、ENECHANGE@rubita_isi です。
普段はWEBアプリケーションのバックエンドやインフラの開発や運用を担当しています。

この記事では、AWS上に構築された膨大なWEBアプリケーションをElasticBeanstalkからECSに移行する際に、
監視をTerraform Moduleで標準化した件について、その背景や具体的な内容についてお話しします。

ECS移行について

ElasticBeanstalkからECSへの移行

ENECHANGEでは、WEBアプリケーションをAWSのElasticBeanstalkで運用していました。
しかし、ElasticBeanstalkを利用する場合、ホストOSやアプリケーション言語のバージョンが頻繁にサポート終了を迎え、その度に対応が必要でした。
また、ebextensionやplatform hookの仕組み・仕様が変更になりがちで、運用コストが高くなっていました。

これらを解消するため、コンテナサービスであるAWS ECSへの移行を決定しました。

膨大なアプリケーション数とTerraform Module導入による解決

弊社では、ほぼ同じ構成によるWEBアプリケーションが膨大な数存在しています。
これらのWEBアプリケーションをECSに移行する際、Terraform Moduleを利用して標準化することで、 移行や運用のコストを削減することを目指しました。

以後は、監視に限定して標準化の取り組みについて説明します。

Terraform Moduleによる監視の標準化

監視と通知の仕組み

ALB, ECS, RDS等のCloudWatch MetricsとCloudWatch Eventsを監視対象とし、特定条件に合致した場合にSlackへ通知する仕組みを構築しました。
いわゆるChatOpsと呼ばれる運用手法を取り入れた形になります。

Terraform Moduleによる標準化のメリット

上記の機構をTerraform Moduleとして標準化することで、以下のメリットがあります。

1. 監視設定の再利用性が向上

弊社では、ほぼ同じ構成によるWEBアプリケーションが膨大な数存在する点は前述しました。
これは、監視対象とすべきメトリクスや通知設定についても同様のことが言えます。
よって、Terraform Moduleによる標準化により監視設定の再利用性が高まります。

2. 設計コストの低減

一から監視体制を構築するのと比べ、監視設定の対象や通知の方法をその度に考える必要がなくなり、設計コストを低減できます。
あるプロダクトについて個別に監視対象としたいメトリクスがある場合については、Terraform Module外で設定を行うことで対応しています。

3. パラメータ利用による柔軟性確保

Terraform Moduleでは、パラメータを利用することで、異なるプロダクトに対しても柔軟に対応できます。
例えば、RDSが含まれないプロダクトに対しては、RDSの監視設定をスキップすることが可能です。
また、監視の閾値を変更する場合にも、パラメータを変更するだけで対応できます。

4. 監視の抜け漏れ防止

Terraform Moduleによる標準化により、監視設定漏れを防止できます。
また、あるプロダクトで監視設定の改善があった場合にも、Terraform Moduleを改修して他プロダクトに適用することで、容易に横展開可能になります。

具体的な監視項目

以下では、具体的な監視項目についていくつかご紹介します。(詳細な設定方法の解説というよりは、どのような観点があるかのご参考にください)

EventRule / MetricAlarm Source / NameSpace DetailType / MetricName Condition
aws_cloudwatch_event_rule aws.ecs ECS Task State Change オートスケール以外の理由でECSが終了した場合
aws_cloudwatch_metric_alarm AWS/ApplicationELB HTTPCode_ELB_5XX_Count 60秒間に1件以上検知された場合
aws_cloudwatch_metric_alarm ECS/ContainerInsights CPUUtilization 80%を超えた場合
aws_cloudwatch_metric_alarm AWS/RDS ReadLatency 1秒以上になった場合

まとめ

監視をTerraform Moduleで標準化することで、ECSプロダクトの監視設定を簡略化しました。
これにより、監視体制の品質安定と運用コストの削減を同時に実現できました。ご参考になれば幸いです。