初学者向け
ECSことはじめ中に出会って、調べて活用したことを書いています。
今回のお悩み
AWS Solutions Architect ブログ: Amaozn ECSがawslogs Logging Driver(Amazon CloudWatch Logs)に対応しました
awslogsというLogging DriverをECSでタスク定義をした際に使えば、Dockerコンテナでログとして残しておきたい内容をstdout/stderrに吐き出す様にしておくだけで、自動的にCloudWatch Logsに保存されていきます。
便利!
と思ったんですが、cloudwatchログのロググループに蓄積されたストリームを見て、絶望します。
あれ?これファイル一つづつクリックするんですか?
これ、tailで見たいのですが、と言うお悩みです。
- [TIPS] ちなみにcloudwatchのログの画面で表示項目は増やしておきましょう
- のところをクリックすると、列の表示非表示が変えられます
- ログデータの表示 - Amazon CloudWatch ログ
> awslogsで解決
自分のマシンにawslogsをインストールしましょう!pipで簡単に導入可能です。
pip install awslogs
tailしたい場合はオプションつけてこんな感じで、みたいロググループのログを見ることができます。
awslogs get {ロググループ名} --watch
20:42:19 ~/ $ awslogs get api-logs -w -G --timestamp
6bdd60a3ac787a11fc07db4d8f549c3590f997ebba3aa52b458a1e9acb81c109 2016-12-17T11:41:14.662Z npm info it worked if it ends with ok
6bdd60a3ac787a11fc07db4d8f549c3590f997ebba3aa52b458a1e9acb81c109 2016-12-17T11:41:14.663Z npm info using npm@2.14.12
6bdd60a3ac787a11fc07db4d8f549c3590f997ebba3aa52b458a1e9acb81c109 2016-12-17T11:41:14.663Z npm info using node@v4.3.1
6bdd60a3ac787a11fc07db4d8f549c3590f997ebba3aa52b458a1e9acb81c109 2016-12-17T11:41:15.045Z npm info prestart api@0.0.0
6bdd60a3ac787a11fc07db4d8f549c3590f997ebba3aa52b458a1e9acb81c109 2016-12-17T11:41:15.051Z npm info start api@0.0.0
- -w/--watch オプション
- いわゆるtailです
- -G/--no-group オプション
- グループ名を非表示に
- --timestampオプション
- イベントが発生した時間を表示します
私は上記のような形で使っていますが、次に紹介するリンクではもっと詳しい使い方が載っているので、参考にしてください!
>> インストールや使い方
こちらに詳しく載っています。
>> 事前にcredentialやプロファイルの設定はしておこう
さて、あなたが実行したい環境はどの環境に対してですか?
自分の実験環境なのか、お客さんAなのかBなのか、ターミナルを開いたら、以下で確認しておきましょう。
$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile bohelabo manual --profile
access_key ****************TTVQ shared-credentials-file
secret_key ****************TTfQ shared-credentials-file
region us-east-1 config-file ~/.aws/config
私は、.bashrcで主に使う環境はセットしています。ただし、コマンド実行前には必ず確認が必要!
export AWS_DEFAULT_PROFILE=bohelabo
- cli環境がない人はこちら
- AWS CLI のインストールと設定 - Amazon Kinesis Streams http://docs.aws.amazon.com/ja_jp/streams/latest/dev/kinesis-tutorial-cli-installation.html
ECSからcloudwatchにログを流す設定方法
そもそもECSからcloudwatchにログを流す設定方法についてってどうするんですか?という追加解説。
> ECS->タスク定義作成->ログ設定
タスク定義の作成のログ設定のところで、そのタスクと紐付けるログをどこに流すかを設定します。
-
awslogs-group
- cloudwatchログのログググループ名。これは事前に、cloudwatch側で作成しておきましょう。タスク実行時にないとエラーになってしまいます
-
awslogs-region
- 使っているリージョンを指定します
-
awslogs-stream-prefix
- ストリームにプリフィックスをつけることができます。これを設定すると、ストリームの名称は以下のようになります。スクリーコンテナの名前とプリフィックスにつける名前を工夫すると、フィルタリング等にお役立ちになりそうです
prefix-name/container-name/ecs-task-id
> cloudwatchログ
上記のような設定で、ECSのサービスを実行すると、以下のようなログストリームが作成されます。