はじめに
監視を作った際にメトリクスを意図的に発生させてちゃんとリソース監視ができてるかを
テストするためにPUTメトリクスという仕組みを利用して発生させる。
CloudWatchとは
CloudWatchはAWSが提供するモニタリングのためのマネージドサービス
ログ監視機能(CloudWatch Logs)
CloudWatchエージェントをインストールすることで、AWSサービスのログを監視することができる機能
CloudWatch Logs Insightsという拡張機能では、独自の構文を使ってクエリのようにデータを検索したり分析したりすることができる機能
ただ、お金はかかる。
アラーム通知機能(CloudWatch Alarms)
メトリクスが特定のしきい値を超えた場合とか下回った場合、データポイントが出てない場合(常に取れているものが)など状況に
合わせてアラートを発報させることができる。アラームは、AWS SNSを活用してメールに飛ばすなど可能。
NewRelicとかDatadogとかを使ってる場合はインテグレーションすることでNewRelic、Datadogなどモニタリングツールに連携することができ
そちらでどういうふうに通知させるかなどの設定をすることができる。
などなど....
CloudWatchだけでもかなりのサービスが存在するのでその時々によって使い分けたりする必要がある。
Putメトリクス
PutMetricDataというAPIを使用する。
$ aws cloudwatch put-metric-data --namespace XXXXXXXXX --metric-name XXXXXXXXX XXXXXXXXX=XXXXXXXXXXXXXXX --value XX
【例(Lambdaのエラー)】
$ aws cloudwatch put-metric-data --namespace AWS/Lambda --metric-name Errors --dimensions FunctionName=リソース名 --value 1
namespace:名前空間
metric-name:発生させたいメトリクス(エラーとかレイテンシーとか)
value:それぞれに設定しているモニターのしきい値を超える値を記載
dimensionsなどがわからない場合
GUIでの確認する方法
Cloudwatch -> メトリクス -> 参照から AWS 名前空間から確認することが可能
CLIから確認する方法
namespaceはGUIから確認する。
$ aws cloudwatch list-metrics --namespace AWS/Lamba
上記のコマンドを実行するとDimensionsなどの情報を確認することができる。
最後に
監視テストで今回はPutメトリクスをやってみたが、結構簡単に擬似的にテストできることがわかった。
他にもAWS Fault Injection Simulator(AWS FIS)使っても確認できると思うけど、ただこのサービスは疑似障害・疑似攻撃を稼働中のシステムに
与えた際にどれだけ耐えるかとか回復力あるかとかを確認する手法「カオスエンジニアリング」が行えるものなので監視テストで使用するには大掛かり
というかそこまでする必要もないのかなと思うのでPutメトリクスは一番手っ取り早くできるのではないかなと思います。