LoginSignup
19
16

More than 5 years have passed since last update.

メモ:ECSとCloudwatch LogsでRailsを運用するログ設定

Last updated at Posted at 2018-03-15

この記事は

  • ECSとCloudwatch logsでRailsを運用する場合のメモです

やりたいこと

  • ECSからCloudwatch Logsに対してRailsのログを出力します
  • Cloudwatch Logsに記録されたログは最低限tailしたり、エディタで参照したり、grepしたり、従来通りのログ調査だとかができるようにしたいです

ECSの設定

  • 事前にCloudwatch Logsのgroupを作成しておきます
  • ECSからCloudwatch Logsにログを送出する設定を入れます
  • 具体的にはECSのタスク定義のところに下記のように書きます
{
...
  "containerDefinitions": [
    {
...
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "xxx-log",
          "awslogs-region": "ap-northeast-1"
        }
...
      },
  • この設定により、Dockerコンテナが標準出力した内容がそのままCloudwatch Logsに出力されるようになります

Railsの設定

  • Railsのログ出力はデフォルトではファイル出力になります
  • これを標準出力するように設定します
config/environments/production.rb
config.logger = Logger.new(STDOUT)

awslogsの導入

awslogs?

  • 上記の内容をデプロイすることで、Cloudwatch LogsにRailsのログが出るようになりますが、そのままだと、切り刻まれたファイルをブラウザからダウンロードする地獄を見る羽目になります
  • クライアント側にawslogsというcliツールを入れることで、普通にtailぽい感じとか、lessでみたりとかできるようになります

awslogsのインストール

  • 事前にaws-cliは入れてaws configureしておきます
  • その上で下記の感じでpipでインストールします
pip install awslogs

awslogsの使い方

tailっぽく

  • tailぽく使いたい場合は下記のようにします
    • xxx-log: ロググループ名
    • --aws-region: リージョン名
    • -w: tailっぽく表示
    • -S: ストリーム情報を表示しない
awslogs get xxx-log --aws-region=ap-northeast-1 -w -S

エディタで見る

  • エディタで見たい場合は-wを取って下記のようにします
    • --start: ログの開始時間(これ以降のログを表示)
awslogs get xxx-log --aws-region=ap-northeast-1 -S --start='1 hour' | less
  • これで普通にlessで見れます
  • ちなみに--start指定はpythonのdateutilというライブラリの記法らしいです

grepかける

  • 上のエディタのケースのlessをgrepにするだけです
awslogs get xxx-log --aws-region=ap-northeast-1 -S --start='1 hour' | grep 'xxx'

終わりに

  • これで何かあっても従来の方法で調査できますね

参考

19
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
16