156 Views
April 09, 25
スライド概要
株式会社Finatext サーバーサイドエンジニア AWS/Go/Terraform
CloudWatch Alarm の Terraform Module を作って 監視を展開する 2025-02-20 株式会社Finatext 松崎稔矢 @tm8619_pro © 2024 Finatext Holdings Ltd.
自己紹介 松崎稔矢 Toshiya Matsuzaki 株式会社Finatext 職種: バックエンドエンジニア チームリーダー 趣味: ボウリング ど /ゲーム /ダーツ /ポーカー /乗馬 /お酒 な 技術: Go/AWS/Terraform 競プロ経験あり 好きなAWSサービス: AWS RDS(Aurora) © 2024 Finatext Holdings Ltd. 1
イントロダクション 簡単に監視入れられるように CloudWatch Alarmをterraformでmodule化 した過程と手順の話 © 2024 Finatext Holdings Ltd. 2
イントロダクション 以下くらいの背景を要求します ●CloudWatch Metricsの画面は見たことある ●Alarmの存在は知っている 後半出てきますが、あんまり知らなくても大丈夫 ●Terraform Moduleについて © 2024 Finatext Holdings Ltd. 3
イントロダクション インフラ監視って難しいですよね © 2024 Finatext Holdings Ltd. 4
イントロダクション 何が難しいか ●何を設定するべきか精査する ●しきい値を考える ●設定を管理・メンテナンスする ●設定したものがちゃんと監視されるようにする これをプロダクト開発しつつやる必要がある © 2024 Finatext Holdings Ltd. 5
イントロダクション 今までの経験 プロダクト新規開発します!アプリケーション開発ギリギリ終わっ てテスト乗り越えてリリース!! 監視の仕組み作る時間ない!!とりあえずDatadog入れとくか!! ●ALBやTargetGroup 5XXエラーを検知 ●RDS CPU使用率が高いのも拾うか ○とりあえず50%とか70%くらい…? © 2024 Finatext Holdings Ltd. 6
イントロダクション よしなに作っていくと… - ノイズなアラートがたくさん出る - RDSの50%って別に全然大丈夫 - 監視すべき点が抜ける © 2024 Finatext Holdings Ltd. 7
イントロダクション 目的 監視基盤を作って 網羅的にインフラの健康状態が見れる状態にしたい 簡単にAlarmの導入を出来るようにしたい © 2024 Finatext Holdings Ltd. 8
イントロダクション 能動的に監視したい → CloudWatch Dashboard 受動的に監視したい → CloudWatch Alarm 今回はインフラ障害発生を未然に防いだり、発生時に調査が しやすくなるよう、Alarmの導入にフォーカスします。 © 2024 Finatext Holdings Ltd. 9
CloudWatch Alarmの設定 © 2024 Finatext Holdings Ltd. 10
CloudWatch Alarmの作り方 何のメトリクスに対して どんなしきい値で設定したらいいの? © 2024 Finatext Holdings Ltd. 11
CloudWatch Alarmの作り方 AWSが推奨アラームをまとめています! © 2024 Finatext Holdings Ltd. 12
CloudWatch Alarmの作り方 まずはここを見よう AWS公式の推奨アラーム https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/Bes t_Practice_Recommended_Alarms_AWS_Services.html © 2024 Finatext Holdings Ltd. 13
Page Title © 2024 Finatext Holdings Ltd. 14
Page Title © 2024 Finatext Holdings Ltd. 15
© 2024 Finatext Holdings Ltd. 16
© 2024 Finatext Holdings Ltd. 17
© 2024 Finatext Holdings Ltd. 18
© 2024 Finatext Holdings Ltd. 19
CloudWatch Alarmの作り方 え、これ全部やるの…? © 2024 Finatext Holdings Ltd. 20
CloudWatch Alarmの作り方 IaCコード、ダウンロードできます! © 2024 Finatext Holdings Ltd. 21
CloudWatch Alarmの作り方 IaCコード、ダウンロードできます! しかも複数の形式で! © 2024 Finatext Holdings Ltd. 22
CloudWatch Alarmの作り方 アラームに関する推奨事項にチェックすると、必要なメトリクスが 現れ、コードのダウンロードが可能 © 2024 Finatext Holdings Ltd. 23
CloudWatch Alarmの作り方 こんな感じのコードをダウンロード出来るので、簡単に Terraform化が出来てしまう © 2024 Finatext Holdings Ltd. 24
Terraform Module化していく © 2024 Finatext Holdings Ltd. 25
Terraform Module化していく 共通化したい部分はどこか? © 2024 Finatext Holdings Ltd. 26
Terraform Module化していく 今回は2つを変数にして、module化 rds_instance_ids :RDSインス タンスID rds_cpu_utilization_threshold :CPU利用率しきい値 © 2024 Finatext Holdings Ltd. 27
Terraform Module化していく これを推奨アラーム数の分だけやります! ここは筋肉 ベースとなるTerraformコードはある 設定値も基本はAWSの推奨値で問題ない © 2024 Finatext Holdings Ltd. 28
Terraform Module化していく やるべきこと リソースのIDと設定値を受け取れるようにする 出来ればドキュメントをしっかり読み、このタイミング で設定値を検討する © 2024 Finatext Holdings Ltd. 29
Terraform Module化していく module化が完了すれば、rds instance1つに対し moduleを呼べば必要なアラームが全部設定される これ書くだけでRDSで必要な監視を全て網羅! © 2024 Finatext Holdings Ltd. 30
追加機能・実際の運用 © 2024 Finatext Holdings Ltd. 31
追加機能・実際の運用 opsgenieというアラート管理ツールを利用 アラートを作成すると、優先度に応じてチケット管 理や電話を鳴らせるサービス © 2024 Finatext Holdings Ltd. 32
追加機能・実際の運用 電話鳴らしたりslack通知を行ったり © 2024 Finatext Holdings Ltd. 33
追加機能・実際の運用 障害対応の初動が早まる アプリケーションエラーが多数発生したとき… ●RDSのCPU使用率アラート ○DB負荷が高い 静観かスケールアウトを検討 ●NAT Gatewayのアラート ○AWSの障害 静観なりリージョン切り替えを検討 ●インフラ異常は何もない ○アプリケーションロジックのミス・外接エラー © 2024 Finatext Holdings Ltd. 34
追加機能・実際の運用 障害を未然に防げる DBのメモリを食いつぶしたり、保存容量を食いつぶ したりする前に検知可能 © 2024 Finatext Holdings Ltd. 35
まとめ 本日のまとめ AWSが推奨する監視設定があるので一度読むと良い Terraform Module使って設定を展開する事例紹介 © 2024 Finatext Holdings Ltd. 36