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
Amazon CloudWatchでSLOを監視してみた
Search
iwamot
July 06, 2024
Technology
0
110
Amazon CloudWatchでSLOを監視してみた
Cloud Operator Days Tokyo 2024
https://cloudopsdays.com/
iwamot
July 06, 2024
Tweet
Share
More Decks by iwamot
See All by iwamot
AWS⼊社という選択肢、⾒えていますか
iwamot
2
1.2k
40代後半で開発エンジニアからクラウドインフラエンジニアにキャリアチェンジし、生き残れる自信がようやく持てた話
iwamot
9
8.9k
DockerのマルチプラットフォームイメージをGitHub Actionsでビルドして公開する際に、参考にしたドキュメントと便利だったツール
iwamot
4
330
RAGもファインチューニングも使わない 素朴なAIチャットボットを職場に導入した結果
iwamot
1
170
Amazon CloudWatchでSLOを監視してみた CODT 2024 クロージングイベント版
iwamot
0
110
Cost-Effective SLO Error Budget Monitoring with Athena and CloudWatch
iwamot
0
930
AWS Protonの概要
iwamot
0
180
ENECHANGEが実現した管理者の工数負担を削減しながらもAWSセキュリティを強化した方法とは
iwamot
0
180
Web APIのAWS Lambda移行で工夫したこと
iwamot
4
3.5k
Other Decks in Technology
See All in Technology
生成AIをより賢く エンジニアのための RAG入門 - Oracle AI Jam Session #20
kutsushitaneko
4
210
Postman と API セキュリティ / Postman and API Security
yokawasa
0
200
小学3年生夏休みの自由研究「夏休みに Copilot で遊んでみた」
taichinakamura
0
140
大幅アップデートされたRagas v0.2をキャッチアップ
os1ma
2
520
アップデート紹介:AWS Data Transfer Terminal
stknohg
PRO
0
170
ブラックフライデーで購入したPixel9で、Gemini Nanoを動かしてみた
marchin1989
1
510
株式会社ログラス − エンジニア向け会社説明資料 / Loglass Comapany Deck for Engineer
loglass2019
3
31k
NW-JAWS #14 re:Invent 2024(予選落ち含)で 発表された推しアップデートについて
nagisa53
0
250
Oracle Cloudの生成AIサービスって実際どこまで使えるの? エンジニア目線で試してみた
minorun365
PRO
4
270
宇宙ベンチャーにおける最近の情シス取り組みについて
axelmizu
0
110
祝!Iceberg祭開幕!re:Invent 2024データレイク関連アップデート10分総ざらい
kniino
2
230
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
160
Featured
See All Featured
RailsConf 2023
tenderlove
29
940
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.2k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Designing Experiences People Love
moore
138
23k
Writing Fast Ruby
sferik
628
61k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Fireside Chat
paigeccino
34
3.1k
The Cult of Friendly URLs
andyhume
78
6.1k
Transcript
Amazon CloudWatchでSLOを監視してみた Cloud Operator Days Tokyo 2024 https://cloudopsdays.com/ ENECHANGE株式会社 VPoT
岩本隆史
岩本 隆史 / Takashi Iwamoto 現職:ENECHANGE 全社的な技術施策の提案~実行 前職:アマゾンウェブサービスジャパン テクニカルサポート AWS
Community Builder (2024~) カテゴリ:Cloud Operations
Amazon CloudWatchでSLOを監視してみた 1. 複数ウィンドウ、複数バーンレートの監視が大前提 2. ENECHANGEではCloudWatchで監視中 3. 「複合アラーム」と「カスタムメトリクス」の活用が肝 4. コストは月20ドルほど
Amazon CloudWatchでSLOを監視してみた 1. 複数ウィンドウ、複数バーンレートの監視が大前提 2. ENECHANGEではCloudWatchで監視中 3. 「複合アラーム」と「カスタムメトリクス」の活用が肝 4. コストは月20ドルほど
信頼性はアプリケーションの最重要機能 信頼性は、アプリケーションの最も重要な機能です。アプリケーションの信頼性 が低いと、最終的にはユーザーが離れてしまい、他の機能はすべて意味をなさな くなります。 https://cloud.google.com/architecture/framework/reliability?hl=ja
SLOの定義が第一歩 信頼性を実現するために、以下のベスト プラクティスに従ってください。 サービスレベル目標(SLO)とエラー バジェットを使用して、信頼性の目標 を定義します。 インフラストラクチャとアプリケーションにオブザーバビリティを組み込み ます。 拡張性と高可用性を考慮して設計します。 柔軟で自動化されたデプロイ機能を構築します。
効率的なアラートを作成します。 インシデント管理のための共同プロセスを構築します。
SLOの定義が第一歩 SLO の例: 14 日間にわたって測定されたすべての有効なリクエストの 95% で、サ ービスのレスポンスが 400 ミリ秒(ms)より早い。
https://cloud.google.com/architecture/framework/reliability/slo-components?hl=ja
運用は『ワークブック』がデファクトスタンダード https://www.oreilly.co.jp/books/9784873119137/
複数ウィンドウ、複数バーンレートの監視が最適 私達の経験では、複数のバーンレートに基づくアラートはSLOベースのアラート を実装する上で強力な方法であることが分かりました。 『サイトリライアビリティワークブック』「5章 SLOに基づくアラート」
複数ウィンドウ、複数バーンレートの監視が最適 expr: ( job:slo_errors_per_request:ratio_rate1h{job="myjob"} > (14.4*0.001) and job:slo_errors_per_request:ratio_rate5m{job="myjob"} > (14.4*0.001)
) or ( job:slo_errors_per_request:ratio_rate6h{job="myjob"} > (6*0.001) and job:slo_errors_per_request:ratio_rate30m{job="myjob"} > (6*0.001) ) severity: page https://sre.google/workbook/alerting-on-slos/
複数ウィンドウ、複数バーンレートの監視が最適 expr: ( job:slo_errors_per_request:ratio_rate1h{job="myjob"} > (14.4*0.001) and job:slo_errors_per_request:ratio_rate5m{job="myjob"} > (14.4*0.001)
) or ( job:slo_errors_per_request:ratio_rate6h{job="myjob"} > (6*0.001) and job:slo_errors_per_request:ratio_rate30m{job="myjob"} > (6*0.001) ) severity: page 14.4 = 30日間のエラーバジェットの2%を1時間で消費する速度 6 = 30日間のエラーバジェットの5%を6時間で消費する速度 0.001 = SLOが「99.9%」の場合のエラーバジェット
Amazon CloudWatchでSLOを監視してみた 1. 複数ウィンドウ、複数バーンレートの監視が大前提 2. ENECHANGEではCloudWatchで監視中 3. 「複合アラーム」と「カスタムメトリクス」の活用が肝 4. コストは月20ドルほど
CloudWatchアラームでSlackに通知
CloudWatchダッシュボードを事業部に提供
Terraformモジュール化により短時間で導入可能 module "slomon" { source = "
[email protected]
:enechange/terraform-modules.git//slomon-for-alb?ref=v0.53.0" environment_name = "prod-enechange"
alb_access_logs_s3_url = local.alb_access_logs_s3_url sns_topic_names_for_paging = ["cto-incident-enechange"] sns_topic_names_for_ticketing = ["cto-alert-enechange"] critical_user_journeys = { input1_submit = { http_method = "POST" path = "/try/input1_submit" dashboard_order = 1 slo = { availability_target = 95.0 latency_p95_threshold = 4.0 latency_p50_threshold = 3.0 } } } }
過去の実績を参考にSLOを定義 slo = { availability_target = 95.0 latency_p95_threshold = 4.0
latency_p50_threshold = 3.0 }
Amazon CloudWatchでSLOを監視してみた 1. 複数ウィンドウ、複数バーンレートの監視が大前提 2. ENECHANGEではCloudWatchで監視中 3. 「複合アラーム」と「カスタムメトリクス」の活用が肝 4. コストは月20ドルほど
CloudWatch複合アラームが2020年3月にリリース https://aws.amazon.com/jp/about-aws/whats-new/2020/03/amazon-cloudwatch-now- allows-you-to-combine-multiple-alarms/
複合アラームで最適な監視が可能 expr: ( job:slo_errors_per_request:ratio_rate1h{job="myjob"} > (14.4*0.001) and job:slo_errors_per_request:ratio_rate5m{job="myjob"} > (14.4*0.001)
) or ( job:slo_errors_per_request:ratio_rate6h{job="myjob"} > (6*0.001) and job:slo_errors_per_request:ratio_rate30m{job="myjob"} > (6*0.001) ) severity: page
複合アラームで最適な監視が可能 ( ALARM("prod-enechange-slomon-input1_submit-availability-2pct-1h") AND ALARM("prod-enechange-slomon-input1_submit-availability-2pct-5m") ) OR ( ALARM("prod-enechange-slomon-input1_submit-availability-5pct-6h") AND
ALARM("prod-enechange-slomon-input1_submit-availability-5pct-30m") )
各アラームの条件はシンプル ALARM("prod-enechange-slomon-input1_submit-availability-2pct-1h") 1時間のエラー率 > SLO期間のエラーバジェットの2%を1時間で消費するエラー率
ウィンドウごとの集計値をカスタムメトリクスに発行 ウィンドウ メトリクス名 値 1h TotalCount 9999 1h BadCount 99
5m TotalCount 999 5m BadCount 9 ... ... ...
Amazon CloudWatchでSLOを監視してみた 1. 複数ウィンドウ、複数バーンレートの監視が大前提 2. ENECHANGEではCloudWatchで監視中 3. 「複合アラーム」と「カスタムメトリクス」の活用が肝 4. コストは月20ドルほど
CloudWatchの固定料金は月15.6ドル 課金対象 件数 コスト (ドル/月) ダッシュボード 1 3.0 メトリクス 28
8.4 アラーム 17 1.7 複合アラーム 5 2.5
ウィンドウごとの集計や、Slack通知に月数ドル 集計:EventBridge, Lambda, Athena, RDS, CloudWatch (PutMetricData) 通知:SNS
まとめ
ENECHANGEでは、Amazon CloudWatchを活用し、 低コストなSLO監視を実現しました このような事例を下記のチャンネルで発信しています ENECHANGE開発者ブログ:https://tech.enechange.co.jp/ 岩本のX:https://x.com/iwamot