はじめに
はじめまして、株式会社ワンズパワーでエンジニアをしている@Nakayaです。
今回は、AWSを使ったシステムで監視をしたい場合に、
色々な監視パターンがありますが一例をご紹介したいと思います。
概要説明
まずは概要図
![1.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F325477%2Fa0fd480b-22e6-c2fb-7ad8-55cca23ccc48.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=53e7938e5e75e1ebe5658756d60c5304)
処理の流れ
① EC2インスタンス等の監視対象から、リソースやログをCloudWatchに送信
②-1 CloudWatchに格納されたリソース情報をCloudWatchアラームが定期的に監視
②-2 リソースの使用率が事前に設定したしきい値に達したらLambdaを実行
③ ログにエラーが出力されたらLambdaを実行
④ Lambdaスクリプト内でSNS Topicを指定してメール送信処理を実行
登場人物の紹介
CloudWatchAgent
EC2ではデフォルトでCPU使用率等はCloudWatchに送信しているが、メモリやディスクの使用率を監視したい場合はCloudWatchAgentが必要になる。
CloudWatch
CloudWatchではリソース情報をメトリクスとして格納し、ログをCloudWatch Logsに格納する。
CloudWatchアラーム
監視対象のメトリクスのしきい値と、しきい値に達した時のアクションを設定できる。
今回の場合はアクションをLambdaの実行にしている。
(直接メール送信もできるが、Lambdaを経由しておくとアラームを全て停止する等の制御が楽になる。)
Lambda
サーバレスでスクリプトを実行できる。
今回はリソースがしきい値に達した時に通知をするLambdaスクリプトと、ログを監視し、エラーが含まれていたらアラート通知を行うスクリプトの用意を想定。
SNS
いわゆるメッセージングサービス。
E-MailやSMS、あるいはLambda等のトピックを設定し、トピックにメールアドレスや電話番号、あるいはLambdaのARN等のサブスクリプションを紐づけることで指定した通知先にメッセージを送信することができる。
最後に
システム監視のパターンは色々ありますが、今回は簡単で、かつやりたい監視は大体できる方式を概要レベルで記載してみましたがいかがでしょうか。
実際はLambdaのスクリプトの部分がミソなので、今後そういった所もご紹介できたらと思います。
ありがとうございました。