RDS for SQL Server に CloudWatch の推奨事項に従ったアラームと閾値を設計してみた
https://dev.classmethod.jp/articles/rds-for-sql-server-cloudwatch-alarm-recommend/

#dev_classmethod #Amazon_CloudWatch #RDS_for_SQL_Server #AWS

RDS for SQL Server に CloudWatch の推奨事項に従ったアラームと閾値を設計してみた | DevelopersIO

いわさです。 Amazon CloudWatch のアラーム機能を使うことで、リソースメトリクスを監視し、通知やアクションを発生させることが出来ます。 今回 Amazon RDS の SQL Server インスタンスに対して監視アラートの設定を行う機会があったのですが、運用前ということもありまずは何かしらの基準でしきい値を決めてスタートし、運用しながら調整するパターンを取りたいと考えていました。 そこで、半年程前に登場した CloudWatch の推奨アラームという機能を活用することにしました。 RDS for SQL Server を対象に「アラームに関する推奨事項」を ON にしてみると次の 9 個の項目が表示されます。 今回はこちらをベースに、AWS 公式ドキュメントにも記載されている推奨事項や、あるいは推奨アラームに関しても閾値についてすべて固定ではなくワークロードの条件にあわせて調整しなければいけない部分があるので、そのあたりを少し検討してみましたので、その過程的なところを紹介したいと思います。 Amazon RDS の監視推奨項目(公式ドキュメント)はこれ まず、次の公式ドキュメントに「ベストプラクティスアラーム」という形でサービスごとの推奨項目が列挙されています。 CloudWatch メトリクスの監視や AWS WAF のルールなどは、ワークロードに最適なものを最初から決めるのは非常に難易度が高いと思ってまして、標準から初めて運用開始しながら閾値やルールを調整・運用しなければいけない部分だと思っています。 その、まず開始するための「標準」にこの推奨事項を使わせてもらいましょう。 上記ドキュメントから Amazon RDS の推奨事項を抜粋したものが以下となります。 アラーム 推奨対象 目的 CPUUtilization 全般 このアラームは、非常に高い応答時間とタイムアウトを防ぐために、一貫して高い CPU 使用率を検出するために使用されます。CPU 使用率のマイクロバーストをチェックする場合は、アラーム評価時間を短く設定できます。 DatabaseConnections 全般 このアラームは、最大数のDB接続に達したときに接続が拒否されるのを防ぐために使用されます。DB インスタンスクラスを頻繁に変更する場合は、このアラームをお勧めしません。 EBSByteBalance% Aurora PostgreSQL以外 このアラームは、バースト バケットのスループット クレジットの残量が少ないことを検出するために使用されます。バイト残高パーセンテージが低いと、スループットのボトルネック問題が発生する可能性があります。Aurora PostgreSQL インスタンスには、このアラームをお勧めしません。 EBSIOBalance% Aurora以外 このアラームは、バースト バケットの I/O クレジットの残量が少ないことを検出するために使用されます。IOPS 残高パーセンテージが低いと、IOPS のボトルネック問題が発生する可能性があります。Aurora インスタンスには、このアラームをお勧めしません。 FreeableMemory 全般 このアラームは、メモリ不足による接続の拒否を防ぐために使用されます。 FreeLocalStorage Aurora このアラームは、Aurora DB インスタンスがローカルストレージの制限に達する寸前を検出するために使用されます(Aurora Serverless v2 以降を使用していない場合)。一時テーブルやログファイルなどの非永続データをローカルストレージに格納すると、ローカルストレージが容量に達する可能性があります。このアラームは、DB インスタンスがローカルストレージ不足でエラーが発生するのを防ぐことができます。 FreeStorageSpace 全般 このアラームは、ストレージ不足の問題を防ぐために使用されます。これにより、データベースインスタンスがストレージ容量を使い切ったときに発生するダウンタイムを防ぐことができます。ストレージの自動スケーリングが有効になっている場合や、データベースインスタンスのストレージ容量を頻繁に変更する場合は、このアラームを使用しないことをお勧めします。 MaximumUsedTransactionIDs PostgreSQL このアラームは、PostgreSQL のトランザクション ID の巻き戻しを防ぐために使用されます。 ReadLatency 全般 このアラームは、読み取りレイテンシが高いことを検出するために使用されます。通常、データベースのディスクは低い読み書きレイテンシを持ちますが、高レイテンシの操作を引き起こす問題が発生する可能性があります。 ReplicaLag PostgreSQL このアラームは、プライマリインスタンスの障害時に発生する可能性のあるデータ損失を検出するために使用できます。レプリカがプライマリから大幅に遅れている場合、プライマリが障害を起こすと、レプリカにはプライマリインスタンスにあった情報が欠落する可能性があります。 WriteLatency 全般 このアラームは、書き込みレイテンシが高いことを検出するために使用されます。データベースのディスクは通常、低い読み取り/書き込みレイテンシを持ちますが、高レイテンシ操作を引き起こす問題が発生する可能性があります。これを監視することで、ディスクのレイテンシが期待どおりに低いことを確認できます。 DBLoad 全般 このアラームは、高い DB ロードを検出するために使用されます。高い DB ロードは、DB インスタンスのパフォーマンス問題を引き起こす可能性があります。このアラームはサーバーレス DB インスタンスには適用されません。 AuroraVolumeBytesLeftTotal …

クラスメソッド発「やってみた」系技術メディア | DevelopersIO