elastic beanstalkのログをcloud watch logsに飛ばす
基本
ここに基本的なことはまとまってる。
ぽちぽちすればストリーミングできることが分かる。
監視対象が足らないことも分かる。
rubyだとこんな感じ。
railsのproduction.logとかの面倒は見てくれないのがわかる。
production.logもストリーミングしたい
fluentdの方法はすぐ出てくるけど、CWLogsでもS3に吐ける(らしい)し、kibanaとかにも出せる(らしい)し、まずはAWSにあるものでやりたいじゃん。
参考
やりかた
1. ファイル作る
こんなファイルを.ebextensions
ディレクトリの下に作る。
/etc/awslogs/config/logs.conf
を作ってそうなとこと commands:
があればOK。
こんなかんじ。
packages:
yum:
awslogs: []
files:
"/etc/awslogs/config/logs.conf" :
mode: "000600"
owner: root
group: root
content: |
[/var/log/app.log]
log_group_name = `{"Fn::Join":["/", ["/aws/elasticbeanstalk", { "Ref":"AWSEBEnvironmentName" }, "var/log/app.log"]]}`
log_stream_name = {instance_id}
file = /var/log/app.log
"/var/log/app.log" :
mode: "000666"
owner: root
group: root
content: |
created by .ebextensions
commands:
"01":
command: chkconfig awslogs on
"02":
command: service awslogs restart
ついでに、logファイルも作ってます。webapp
ユーザーでは/var/log
にファイル作れないので。
たぶん、webapp
ユーザーが書き込めるディレクトリを作ってあげるほうが正しいはず。
2. 狙った場所にログを吐く
Railsならbroadcastとかで吐くと良いんだと思う。
3. デプロイ
eb deploy
自分はコミットしてない修正がeb deploy
に乗っからないことを知らず、時間を溶かしました。悲しい。
4. 確認
/var/log/awslogs.log
にapp.log
をpublishしてそうな痕跡が見れるかと思います。
実際にcloud watch logsで見れたらおk。
感想
古い記事だと/var/awslogs/config/...
みたいなファイルを修正してたり、/etc/awslogs/awslogs.conf
を上書きしてたりするけど、本家のGithubみると、/etc/awslogs/config/logs.conf
に書くのが正しいみたい。
でも古い記事も当時の正義だったはずなので、この記事もいつまで正義か分からないです。そのうちポチポチで設定してeb save
で落としてこれる世界が来るはず。はよこい。
というか記事少ないよー
Author And Source
この問題について(elastic beanstalkのログをcloud watch logsに飛ばす), 我々は、より多くの情報をここで見つけました https://qiita.com/193/items/615b3e67548289303f3e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .