AWS CloudWatch
# AWS CloudWatch
https://d1.awsstatic.com/webinars/jp/pdf/services/20190326_AWS-BlackBelt_CloudWatch.pdf
## CloudWatch の位置付け
- リソースプロビジョニング
- CloudFormation
- AWS Service Catalog
- 構成管理
- モニタリング
- Amazon CloudWatch
- ガバナンスとコンプライアンス
- リソース最適化
- AWS Trusted Advisor
- CloudWatch Metrics
- CloudWatch に発行された時系列のデータポイントのセット
- データポイントはタイムスタンプと測定単位を保持
- メトリクスは作成されたリージョンにのみ存在
- 名前空間を指定でき、ことなる名前空間のメトリクスは相互に切り離される
- ディメンションという、メトリクスを一意に識別する名前/値のペア
- 取得粒度により、使用期間が異なってくる(1分でだと5日)
- メトリクス値を利用して数式を作成し、新しいメトリクスを作成もできる(Metrics Math)
- 統計情報の表示
- 期間中の平均、最小、最大値などがわかることにより、スケールなどの予測が立てやすくなる
- スナップショットグラフ(メトリクスをPNG画像として出力)を取得できる
- 多くのAWS メトリクスを標準で発行
- カスタムメトリクスを利用して任意の項目のデータを保存
- エンドポイントに対して値を投げてデータを保存
- 多様な対応エージェント&プロトコル
- 統合CloudWatch エージェント
- StatsD
- collectd
- procstatプラグイン
- CloudWatch Logs
- ログファイルの監視、保存、アクセス
- ログデータの保存期間は1日~永久
- S3へエクスポートも可能
- ロググループ/ログストリーム/ログイベント の階層構造
- 特定の文字列のフィルタが可能
- CloudWatch メトリクスに一致したパターン数の記録と、その回数に応じたアラームの作成
- サブスクリプションフィルタを利用して、リアルタイムにKinesis Data Streams/ Kinesis Data Firehose / Lambda に転送可能
- CloudWatch Logs Insights
- ログの可視化
- CloudWatch Logs のログデータに対してクエリを投げられる
- Visualization も可能(トレンドやパターンの分析・特定)
- CloudWatch Alarms
- メトリクスに応じたアクションの実行
- アラームの状態は3種類
- OK
- ALARM
- INSUFICIENT_DATA
- データが一部欠落したときの評価方法を指定できる
- 直近N個中、M個のデータで閾値を超えた場合アラームを出すといった指定もできる
- 狼少年問題の抑制
- ユースケース
- CloudWatch Alerm -> SNS -> E-mail or Lambda
- Billing アラーム
- CloudWatch Dashboards
- CloudWatch コンソールでカスタマイズ可能なダッシュボードを作成
- 異なるリージョンのデータも表示可能
- ウィジェット
- 折れ線
- スタックエリア
- 数値
- テキスト
- クエリの結果
- Automated Dashboard(AWSが推奨することがらに応じたDashboardを自動生成)
- CloudWatch Alarms との統合
- CloudWatch Events
- トリガーの方式
- Event-base
- Time-base
- 動作の流れ
- イベントソース -> イベント生成 -> ルールで条件に一致したものをターゲットに対して発火
- イベントバスを設定し、他のAWSアカウントに対してもトリガー可能(=> EventBridge https://tech-athagi.hatenablog.jp/entry/2020/05/17/170335)
- Private Link への対応
- Metrics
- Events
- Logs
## その他
- 現在は外形監視としてAWS CloudWatch Synthetics もリリースされている。
現在の料金設定だとお高めな感じ。
## 雑感
AWSリソースの監視のスタンダートCloudWatch の話。
色々とここにログを集めて、それを元に他のサービスへの発火など、ログデータや監視のデータを集めて可視化するだけではなく、アクションに移すことができるようになっている。
単純にCloudWatch Alerms から投げるだけではなく、SNSなどに投げることでファンアウトできるようになる。
カスタムメトリクスでは値をエンドポイントに投げ込んでいってメトリクスとして出すのが、今までどうするかぼやっとしていたのでわかるようになった。
CloudWatch Insights は業務でもお世話になっていてとても便利に使わせてもらっている。
シンプルに使うならここでのメトリクスや監視でいいと思うが、規模が大きくなってきたり、もっとよりよい監視を仕込みたい場合にはSaaSの監視サービスを使うのが一般的だと思う。(Datadog、NewRelic など)