Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
[AWS CDK] 1,000+のCloudWatch Alarmsを自動生成する技術 / [AWS CDK] Technics to Generate 1,000+ CloudWatch Alarms
hiroga
September 28, 2021
Programming
2
990
[AWS CDK] 1,000+のCloudWatch Alarmsを自動生成する技術 / [AWS CDK] Technics to Generate 1,000+ CloudWatch Alarms
AWS CDKとAWS SDKを組み合わせ、監視・バックアップを簡単に行うためのテクニックをご紹介します。
hiroga
September 28, 2021
Tweet
Share
More Decks by hiroga
See All by hiroga
マルチテナントSaaSのカスタム要件に、 Auth0テナントを分割せず向き合う! / Multi tenant SaaS with Auth0
hiroga
1
780
雑な攻撃からELBを守る一工夫 +おまけ / Know-how to protect servers from miscellaneous attacks
hiroga
0
1.5k
NestJSで作るマルチテナントSaaS / Multi-tenant NestJS-based SaaS
hiroga
1
380
Coralの投資先にあらゆる保険金請求をWeb化しようとしている会社があるらしいですよ
hiroga
1
90
CloudWatch LogsのSlack通知自動化 by AWS-CDK
hiroga
0
650
CloudWatch Alarmsを自動展開する by AWS-CDK
hiroga
1
560
外形監視の自動セットアップ!Route53 + Mackerel #自動化エンジニアのLT会
hiroga
1
140
Nantoka-fy @ Coral Developers Night
hiroga
2
240
InsurTech Background
hiroga
1
200
Other Decks in Programming
See All in Programming
PHPアプリケーションにおけるアーキテクチャメトリクスについて / Architecture Metrics in PHP Applications
isanasan
1
280
[2023년 1월 세미나] 데이터 분석가 되면 어떤 일을 하나요?
datarian
0
610
コンピュータビジョンセミナー2 / computer_vision_seminar_libSGM
fixstars
0
320
T3 Stack and TypeScript ecosystem
quramy
3
790
新卒でサービス立ち上げから Hasuraを使って3年経った振り返り
yutorin
0
230
Step Functions Distributed Map を使ってみた
codemountains
0
120
jq at the Shortcuts
cockscomb
1
450
Functional Fun in Kotlin
nomisrev
1
120
PHPDocにおける配列の型定義を少し知る
shimabox
1
140
Writing Greener Java Applications
hollycummins
0
360
存在しないアセットへの参照と 未公開アセットでのネタバレに どう立ち向かうか / How to prevent missing assets and spoilers by assets
orgachem
0
180
そうだ、10Gを引こう
mattenn
0
100
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
346
17k
Principles of Awesome APIs and How to Build Them.
keavy
117
15k
Music & Morning Musume
bryan
37
4.6k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
38
3.6k
Side Projects
sachag
451
37k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
227
16k
Web Components: a chance to create the future
zenorocha
304
40k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
31
20k
A Modern Web Designer's Workflow
chriscoyier
689
180k
The MySQL Ecosystem @ GitHub 2015
samlambert
240
11k
How to name files
jennybc
47
73k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
270
12k
Transcript
D E V D AY - 0 $ " 5
* 0 / c 4 & 1 5 & . # & 3
"NB[PO8FC4FSWJDFT *ODPSJUTB⒏MJBUFT"MMSJHIUT SFTFSWFE [AWS CDK] 1,000+のCloudWatch Alarmsを 自動生成する技術 小笠原寛明
GSPN $ "84$%, 4%,ͷΞʔΩςΫνϟˍϨγϐ
"NB[PO8FC4FSWJDFT *ODPSJUTB⒏MJBUFT"MMSJHIUT SFTFSWFE ຊηογϣϯͷΰʔϧ ձࣾհˍࣗݾհ ఆ͍ͯ͠Δࢹௌऀ
՝ "84$%, 4%,ͷΞʔΩςΫνϟ "84$%, 4%,ͷϨγϐ Agenda
"NB[PO8FC4FSWJDFT *ODPSJUTB⒏MJBUFT"MMSJHIUT SFTFSWFE ຊެԋɾࢿྉൃදऀʢখּݪʣͷௐࠪɾ࣮Λݩʹ࡞͍ͯ͠·͢ɻ ༰ʹޡΓΑΓྑ͍Ҋ͕͋Δ߹ɺͥͻ5XJUUFSʹͯ !YIJSPHBѼʹ ϦϓϥΠɾ%.͍͚ͨͩΕ͍Ͱ͢ɻ ͪΖΜɺ࣭ΦʔσΟΤϯεͷօ͞Μͷࣄྫڞ༗ͳͲେܴͰ͢ʂ 内容についての注意点
"NB[PO8FC4FSWJDFT *ODPSJUTB⒏MJBUFT"MMSJHIUT SFTFSWFE Please Tweet with #AWSDevDay πΠʔτશ෦ಡΈ·͢ʂ
None
"NB[PO8FC4FSWJDFT *ODPSJUTB⒏MJBUFT"MMSJHIUT SFTFSWFE 本セッションのゴール
"NB[PO8FC4FSWJDFT *ODPSJUTB⒏MJBUFT"MMSJHIUT SFTFSWFE چདྷͷ$MPVE'PSNBUJPO 5FSSBGPSNͰ͔ͬͨ͠ɺ ʮΞϓϦέʔγϣϯ͝ͱʹઃఆ͕ඞཁͳΠϯγσϯτରࡦʯΛ ҰׅͰߦ͑ΔΑ͏ʹͳΔ͜ͱɻ 本セッションのゴール
CloudFormationによる設定サンプル
AWS CDK + SDKによる実装サンプル
Amazon CloudWatch Alarms by AWS CDK + SDK
ઃఆ͖͢ͷ͕ଟ͗ͯ͢ɺ • $MPVE8BUDI"MBSNͷઃఆΕ • #BDLVQखಈ • ΤϥʔϩάΛ4MBDLʹྲྀͯ͠ͳ͍ $%,ΞϓϦέʔγϣϯͷઃఆͷΈ ͰҰׅରԠՄೳʹʂ Before
- After
"NB[PO8FC4FSWJDFT *ODPSJUTB⒏MJBUFT"MMSJHIUT SFTFSWFE 会社紹介&自己紹介
ΘΓ͔Μ ͕Μอݥ εϚϗอݥ ίϩφॿ͚߹͍อݥ า͘ͱ͓τΫอݥ ̍έΨอݥ ΫϨΧଳอݥνΣοΧʔ 保険会社でもあり、SaaSベンダーでもあります。
保険会社でもあり、SaaSベンダーでもあります。 顧客 保険会社* *事業会社や保険代理店 のご利用も可能 プラン選択 本人認証 告知・重要事項説明 会員資格確認 商品ページ(LP)
& 申込フォーム 契約参照 異動・解約 決済 契約更新 お客様 ポータル 査定・承認 問合せ 提出書類の参照 (電子データ) 支払記録 保険金 請求フォーム
保険会社を簡単に運営できるようにすることで、魅力的な商品作りのお手伝いをします。
"NB[PO8FC4FSWJDFT *ODPSJUTBGGJMJBUFT"MMSJHIUT SFTFSWFE 自己紹介 ご質問・ご感想大歓迎です! お気軽にフォロー&リプライ してください🙏🙏🙏
"NB[PO8FC4FSWJDFT *ODPSJUTBGGJMJBUFT"MMSJHIUT SFTFSWFE 想定している視聴者
"NB[PO8FC4FSWJDFT *ODPSJUTBGGJMJBUFT"MMSJHIUT SFTFSWFE ✅ ΞϓϦέʔγϣϯΤϯδχΞ ✅ 43& ✅ $%,Λ࣮ࡍͷݱͰ͍͍ͨਓʂ
想定している視聴者
"NB[PO8FC4FSWJDFT *ODPSJUTBGGJMJBUFT"MMSJHIUT SFTFSWFE 課題
実際にSlackであった会話(再現#1) CloudWatch Logsのログの量やばいですね 課金が爆増してるのこれかも… なんかAmplifyの使用量、 月曜日だけ高くないですか? Redashが容量不足で死んでます
実際にSlackであった会話(再現#2) エラーは出てましたが、 Slack通知が設定されてませんでしたね… すみません、LogGroupにSlack通知を接続 するのを忘れてました。 このエラー、先月から定期的に出てたみたい ですね…
"NB[PO8FC4FSWJDFT *ODPSJUTBGGJMJBUFT"MMSJHIUT SFTFSWFE AWS CDK + SDKのアーキテクチャ
CloudFormationによる設定サンプル(再掲)
Inspired by Radiosonde
AWS CDK + SDK AWS SDK AWS CDK Alarm SNS
Topic Alarm Alarm Alarm Ϧιʔε Ϧιʔε Ϧιʔε Ϧιʔε Ϧιʔε Ϧιʔε
実装例
Gitフローがおすすめ ローカル 開発環境にデプロイOK 開発環境 developブランチを反 映 本番環境 v1.6などタグでリリース
☑ ηΩϡϦςΟʢ(VBSE%VUZ 4UBDL4FUTʣ ✅ ωοτϫʔΫʢ$MPVE8BUDI.FUSJDTʣ ✅ αʔόʔʢ$MPVE8BUDI.FUSJDTʣ ✅ ΞϓϦέʔγϣϯʢΤϥʔϩάʣ ✅
ϑϩϯτΤϯυʢ֎ܗࢹʣ ☑ Ϗδωε্ͷత ✅ όοΫΞοϓʢ"84#BDLVQʣ AWS CDK + SDKの守備範囲
"NB[PO8FC4FSWJDFT *ODPSJUTBGGJMJBUFT"MMSJHIUT SFTFSWFE AWS CDK + SDKのレシピ
• $MPVE8BUDI.FUSJDT § &$ &$4 -BNCEB § 3%4 %ZNBNP%# 4
§ $MPVE8BUDI • $MPVE8BUDI-PHT /PUJGJDBUJPO • 3PVUFIFBMUIDIFDLT • "84#BDLVQ § &$ 3%4 %ZOBNP%# AWS CDK + SDKのレシピ
None
• ରͷϦιʔεΛҰׅऔಘͯ͠ઃఆ • -BNCEBͳͲΞΧϯτશମͰͷ੍ݶ͕͋Δ߹ʹศར • "MBSNͷ্༷ɺຖΞϥʔϜΛ0,ʹ͢-BNCEB͕͋ΔͱΑ͍ • "OPNBMZ%FUFDUJPOΛ͑ڥ͝ͱͷࠩҟΛ͋ΔఔແࢹͰ͖Δ CloudWatch Metrics
取得したEC2インスタンスに対して設定
しきい値の意図をコメントしよう
Anomaly Detectionも設定できる
AWS Chatbotで通知するとグラフがついてくる
• KVTU*O$BTFͰɺҎ্ͷ"84ΞΧϯτͰ Ҏ্ͷ $MPVE8BUDI"MBSNΛཧ͍ͯ͠Δ • ΞΫηεͷਪҠʹ͜Ε·ͰҎ্ʹහײʹͳͬͨ • &YʮΞΫηεͷਪҠ͕ݟͨ͜ͱͳ͔ͬͨͷͰɺϝϧϚΨͷӨڹ͔ௐࠪ͠·͢ʯ • 4MBDL্Ͱ௨ͷάϥϑ͕ݟΒΕΔͷ͕خ͍͠
• खಈͰ࡞ͨ͠3FEBTIΠϯελϯεͷετϨʔδ༻ྔͳͲɺຯʹ ॏཁͳʹ͙͢ʹؾ͚ΔΑ͏ʹͳͬͨɻ CloudWatch MetricsをCDKで管理して
None
• -PH(SPVQʹର͢Δ4VCTDSJQUJPO'JMUFSΛҰׅઃఆ • -BNCEBͷΑ͏ʹࣗಈͰ-PH(SPVQ͕Ͱ͖Δ߹ʹߴ͍ޮՌ • 4VCTDSJQUJPOϑΟϧλʔͰͳ͘-BNCEBͰϑΟϧλʔ͢Δख • ਖ਼نදݱ͕ར༻Ͱ͖ɺ୯ମςετ͕͍͢͠ • -BNCEBͷ࣮ߦճ͕૿͑ΔͷͰɺίετ্͕͕Δ
• ௨ϝοηʔδʹ$MPVE8BUDIͷϦϯΫΛೖΕΔͱੜ࢈ੑ61 • Τϥʔϩά͚ͩΛग़ྗ͢Δ-BNCEBΛ࡞Δͱݕূ͕ศར • ௨༻-BNCEBࣗࢹର͔Βআ֎͢Δ͜ͱ • Ԡ༻,JOFTJT%BUB'JSFIPTFʹΑΔ4ͷόοΫΞοϓ • Ԡ༻%BUBEPHͷసૹ CloudWatch Logs + Notification
実装例
CloudWatch Logsへのリンクを埋め込む
• ΤϥʔࢥͬͨΑΓى͖͍ͯΔ • "84$IBUCPUͷΤϥʔʢ௨͕དྷͳ͍ͷͰਖ਼ৗͩͱࢥͬͯ͠·͏ʣ • "1*(BUFXBZͷΤϥʔ • ීஈΘͳ͍Ϧʔδϣϯͷ-BNCEBͷΤϥʔ • $MPVE8BUDI-PHTͷϦϯΫධ
• Ԡ༻%BUBEPHͷϦϯΫ CloudWatch Logsの通知をCDKで管理して
None
• 3PVUFͷϨίʔυ͔ΒࢹରΛࣗಈੜ • KVTU*O$BTFͷྫ*1ΞυϨε·ͨ$MPVE'SPOUʹϧʔςΟϯά͞Ε͍ͯΕࢹ • ΤϯυϙΠϯτ͋ͨΓ.POUI͔Β • "84͔"84Ҏ֎͔ͰҟͳΔɻ • #BTJDೝূΫϥΠΞϯτূ໌ॻར༻Ͱ͖ͳ͍
• Ԡ༻3PVUFҎ֎ͰϨίʔυΛཧ͍ͯͯ͠˓ • Ԡ༻֎ܗࢹʹผͷαʔϏεʢ.BDLFSFM 6QUJNF3PCPU FUDʜʣ Route53 health checks
Route53 health checks
レコードから監視対象を自動抽出
• ࢹରͷՃ࿙Ε͕ແ͘ͳͬͨʂ • ैདྷϑϩϯτΤϯυΤϯδχΞ͕.BDLFSFMʹొ͍ͯͨ͠ • Ԡ༻ϦϯΫΕݕͷͨΊʹ$MPVE8BUDI4ZOUIFUJDTΛಋೖ͍ͨ͠ Route53 Health CheckをCDKで管理して
None
• &$ 3%4 %ZOBNP%#ͳͲͷόοΫΞοϓΛ·ͱΊͯઃఆ • खಈͰ࡞ͬͨӡ༻ͷͨΊͷ&$ͳͲରԠͰ͖Δ • 4QPU'MFFUΛআ֎͠ͳ͍ͱόοΫΞοϓ͕ࡍݶͳ͘૿͑ΔͷͰҙ • &$ΠϯελϯεͷλάͰݟ͚ΒΕ·͢
• όοΫΞοϓର͝ͱʹ7BVMUΛ࡞Βͳ͍Α͏ʹҙ • 7BVMUͷ࡞ݸʹϦʔδϣϯ͝ͱͷ্ݶ͋Γ • όοΫΞοϓͷΠϕϯτΛ௨Մೳ • 4/4ొ·ͨ&WFOU#SJEHFܦ༝ͰՄೳʢະݕূʣ AWS Backup
AWS Backup
• खಈͰ࡞ͬͨϦιʔεόοΫΞοϓ͕͋Γ҆৺ • όοΫΞοϓઃఆΛूதཧͰ͖ΔͷͰɺηΩϡϦςΟνΣοΫ˓ AWS BackupをCDKで管理して
"NB[PO8FC4FSWJDFT *ODPSJUTB⒏MJBUFT"MMSJHIUT SFTFSWFE まとめ
$MPVE'PSNBUJPOͰ͔ͬͨ͠ΞϓϦέʔγϣϯ͝ͱͷࢹɺ "84$%,ͱ4%,ΛΈ߹ΘͤΕରԠՄೳʂ まとめ
We’re HERING!!! KVTU*O$BTFͰɺҰॹʹಇ͘ϝϯόʔΛશ৬छͰืू͍ͯ͠·͢ʂ ׂʹͱΒΘΕͣɺ7JTJPOʹ͔ͬͯਐͰ͖Δํʂ • ΞϓϦέʔγϣϯΤϯδχΞʢϑϩϯτΤϯυˍόοΫΤϯυʣ • 43& • σβΠφʔ
• 1E.ɾ4" • "OENPSF
• DPEFOJ[FUPPMTSBEJPTPOEFc(JU)VC • <$%,>&$ϦετΛऔಘͯ͠શʹ$MPVE8BUDIΞϥʔϜΛઃఆ͢Δ c%FWFMPQFST*0 • "84$%,ͰطଘͷϩάάϧʔϓʹϝτϦΫεϑΟϧλΛઃఆ͢Δํ๏ c%FWFMPQFST*0 • $MPVE8BUDI"MBSNTΛࣗಈల։͢Δ
CZ"84$%, • $MPVE8BUDI-PHTͷ4MBDL௨ࣗಈԽ CZ"84$%, • ֎ܗࢹͷࣗಈηοτΞοϓʂ3PVUF .BDLFSFMࣗಈԽΤϯδχΞͷ-5ձ 参考資料
Thank you! "NB[PO8FC4FSWJDFT *ODPSJUTB⒏MJBUFT"MMSJHIUT SFTFSWFE <"84$%,>5FDIOJDTUP(FOFSBUF $MPVE8BUDI"MBSNT •
小笠原寛明 • 5PNPLJ4BUP(原稿レビュー) • ,PUB5PNJNBUTV(原稿レビュー・実装) • 5ZBNBIPSJ(登壇練習) 4QFDJBM5IBOLT
Please complete the session survey "NB[PO8FC4FSWJDFT *ODPSJUTBGGJMJBUFT"MMSJHIUT SFTFSWFE