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
CloudWatchに本格的に入門する_20230711
Search
Kentaro Takaki
July 11, 2023
0
110
CloudWatchに本格的に入門する_20230711
This is slides for JAWSUG-Nagoya @ July 11, 2023
Kentaro Takaki
July 11, 2023
Tweet
Share
More Decks by Kentaro Takaki
See All by Kentaro Takaki
自動車産業向けに公開しているAWSのソリューションを調べてみる
kennytakaki
0
480
名古屋ーメディアjaws
kennytakaki
0
34
コンテナに詳しくないのにレビューアになってしまったので観点と方法を整理したい
kennytakaki
1
83
AWS Lake Formation によるデータアクセス管理
kennytakaki
0
220
IoT_と位置情報系サービスてんこ盛り回-202301-JAWS-UG-Nagoya.pdf
kennytakaki
0
640
IoT と位置情報系サービスてんこ盛り回-2023-01-JAWS-UG-Nagoya
kennytakaki
1
160
JAWS-UG 名古屋(2023-01 IoTとモビリティ特集-予告)
kennytakaki
0
190
Windows上でのVSCodeを前提としたポータブルな開発環境構築の一例
kennytakaki
0
120
BLEAで異常検出と通知を実装してインシデントの訓練まで行ってみた
kennytakaki
0
130
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
20
1.1k
Rails Girls Zürich Keynote
gr2m
94
13k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Teambox: Starting and Learning
jrom
133
8.8k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
10 Git Anti Patterns You Should be Aware of
lemiorhan
655
59k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.3k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
Transcript
2023/07/11 JAWS-UG 名古屋 オブザーバビリティ for AWS CloudWatchに本格的に入門する 2023/07/11 JAWS-UG名古屋 Takaki@frommiddle1
1
今回の会期の趣旨 #jawsug #jawsug_Nagoya #コラボベースNAGOYA • 普段から実証実験レベルの案件をこなしている。 • 案件が小回りなのでモニタリングやオブザーバビリティをまじめに考える機 会が少ない。 •
CloudWatch Metrics, Logs, Alarm, Event くらいしか触ったことがない。 • プロダクトレベルで何かやろうとしたときに、技術選定に困る未来が待って いる。。。しかし仕組みは知っておきたい。 • LTのテーマに設定して強制的に勉強してしまおう…集合知だ。 2/20
オブザーバビリティとは? #jawsug #jawsug_Nagoya #コラボベースNAGOYA オブザーバビリティ(Observability) とは「いつ、どこで、なにが 起こっているのか、システムの状態を把握できる能⼒‧状態」 ※新井雅也、⾺勝淳史、Amazon CloudWatch[本格]入門 ~クラウドネイティブオブザーバビリティストーリー~、第13
回技術書典(2022年)より システム(on aws) リクエスト レスポンス ユーザ ではなぜAWSを扱う上でオブザーバビリティに着目するのか? Amazon API Gateway Container 1 Container 2 Amazon DynamoDB VPC Amazon Simple Queue Service (Amazon SQS) サービスをNWでつなぐ 一種の分散システムであ り、問題個所や影響範囲 がわかりにくい。 サービスをコンポーネント として追加しやすいためシ ステムが大きくなるスピー ドが速い。 3/20
AWSでオブザーバビリティを構築するには #jawsug #jawsug_Nagoya #コラボベースNAGOYA CloudWatch が提供する各種機能を利活用するために… • よさそうな参考書があった!! • たくさんあるCloudWatch
*** を網羅的に学べる • 各章にミニハンズオンがあり、知識を整理できる • 物理本が欲しくなる。。。 (技術書典#13イベントで物理本完売) 4/20
関連機能の整理 #jawsug #jawsug_Nagoya #コラボベースNAGOYA 機能名 説明 CloudWatch Metrics AWS上のワークロードを指標化して保存、表示、分析する CloudWatch
Logs AWS上のアプリケーションログを監視、保存、分析する CloudWatch Alarm CloudWatch Metrics に条件を指定して通知などのトリガを発生させる CloudWatch Events / EventBridge AWS リソースの変更を知らせるイベントを取り扱う CloudWatch Resource Health アプリケーションを稼働させるEC2 インスタンスの状態を把握する CloudWatch Synthetics プロアクティブにWebAPIやサービスを監視して状態を把握する CloudWatch Evidently アプリに機能フラグ(フィーチャーフラグ) やA/B テストサービスを導入する CloudWatch RUM Web ページやスマホアプリのパフォーマンスを観測する X-Ray アプリケーションが処理するリクエストに関するデータを収集する CloudWatch ServiceLens アプリケーション全体のつながりやトラフィックの状態を可視化する CloudWatch Container Insights ECS などのコンテナワークロードのパフォーマンスを統合的に分析できる CloudWatch Lambda Insights Lambda の各種パフォーマンスやメトリクスを分析できる CloudWatch Contributor Insights CloudWatch Logsに蓄積されたログを分析して、ボトルネックを発見する CloudWatch Application Insights CloudWatch Logsに蓄積されたログを学習アプリの潜在問題を特定する CloudWatch Anomaly Detection CloudWatch に蓄積されたメトリクスの内容からパターンを予測し、そのパ ターンとは異なるメトリクスを異常値として検出する機能 CloudWatch Internet Monitor アプリのパフォーマンスに関わるインターネットの問題を可視化する 5/20
関連機能の整理 #jawsug #jawsug_Nagoya #コラボベースNAGOYA 機能名 説明 CloudWatch Metrics AWS上のワークロードを指標化して保存、表示、分析する CloudWatch
Logs AWS上のアプリケーションログを監視、保存、分析する CloudWatch Alarm CloudWatch Metrics に条件を指定して通知などのトリガを発生させる CloudWatch Events / EventBridge AWS リソースの変更を知らせるイベントを取り扱う CloudWatch Resource Health アプリケーションを稼働させるEC2 インスタンスの状態を把握する CloudWatch Synthetics プロアクティブにWebAPIやサービスを監視して状態を把握する CloudWatch Evidently アプリに機能フラグ(フィーチャーフラグ) やA/B テストサービスを導入する CloudWatch RUM Web ページやスマホアプリのパフォーマンスを観測する X-Ray アプリケーションが処理するリクエストに関するデータを収集する CloudWatch ServiceLens アプリケーション全体のつながりやトラフィックの状態を可視化する CloudWatch Container Insights ECS などのコンテナワークロードのパフォーマンスを統合的に分析できる CloudWatch Lambda Insights Lambda の各種パフォーマンスやメトリクスを分析できる CloudWatch Contributor Insights CloudWatch Logsに蓄積されたログを分析して、ボトルネックを発見する CloudWatch Application Insights CloudWatch Logsに蓄積されたログを学習アプリの潜在問題を特定する CloudWatch Anomaly Detection CloudWatch に蓄積されたメトリクスの内容からパターンを予測し、そのパ ターンとは異なるメトリクスを異常値として検出する機能 CloudWatch Internet Monitor アプリのパフォーマンスに関わるインターネットの問題を可視化する 2022年11月末にプレビューで登場したため、 提示した参考文献には記載がない。 6/20
関連機能の整理 #jawsug #jawsug_Nagoya #コラボベースNAGOYA 機能名 説明 CloudWatch Metrics AWS上のワークロードを指標化して保存、表示、分析する CloudWatch
Logs AWS上のアプリケーションログを監視、保存、分析する CloudWatch Alarm CloudWatch Metrics に条件を指定して通知などのトリガを発生させる CloudWatch Events / EventBridge AWS リソースの変更を知らせるイベントを取り扱う CloudWatch Resource Health アプリケーションを稼働させるEC2 インスタンスの状態を把握する CloudWatch Synthetics プロアクティブにWebAPIやサービスを監視して状態を把握する CloudWatch Evidently アプリに機能フラグ(フィーチャーフラグ) やA/B テストサービスを導入する CloudWatch RUM Web ページやスマホアプリのパフォーマンスを観測する X-Ray アプリケーションが処理するリクエストに関するデータを収集する CloudWatch ServiceLens アプリケーション全体のつながりやトラフィックの状態を可視化する CloudWatch Container Insights ECS などのコンテナワークロードのパフォーマンスを統合的に分析できる CloudWatch Lambda Insights Lambda の各種パフォーマンスやメトリクスを分析できる CloudWatch Contributor Insights CloudWatch Logsに蓄積されたログを分析して、ボトルネックを発見する CloudWatch Application Insights CloudWatch Logsに蓄積されたログを学習アプリの潜在問題を特定する CloudWatch Anomaly Detection CloudWatch に蓄積されたメトリクスの内容からパターンを予測し、そのパ ターンとは異なるメトリクスを異常値として検出する機能 CloudWatch Internet Monitor アプリのパフォーマンスに関わるインターネットの問題を可視化する ・サーバレスが好み ・業務でもよく利用している ・導入しやすそう 上記の理由からここを深堀 この辺りは経験済み 7/20
CloudWatch Lambda Insights #jawsug #jawsug_Nagoya #コラボベースNAGOYA • Lambda 関数ランタイムパフォーマンスメトリクスとログを収集および集計する。 •
Lambda 関数に関する問題の診断に使用することができます。 • Lambda 関数に対して Lambda Insights を有効にすると、Lambda Insights は関数ごとに 8 つのメトリック スを報告し、関数呼び出しごとに約 1 KB のログデータが CloudWatch に送信される。 →料金はCloudWatchの料金に比例。 →カスタムメトリクス/月 が0.3USDなので、ベースとして関数あたり2.4USD/月が発生する。 • 設定はマネコンから簡易にできる。 8/20
設定方法 #jawsug #jawsug_Nagoya #コラボベースNAGOYA • コンソールから簡単に設定できる 9/20
設定方法 #jawsug #jawsug_Nagoya #コラボベースNAGOYA • コンソールから簡単に設定できる 10/20
設定方法 #jawsug #jawsug_Nagoya #コラボベースNAGOYA • コンソールから簡単に設定できる 11/20
CloudWatch Lambda Insightsで確認可能なもの #jawsug #jawsug_Nagoya #コラボベースNAGOYA • パフォーマンスのモニタリングとして以下があげられる 呼び出しとエラー 所要時間
スロットリング メモリ使用量 CPU使用率 ネットワーク使用率 この辺りは有用そう 12/20
取得可能なパフォーマンスデータ1 #jawsug #jawsug_Nagoya #コラボベースNAGOYA • cpu_system_time CPU がカーネルコードの実行に費やした時間。単位: ミ リ秒
• cpu_total_time cpu_system_time と cpu_user_time の合計。単位: ミリ秒 • cpu_total_time cpu_system_time と cpu_user_time の合計。単位:ミリ秒 • cpu_user_time CPU がユーザーコードの実行に費やした時間。単位: ミリ 秒 • fd_max 使用可能なファイル記述子の最大数。単位: 個 • fd_use 使用中のファイル記述子の最大数。単位: 個 • init_duration Lambda 実行環境のライフサイクルの init フェーズで費や された時間。 単位:ミリ秒 • memory_utilization 最大メモリは、関数に割り当てられたメモリのパーセ ンテージとして測定されます。単位: パーセント • memory_utilization 最大メモリは、関数に割り当てられたメモリのパーセ ンテージとして測定されます。単位: パーセント 13/20
取得可能なパフォーマンスデータ1 #jawsug #jawsug_Nagoya #コラボベースNAGOYA • rx_bytes 関数の受信バイト数。単位: バイト • threads_max
関数プロセスで使用中のスレッドの数。関数の作成者は、ラン タイムによって作成されたスレッドの初期を制御しません。単位: 個 • tmp_max /tmp ディレクトリで使用可能な領域の量。単位: バイト • tmp_used /tmp ディレクトリ内で使用される領域の量。単位: バイト • total_memory Lambda 関数に割り当てられたメモリの量。これは関数のメ モリサイズと同じです。単位: メガバイト • total_network rx_bytes と tx_bytes の合計。I/O タスクを実行しない関数の 場合でも、Lambda ランタイムによって行われるネットワーク呼び出しのため、 この値は通常 0 より大きくなります。単位: バイト • tx_bytes 関数の送信バイト数。単位: バイト • used_memory_max 関数サンドボックスの測定されたメモリ。単位: メガバ イト 14/20
取得可能なパフォーマンスデータ1 #jawsug #jawsug_Nagoya #コラボベースNAGOYA • rx_bytes 関数の受信バイト数。単位: バイト • threads_max
関数プロセスで使用中のスレッドの数。関数の作成者は、ラン タイムによって作成されたスレッドの初期を制御しません。単位: 個 • tmp_max /tmp ディレクトリで使用可能な領域の量。単位: バイト • tmp_used /tmp ディレクトリ内で使用される領域の量。単位: バイト • total_memory Lambda 関数に割り当てられたメモリの量。これは関数のメ モリサイズと同じです。単位: メガバイト • total_network rx_bytes と tx_bytes の合計。I/O タスクを実行しない関数の 場合でも、Lambda ランタイムによって行われるネットワーク呼び出しのため、 この値は通常 0 より大きくなります。単位: バイト • tx_bytes 関数の送信バイト数。単位: バイト • used_memory_max 関数サンドボックスの測定されたメモリ。単位: メガバ イト あまりLambdaを使う上 で意識しないようなメト リクスも出してくれる 15/20
パフォーマンスモニタリングの確認 #jawsug #jawsug_Nagoya #コラボベースNAGOYA • 今回検証するシステムの構成が以下です。 Amazon Simple Storage Service
(Amazon S3) AWS Lambda Amazon CloudWatch source target Lambda function Lambda Insight S3(source)から複数オブジェ クトを取得し、/tmp領域を利 用して加工してS3(target)に データを出力。 Logs パフォーマンスデータの tmp_usedやネットワーク関連 のインサイトを確認してみる。 16/20
パフォーマンスモニタリングの確認 #jawsug #jawsug_Nagoya #コラボベースNAGOYA • LambdaInsightのパフォーマンスモニタリング 17/20
パフォーマンスモニタリングの確認 #jawsug #jawsug_Nagoya #コラボベースNAGOYA • LambdaInsightのパフォーマンスモニタリング(呼び出しごと) 18/20
パフォーマンスモニタリングの確認 #jawsug #jawsug_Nagoya #コラボベースNAGOYA • ログのインサイトにクエリをかけた結果 /tmp 以下の消費量を確認できた。 約12MB消費 関数の受信バイトは約137MB
関数の送信バイトは約137MB 19/20
まとめ • CloudWatch *** のサービスを一通り座学して学んだ • そのなかから自分が経験していなく、役立ちそうな機能を選定し て動かしてみた。 (CloudWatch Lambda
Insights) • 設定も簡単なうえに、デフォルトでは観測できないメトリクスが 十分に得られることがわかり今後活用しようと思った。 #jawsug #jawsug_Nagoya #コラボベースNAGOYA 20/20