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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
hico00
April 19, 2019
Technology
0
150
Laravelのログにエラーが吐き出されたら自動的にBacklogにログ内容を記載したチケットを作成する #sa_study
2019/04/19に行ったスタジオ・アルカナ社内勉強会で使用したスライドです。
hico00
April 19, 2019
Tweet
Share
More Decks by hico00
See All by hico00
自分だけのアバターを簡単につくろう&アバターでビデオ会議! #sa_study
hico00
0
560
PHPでもVtuberになりたい! #phperkaigi
hico00
0
200
[PHPカンファレンス2019]当日スタッフをおすすめしたい話
hico00
0
280
Other Decks in Technology
See All in Technology
PostgreSQL 18のNOT ENFORCEDな制約とDEFERRABLEの関係
yahonda
0
130
Astro Islandsの 内部実装を 「日本で一番わかりやすく」 ざっくり解説!
knj
0
290
Datadog で実現するセキュリティ対策 ~オブザーバビリティとセキュリティを 一緒にやると何がいいのか~
a2ush
0
150
「捨てる」を設計する
kubell_hr
0
380
モジュラモノリス導入から4年間の総括:アーキテクチャと組織の相互作用について / Architecture and Organizational Interaction
nazonohito51
7
4.1k
開発チームとQAエンジニアの新しい協業モデル -年末調整開発チームで実践する【QAリード施策】-
qa
0
350
契約書からの情報抽出を行うLLMのスループットを、バッチ処理を用いて最大40%改善した話
sansantech
PRO
3
290
Phase04_ターミナル基礎
overflowinc
0
2.5k
Amazon Qはアマコネで頑張っています〜 Amazon Q in Connectについて〜
yama3133
1
140
開発チームとQAエンジニアの新しい協業モデル -年末調整開発チームで実践する【QAリード施策】-
kaomi_wombat
0
250
Why we keep our community?
kawaguti
PRO
0
290
SaaSに宿る21g
kanyamaguc
2
170
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
6.8k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
270
We Are The Robots
honzajavorek
0
200
Amusing Abliteration
ianozsvald
0
140
How to Think Like a Performance Engineer
csswizardry
28
2.5k
Statistics for Hackers
jakevdp
799
230k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
290
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.2k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
300
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
130
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
ご静聴ありがとうございました。