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
CDK 一発で全てのエラーログを Slack に流す
Search
acomagu
May 20, 2023
2.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CDK 一発で全てのエラーログを Slack に流す
acomagu
May 20, 2023
More Decks by acomagu
See All by acomagu
サーバーレスから Durable Execution へ
acomagu
0
26
Payment Records API を使って地域通貨を Stripe Dashboard に統合してみた
acomagu
0
70
Restate x Stripe: 安心して眠れる決済システムを目指して
acomagu
0
19
Stripe SSoT をするべきか否か
acomagu
0
89
JP_Stripes: リコンサイル(突合処理)のテスト
acomagu
0
130
「境界付けられたコンテキスト間の関係」についてもっと語ろう
acomagu
0
180
地方 MaaS 事例: アプリの進化に伴って変化してきた Stripe 利用方法
acomagu
0
670
Stripe リコンサイルの勘所
acomagu
0
540
AWS CDK を支える Constructs について
acomagu
0
190
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
77
5.5k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
250
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Building Adaptive Systems
keathley
44
3.2k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
260
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
210
Git: the NoSQL Database
bkeepers
PRO
432
67k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
620
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
170
The Limits of Empathy - UXLibs8
cassininazir
1
610
Transcript
CDK 一発で全てのエラーログを Slack に流す 23/5/20 CDK Conference Japan 2023 @acomagu
自己紹介 - @acomagu - 株式会社デザイニウム所属 - CDK 使用歴4年(AWS 使用歴も4年) -
でかい唐辛子とでかいラー油にハマって いる
None
Agenda - やりたいこと - 背景 - 検討した方法 - Lambda error
metric → CloudWatch Alarm → Chatbot - CloudWatch Metrics Filter → CloudWatch Alarm → Chatbot - Datadog - Sentry - 自作→公開 - その後 - まとめ
やりたいこと エラーログを全て Slack に流したい!
背景 - 副業先でエラーログを全て Slack に流していて、とても体験が良かった - 本番環境/開発環境でのエラーにいち早く気づける - 担当エンジニア以外も簡単にアクセスできる/
障害発生時のコミュニケーションに便利 - 開発中もフロントエンドエンジニアさんがサーバーのエラーを見れると便利 - 年1件ほど新規プロジェクトの立ち上げに関わる(受託開発のため) - 複数プロジェクトの監視を続けていく必要がある→ エラーが出たら何らかの通知が欲しい - 毎回監視をポチポチ作るのは大変なため、できる限り IaC 化しておきたい - 使っている AWS サービスは様々 - AppRunner, Lambda, Step Functions, Elastic Beanstalk, API Gateway - 可能な限り「全て」のサービスのエラーログを読みたい → アプリケーション内に通知の仕組みを作るのではなく、 CloudWatch Logs 経由 で通知する仕組 みが必要
改めてやりたいこと - エラーログを全て Slack に流す - できれば StepFunctions や AppSync
等、いろいろな AWS サービスのエラーログを 集約したい - CDK でセットアップの大部分が終わるようにしたい
検討した方法
検討した方法① Lambda error metric → CloudWatch Alarm → Chatbot Lambda
エラーメトリクスが1件で発火する Alarm を作成して、Chatbot に連携する方 法 - “Show logs” のボタンを押すことでロ グを表示できる - グラフが表示される - datapoint ごとにしか通知されない(最 小10秒) - Lambda にしか使えない - Lambda がエラー状態で終了した場合 しかカウントされない(console.error が 通知されない)
- Lambda Error Metrics はエラーログを見ているのではなく、Lambda Runtime API に 通知されたエラーの数を見ている -
(尚、CloudWatch Logs にはそもそもログレベルの概念が無いので、標準出力も標 準エラー出力も同等に扱われるイメージ) console.error が通知されない?
検討した方法② CloudWatch Metrics Filter → CloudWatch Alarm → Chatbot 文字列
“ERROR” が含まれているログを 検知する Metrics Filter を作成して、エラー ログが1件で発火する Alarm を作成し、 Chatbot に連携する方法 - Lambda 以外でも使える - ログを表示できない(Slack 上でも見れ ないし、リンクも無い) - グラフが表示される - datapoint ごとにしか通知されない
検討した方法③ Datadog SDK もしくは CloudWatch 経由で Datadog にログを送信する - Lambda
以外でも使える - Slack に全てのログを送信する方法は 無く、こちらもアラートのみ - ログの内容が Slack で見れる - Monitor Window ごとにしか通知され ない(最小1分)
検討した方法④ Sentry SDK 経由で Sentry にログを送信する - Step Functions 等のエラーは補足でき
ない - Slack に全てのエラーログを送信でき る - ログへのリンクも(一応)通知に含めら れる - ただしアプリケーション側で URL をタグとし て注入しておくというトリッキーな方法 - URL を 200 字に収めなければならない
いまいちユースケースに合うものがない やりたいことはシンプル「全てのエラーログを Slack に流す」だけ 自分で作ってみてもいいのでは?
試しに作ってみた
None
None
便利だったのでコンストラクト化してみる
監視するロググループを一行で追加できるようになった 便利だったのでコンストラクト化してみる
ライブラリ化して公開してみる
何が言いたいか 一度書いた CDK のコードを 「リファクタリングする → ライブラリとして切り出す → 公開する」 この一連の流れが言語の知識さえあればできる(手癖でできる)
追加で学ばなければならない CDK の知識はほとんどない!
何が言いたいか 一度書いた CDK のコードを 「リファクタリングする → ライブラリとして切り出す → 公開する」 この一連の流れが言語の知識さえあればできる(手癖でできる)
追加で学ばなければならない CDK の知識はほとんどない! なぜか? ひとつは Stack と L3 Construct がほぼ同じものだから Stack を書く感覚で L3 Construct も書けてしまう ↑CDK is Beautiful ポイント
cdk-log-notifier のその後 - Reddit で宣伝したところ、40スターくらいつけてもらえた - 開発から3年が経ち、社内では現在 7 のサービスで使われている -
先日 Jsii 対応し、Construct Hub に載った - TypeScript 以外に、Java, Python, Go, .NET に対応
まとめ - エラーログを Slack に流す機構を CDK で構築した - ライブラリ化によって、あらゆるプロジェクトで CDK
コードに数行追加するだけでエ ラーログを Slack に流せるようになった - CDK の美しさのひとつは、Stack、L3 Construct、L2 Construct の違いがほとんど 無いこと それによって CDK Construct ライブラリを作成するハードルがとても低い