LoginSignup
5
4

More than 5 years have passed since last update.

CloudWatchLogsをFuelPHPで使ってみた

Last updated at Posted at 2015-02-25

tl;dr

  • FuelPHP と CloudWatchLogs を組み合わせた時にハマったのでメモ
  • 導入までのあれこれは公式ドキュメントとかを参照

起きたこと

都内某日

「CloudWatch Logs が Tokyo にも来たし、遊んでみるぜー」
「FuelPHPでログは fuel/app/logs に日付単位で生成されるので、ワイルドカードを使ってfileを指定すればいいよなー」

/etc/awslogs/awslogs.conf
[/fuelphp/logs]
datetime_format = %b %d %H:%M:%S
file = /path/to/fuel/app/logs/20*/*/*
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = /fuelphp/logs

awslogsをstartして、AWSマネージメントコンソールで確認
「よしよし、上手くうごいてる♪」

一夜明けて

「あれ?今日の分のログがとれてない?」
「再起動してもダメポ...」
「/var/log/awslogs.log になんか変なエラー出てるお...」
(ノ`Д´)ノ彡┻━┻

原因

  • ユニークであるべきsequenceTokenが重複した状態でPutLogEventsしてるのが原因
    • (要出典というかちゃんとは追ってないけど、)どうもこのsequenceTokenのジェネリ方がline単位でのハッシュ値(?)的な感じっぽげ
  • FuelPHPのLogクラスの罠のせいで、ログファイル最初の1行目が重複しちゃう
    • その結果、sequenceTokenが重複しちゃってあぼーん

解決方法

  • Logクラスをオーバライドしちゃう
    • そもそもFuelPHPのLogクラス使いにくいと思ったり...
  • FuelPHPを使わない
    • 混ぜるな危険...
  • agent を自作する
    • 本家のもpythonスクリプトだし...
5
4
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
5
4