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

今こそCloudWatchを振り返る / Revisiting Amazon CloudWatch

今こそCloudWatchを振り返る / Revisiting Amazon CloudWatch

JAWS-UG福岡 #12:9度目もちょっと濃い目にAWSの話をしてみよう(2022-06-26)での発表資料です。

Amazon CloudWatch をあらためて整理して振り返ります。

Avatar for shiro seike

shiro seike PRO

June 26, 2022

More Decks by shiro seike

Other Decks in Programming

Transcript

  1. 自己紹介 - ID - - - GitHub:seike460 Twitter:@seike460 Work at

    - 株式会社 Fusic (フュージック) 技術開発本部/技術開発第一部門 - チームリーダー/エバンジェリスト/プリンシパルエンジニア Skill - PHP/Go/AWS Community - AWS Dev Day Online Japan 2021 - JAWS Days 2019-2020 Serverless Days Fukuoka 2019 Co-Chair 清家 史郎 @seike460 2
  2. Agenda 1. Webシステムにおけるモニタリング 2. Amazon CloudWatch Metrics ・ Logs 3.

    Amazon CloudWatch Alarms 4. Amazon CloudWatch Synthetics 5. Amazon CloudWatch RUM 6. まとめ 3
  3. Webシステムにおけるモニタリング - Elastic Load Balancing Amazon EC2 Amazon RDS Amazon

    CloudFront Amazon S3 Amazon SES Webシステムの安定運用の為、 様々なモニタリングが必要 SREなどの文脈でより重要性が 認識されているモニタリングを行うため Amazon CloudWatchを振り返りましょう 5
  4. CloudWatch Services 引用 [AWS Black Belt Online Seminar] Amazon CloudWatch

    - - CloudWatch Metrics CloudWatch に発行されたメトリクスを収集し、統計を取得 CloudWatch Alams CloudWatch メトリクスを監視するアラームと関連サービスのアクション CloudWatch Logs AWSサービスおよび構築システムのログファイルの監視、保存、アクセス CloudWatch Logs Insights CloudWatch Logs のログデータをインタラクティブに検索して分析 CloudWatch Dashboard CloudWatch コンソールに配置できるカスタマイズ可能なダッシュボード CloudWatch Events → Amazon EventBridge リソース変更等のイベントに応答してアクションを実行 7
  5. CloudWatch Updates - Amazon CloudWatch RUM - アプリケーションのクライアント側のパフォーマンス等をモニタリングする Amazon CloudWatch

    Evidently - 実験と機能の管理( ABテスト) Amazon CloudWatch Metrics Insights - 高速で柔軟な SQL ベースのクエリエンジン 8
  6. Metrics ▪インスタンスメトリクス CPUUtilization DiskReadOps DiskWriteOps DiskReadBytes DiskWriteBytes MetadataNoToken NetworkIn NetworkOut

    NetworkPacketsIn NetworkPacketsOut ▪ステータスチェックメトリクス StatusCheckFailed StatusCheckFailed_Instance StatusCheckFailed_System ▪バーストパフォーマンスインスタンス CPUCreditUsage CPUCreditBalance CPUSurplusCreditBalance CPUSurplusCreditsCharged ▪Dedicated Hosts DedicatedHostCPUUtilization ▪Nitro ベース EBSReadOps EBSWriteOps EBSReadBytes EBSWriteBytes EBSIOBalance EBSByteBalance 12
  7. CloudWatch Agent cpu_* disk_* diskio_* ethtool_* mem_* net_* netstat_* processes_*

    swap_* ▪コマンドラインを使用した CloudWatch エージェントのインストール $ sudo yum install amazon-cloudwatch-agent ▪AWS Systems Manager を使用して CloudWatch エージェントのインストール Explore Run Command -> AWS-ConfigureAWSPackage ▪AWS CloudFormationを使用してCloudWatch エージェントをインストール テンプレートがGitHubにて公開されている awslabs/aws-cloudformation-templates 13
  8. プラグイン { "metrics": { "metrics_collected": { "procstat": [ { "exe":

    "httpd", "measurement": [ "pid_count" ], "metrics_collection_interval": 60 }, { "exe": "sshd", "measurement": [ "pid_count" ], "metrics_collection_interval": 60 }, { "exe": "crond", "measurement": [ "pid_count" ], "metrics_collection_interval": 60 } ] } } EC2内のプロセス監視をしたい場合などは、 「procstat」プラグインを利用する事が可能 「Apache」「SSH」「cron」等の監視が可能 その他にも以下のようなプラグインが存在 - StatsD - collectd } 14
  9. Custom Metrics ▪AWS CLI $ aws cloudwatch put-metric-data --metric-name Buffers

    --namespace MyNameSpace --unit Bytes --value 231434333 --dimensions InstanceId=1-23456789,InstanceType=m1.small ▪AWS SDK Example:AWS SDK for Go(PutMetricDataRequest) // Example sending a request using the PutMetricDataRequest method. req, resp := client.PutMetricDataRequest(params) err := req.Send() if err == nil { // resp is now filled fmt.Println(resp) } 15
  10. Amazon CloudWatch Synthetics エンドポイントと API の モニタリングを実行 一般的なネットワークを 利用したアクセスを試みる 事が出来る

    もちろんCloudWatchとして 動いているので、 Metricsデータ化されていて アクセスが出来なくない際 通知等のアクションも可能 25
  11. Amazon CloudWatch Synthetics デフォルトの設定だけなら簡単に設定可能 URLを指定してデフォルトのスクリプトを 指定するだけで外形監視が可能 スクリプトはPython or NodeJSにて 記述可能なため、単純な外見監視以上の

    挙動を発生させることも可能 (デフォルトのスクリプト例 const { URL } = require('url'); const synthetics = require('Synthetics'); const log = require('SyntheticsLogger'); const syntheticsConfiguration = synthetics.getConfiguration(); const syntheticsLogHelper = require('SyntheticsLogHelper'); const loadBlueprint = async function () { const urls = ['https://fusic.co.jp/']; // Set screenshot option const takeScreenshot = true; 26
  12. CloudWatch RUM - アプリケーションモニター名 - モニターするアプリケーションの名前 - アプリケーションドメイン - 実際に利用するドメイン名

    - 違うドメイン名から送信された場合、 接続エラーになる - 開発中はlocalhostなどの指定も可能 - RUMデータ収集設定 - パフォーマンス - CSSやスクリプトのロード DOMの構築などのパフォーマンス - JavaScriptエラー - JSの未処理の例外処理 - HTTPエラー - 500、404などのエラー 31
  13. CloudWatch RUM - - - Cookie - ユーザージャーニー ページシーケンスを取得する為の Cookieを設定する

    セッションサンプル - 50%にするとサーバーに訪れた セッションのうち半分の人数のみ RUMの記録を行う データストレージ - RUMのデータを保存期間の延長 左のようなJSONを保存している ※選択すると、追加料金 32
  14. CloudWatch RUM - - - 承諾 - RUMを記録する為に必要な Congnitoの ユーザーIDプールの指定

    ページ設定 - URLを指定することで あるページ配下のみ収集したり あるページ配下のみ除外が可能 AWS X-Ray でサービスを追跡する - AWS X-Rayを利用して サービスマップを作成する 時間がかかっている APIなどを確認出来る ※選択すると追加料金 33