1. はじめに
こんにちは!株式会社Definerのライターチームです!
今回は、AWSでECSコンテナログを扱う際のTipsについて気になりますよね。
実際の画面や、資源を見ながら詳しく解説していきましょう。
2. 目的・ユースケース
この記事は、コンテナログをきちんと管理するという目的に向けて、執筆しています。
ITの現場で、AWSを使ってECSコンテナ運用する際に、ログ管理をきちんと実施したいときに、参考になる情報やプラクティスをまとめています。
3. ECSコンテナログの扱い方
ECSを使ったコンテナ運用におけるログの扱い方について考えていきます。
ECSのDockerコンテナはデプロイの度に使い捨てられるため、アプリケーションログはコンテナ内に保管しておくことができません。
そのため、アプリケーションログは、外部ストレージや外部サービスを用いて管理する必要があります。
ECSコンテナのログ運用について、いくつかオプションをまとめてみました。
①Cloudwatch Logs
王道として、Cloudwatch Logsを用いる方法があります。
メリットとしては、以下のような点が挙げられます。
・AWSのマネージドサービスでありECSとの連携が楽
・S3へのローテーションでコスト削減も可能
・ElasticSearchを使うと可視化も手軽に可能
一方、デメリットとして以下のような点もあります。
・Cloudwatch Logsに転送するためには、コンテナログを標準出力へ吐き出す必要がある
・ログストリームの単位が見づらい(ホスト名などに起動日時を入れるなど、どのコンテナで発生したログかを識別できるようにしておくことが大切です)
②ログ収集サービス
fluentdなどのログ収集・解析サービスを使うというオプションもあります。
メリットとしては、柔軟なカスタムが可能となります。
デメリットとしては、サービス利用料やAWSとの連携の実装コストがかります。
4. Cloudwatch Logs設定方法
それでは早速、ECSタスク定義のCloudwatch Logs設定をしていきます。
前提として、コンテナ内のアプリケーションログは、標準出力(STDOUT)に吐き出されるものとします。
①インプットとなるJsonファイルの準備
今回は、以下のインプットファイルを使用しました。
ポイントは17行目から25行目で、ログドライバとして「awslogs」を指定しています。
②ECSタスク定義の更新
ECSのコンソールに移動し、「タスク定義」→タスクの詳細画面→「新しいリビジョンの作成」→「JSONを使用した新しいリビジョンの作成」
インプットとなるJSONファイルをコピーアンドペーストし、保存します。
コンテナを新しく起動すると、Cloudwatch Logsにログが出ていることが確認できました!
{
"family": "test",
"containerDefinitions": [
{
"name": "test",
"image": "${アカウント番号}.dkr.ecr.ap-northeast-1.amazonaws.com/test:610",
"cpu": 512,
"memory": 1024,
"portMappings": [
{
"containerPort": 80,
"hostPort": 80,
"protocol": "tcp"
}
],
"essential": true,
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-create-group": "true",
"awslogs-group": "ecs/test",
"awslogs-region": "ap-northeast-1",
"awslogs-stream-prefix": "test"
}
}
}
],
"taskRoleArn": "arn:aws:iam::${アカウント番号}:role/${IAMタスクロール名}",
"executionRoleArn": "arn:aws:iam::${アカウント番号}:role/${IAMタスク実行ロール名}",
"networkMode": "awsvpc",
"requiresCompatibilities": [
"EC2",
"FARGATE"
],
"cpu": "512",
"memory": "1024",
"runtimePlatform": {
"cpuArchitecture": "X86_64",
"operatingSystemFamily": "LINUX"
}
}
5. 引用・参考記事
6. 独自ソリューション「PrismScaler」について
PrismScalerは、開発・運用を要さずにたった3ステップで、AWSやAzure、GCPなどのマルチクラウド基盤構築を実現するWebサービスです。
エンジニアの大変な作業を肩代わり
・自動構築
・自動監視
・構成可視化
クラウド基盤に関わる作業を以上のように効率化します。
SRE/DevOpsエンジニアが行う大変な作業を肩代わりします。
高品質な汎用クラウド基盤の実現
・クラウド基盤構築/クラウド移行
・クラウドの保守運用・コスト最適化
など幅広い利用シーンを想定しています。IaaSやPaaSを適切に組み合わせた数百を超える高品質な汎用クラウド基盤を容易に実現できます。
興味を持たれた方には、無料で資料を提供しております。
お気軽にご相談ください。
7. お問合せ
株式会社Definerでは、
・ITの上流から下流まで一気通貫のワンストップソリューションをご提供。
・AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミット。
・少ないエンジニアで事業が成長する仕組みづくりの実現。
・エンジニアが喜ぶ、採用しやすい環境づくりの実現。
・高速なアジャイル開発環境の実現。
・自社プロダクトとしてPrismScalerを展開。
上記事業内容を進行しております。
※「開発者ブログ」では、エンジニアの入門編として有益な情報を無料公開しています。
ご相談やお問い合わせは「株式会社Definer」へ。
8. Definerに関して。
・ Definer Incは、ITの上流から下流まで一気通貫のワンストップソリューションをご提供しております。
・ AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミットしています。
・ DevOpsとCI/CDコンサルティングにより「少ないエンジニアで事業が成長する仕組みづくり」「エンジニアが喜ぶ、採用しやすい環境づくり」「高速なアジャイル開発環境」を実現しています。
・ また、自社プロダクトとしてPrismScalerを展開しております。PrismScalerは、AWS、Azure、GCPなどのマルチクラウド / ITインフラの高品質かつ迅速な、「自動構築」「自動監視」「問題検知」「構成可視化」を実現します。