Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Laravelのログにエラーが吐き出されたら自動的にBacklogにログ内容を記載したチケット...
Search
hico00
April 19, 2019
Technology
160
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Laravelのログにエラーが吐き出されたら自動的にBacklogにログ内容を記載したチケットを作成する #sa_study
2019/04/19に行ったスタジオ・アルカナ社内勉強会で使用したスライドです。
hico00
April 19, 2019
More Decks by hico00
See All by hico00
自分だけのアバターを簡単につくろう&アバターでビデオ会議! #sa_study
hico00
0
560
PHPでもVtuberになりたい! #phperkaigi
hico00
0
220
[PHPカンファレンス2019]当日スタッフをおすすめしたい話
hico00
0
280
Other Decks in Technology
See All in Technology
Hub & Spoke 環境のネットワークルーティングを分解してみる
tsuyataku
1
530
その指示、Bobにしっかり伝わってる?初心者でも即実践できる プロンプト/コンテキスト設計のコツ
muehara
1
170
Redmine 7.0で私が開発した新機能の狙いと背景
vividtone
1
110
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
1
250
Multica × 長期記憶:40個のミニプロジェクト管理
eiei114
0
160
Azure Cost Management の FOCUS コストデータを迷わず読むための“3つの軸”
tetsuyaooooo
0
150
AIで仕事のやり方を変える
matsu7874
1
890
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
0
260
AIエージェントの開発・提供におけるセキュリティリスクの論点と対策
flatt_security
1
590
bet_ai_day_2026_session02
agenticsec
1
1.3k
Bet AI Day 2026丨Agentは、「金融」という巨大産業の何を変えられるのか
layerx
PRO
0
1.1k
いま、生成AIにKaggleをどこまで 任せられるか — ROGIIコンペでの進め方とTips
k951286
3
1.4k
Featured
See All Featured
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Evolving SEO for Evolving Search Engines
ryanjones
0
280
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Abbi's Birthday
coloredviolet
3
9.8k
Scaling GitHub
holman
464
140k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.5k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Transcript
Laravelのログにエラーが吐き出されたら自動的にBacklogにロ グ内容を記載したチケットを作成する 20190419 ARCANA Meetup#49 Hikari Fukasawa @hico00
依頼されました リーダー 「CloudWatchから発行されるバグチケットが見辛いから、 エラー内容とか追記されるようにしてっ!」
当時の通知仕様 1. エラーが発生すると、laravel.log に stacktrace が吐き出される。 2. CloudWatch で "[stacktrace]"
の文字列がログファイルに吐き出されると、アラートが発生する ようなアラームを設定。 3. アラートが発生すると、Backlogにメール(AWS SNS)でチケット登録する。 参照: メールによる課題登録 4. チケットが登録されたら、CloudWatch上で該当時間のログファイルを確認。(余裕があれば、 チケットの件名を書き換えたり)
None
確かに見辛いというか、めんどかった
やりましょう すでにCloudWatchでアラームは設定されているので、AWS SDKを使ってログ内容を取得する ような Lambda 関数を作成します。 laravel.logにstacktraceが吐き出されているので、それの内容をすべて抽出。
構成 CloudWatch ‑> SNS ‑> Lambda ‑> SNS (Backlogのメール課題登録)
CloudWatch から渡されるデータ { AlarmName: 'php7app-stg20-ERROR', AlarmDescription: null, AWSAccountId: '217903947487', NewStateValue:
'ALARM', NewStateReason: 'Threshold Crossed: 1 datapoint [1.0 (20/03/19 09:27:00)] was StateChangeTime: '2019-03-20T09:42:59.895+0000', Region: 'Asia Pacific (Tokyo)', OldStateValue: 'OK', Trigger: { MetricName: 'php7app-stg20-ERROR', Namespace: 'LogMetrics', StatisticType: 'Statistic', Statistic: 'SUM', ・・・省略 } }
AWS SDK(JS) 使うメソッド 1. describeMetricFilters() 2. filterLogEvents()
describeMetricFilters 指定されたメトリクスフィルタの一覧を取得する https://docs.aws.amazon.com/ja_jp/AmazonCloudWatchLogs/latest/APIReference/API_Delete MetricFilter.html CloudWatchから渡される情報だけだと足りないので、詳細を取得する。 metricName と metricNamespace の2つをパラメーターで渡す。
describeMetricFiltersのレスポンス { metricFilters: [{ filterName: 'stg20-ERROR', filterPattern: 'stacktrace', metricTransformations: [Array],
creationTime: 1553058610295, logGroupName: 'kimisuka-stg-20/php7app/srv/current/storage/logs/laravel.log' }] }
filterLogEvents 指定されたロググループからのログイベント一覧を取得する https://docs.aws.amazon.com/ja_jp/AmazonCloudWatchLogs/latest/APIReference/API_FilterL ogEvents.html describeMetricFilters で取得したデータを元に取得する。 logGroupName, filterPettern... limit:取得件数 startTime/endTime:時間範囲をUnixタイムスタンプ
(ミリ秒)で指定
filterLogEventsのレスポンス { events: [ { logStreamName: 'php7app1', timestamp: 1553249141154, message:
'[2019-03-22 19:05:40] staging.ERROR: Undefined variable: input { ingestionTime: 1553249146221, eventId: '34638613326711879619236554788766527172305841119978192896' }, { logStreamName: 'php7app1', timestamp: 1553249141154, message: '[stacktrace]', ingestionTime: 1553249146221, eventId: '34638613326711879619236554788766527172305841119978192897' }, ... 省略 ] }
request.logの取得 laravel.logと同じディレクトリに存在しているので、logGroupName の "laravel.log"箇所を書き 換えて取得。
None
おわりに AWS Lambda関数を作成するとき、ブラウザ上で直接コードを書くことはおすすめしません… (ブラウザで開きっぱなしとかにしてると、セッションが切れて強制的にログインし直す必要が 出てきた時、保存されてない変更内容は…(お察し))
参考 CloudWatchでエラーログの内容を通知させたい | Qiita https://qiita.com/onooooo/items/f59c69e30dc5b477f9fd
ご静聴ありがとうございました。