Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CloudWatchに本格的に入門する_20230711

Kentaro Takaki
July 11, 2023
81

 CloudWatchに本格的に入門する_20230711

This is slides for JAWSUG-Nagoya @ July 11, 2023

Kentaro Takaki

July 11, 2023
Tweet

More Decks by Kentaro Takaki

Transcript

  1. 今回の会期の趣旨 #jawsug #jawsug_Nagoya #コラボベースNAGOYA • 普段から実証実験レベルの案件をこなしている。 • 案件が小回りなのでモニタリングやオブザーバビリティをまじめに考える機 会が少ない。 •

    CloudWatch Metrics, Logs, Alarm, Event くらいしか触ったことがない。 • プロダクトレベルで何かやろうとしたときに、技術選定に困る未来が待って いる。。。しかし仕組みは知っておきたい。 • LTのテーマに設定して強制的に勉強してしまおう…集合知だ。 2/20
  2. オブザーバビリティとは? #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
  3. AWSでオブザーバビリティを構築するには #jawsug #jawsug_Nagoya #コラボベースNAGOYA CloudWatch が提供する各種機能を利活用するために… • よさそうな参考書があった!! • たくさんあるCloudWatch

    *** を網羅的に学べる • 各章にミニハンズオンがあり、知識を整理できる • 物理本が欲しくなる。。。 (技術書典#13イベントで物理本完売) 4/20
  4. 関連機能の整理 #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
  5. 関連機能の整理 #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
  6. 関連機能の整理 #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
  7. 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
  8. 取得可能なパフォーマンスデータ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
  9. 取得可能なパフォーマンスデータ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
  10. 取得可能なパフォーマンスデータ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
  11. パフォーマンスモニタリングの確認 #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
  12. まとめ • CloudWatch *** のサービスを一通り座学して学んだ • そのなかから自分が経験していなく、役立ちそうな機能を選定し て動かしてみた。 (CloudWatch Lambda

    Insights) • 設定も簡単なうえに、デフォルトでは観測できないメトリクスが 十分に得られることがわかり今後活用しようと思った。 #jawsug #jawsug_Nagoya #コラボベースNAGOYA 20/20