Cloudwatch Logsのログをコマンドで見る方法(tail -fもできる)

AWS, CloudWatch Logs, ECS

ECS Fargateのタスクでは、デフォルトで特殊なことをしなければログの出力先がCloudwatch Logsになります。
Cloudwatch Logsはログを集める場所としては便利ですが、マネージメントコンソール上でログを表示するという点ではあまり見やすくなく、従来どおりEC2にSSHログインしてログを tail -f したり、 cut したりしていることに慣れているとまあまあ不便に感じたりします。

これまでのコマンドと同じような使い勝手で、Cloudwatch Logsが使えないものかと調べたところ
awslogsというツールが便利そうでしたので紹介します。

インストール

ECSタスクのCloudwatch Logsの構造

Cloudwatch Logsは次のような構造ですが、

  • Cloudwatch Logs
  • ロググループ
  • ストリーム
  • ログ実体

例えば、ECSのタスクを起動すると、デフォルトでCloudwatch Logsに下記のようにログが出力されます。

  • Cloudwatch Logs
  • /ecs/タスク名
  • ecs/コンテナ名/コンテナID
  • ログ実体

awslogsのコマンド

ロググループの一覧を取得

ストリームの一覧を取得

ログを取得

オプションには次のようなものがあります(一部)

具体的な使用例

タスクのすべてのコンテナのログを出力

タスクの特定のコンテナのログを出力

タスクの特定のコンテナのログで “INFO” が含まれるもののみ出力

この記事を書いた人

武政
武政なかの人
釣りとカレーと犬と音楽(プログレ)が好きです。
オンプレミス、プライベートクラウドのインフラ業務を行った後、AWS移行プロジェクトに参画。設計、構築、全体の管理などを担当。
たまに開発もやります。

AWS, CloudWatch Logs, ECS