こんにちは、キャレット合同会社の椎原です。
今回は、CPU、メモリ、ディスク、死活管理、ロードアベレージ、Healthcheckの監視を行います。
この5項目、大体似たような感じで大半はCloudWatchで監視します。多少違う部分はありますので(Shellを仕込んでCronで呼び出すとか、Route53から監視できるとか)URLで参考リンク示します。
IAMロールを作る
とりあえず、CloudWatchAgentServerRoleというIAMロールを作ってください。名前はなんでもいいのですが、下手に変えると後々調べるときに面倒くさいことになるので。
作り方は→https://engineers.weddingpark.co.jp/aws-cloudwatch-ec2/
SSMエージェントを入れる
https://dev.classmethod.jp/articles/systems-manager-quick-setup/
https://dev-labo.com/aws/aws-systems-manager-how-t
SSM エージェントも入れる必要があります。コンソールから入れると良いでしょう。上記のURLだとコマンドでインストールとか書いてますが、そんなことしなくて良いです。というのもAmazonLinuxにはデフォで入っているので。
「高速セットアップ」選択して置けば全サーバーに入ってくれる感じなので簡単です。

(もう、大したことやってないのでこの項うろ覚え)
CPU
CloudWatchの画面に行って、「メトリクス」を選択します。

タイル状に並んで監視項目が出てきますので「EC2」を選択します

「インスタンス別のメトリクス」しか出てこないので選択。

該当インスタンスのメトリクスを選択。CPU使用率はCPUUtilizationを選択して、右上にあるオレンジのView graphed metricsボタンを押す。

アクションのアラーム(ベルのアイコン)をクリックすると設定画面になる。

こんな画面になるのであとはよしなに設定して、おく。SNSでアラートメール送れるようになるので、これも設定。

最初は1%とかにして、メールが来るのを確認するべし。ここまで来れば間違うこと無いけど。あとで、90%とかに設定すればいい。
メモリ
名前空間にCWAgentが出て、押して、ImageId,InstanceId,InstanceTypeを押す。mem_used_percentを選択して同様にアラームの設定をする。
ディスク
名前空間にCWAgentが出て、押して、ImageId,InstanceId,InstanceType,device,fstype,pathを押す。
fstypeがxfsの/を選択して、同様にアラームの設定をする。
死活管理
https://www.manageengine.jp/products/OpManager/solution_aws-ping-monitoring.html
EC2のインスタンスを見る画面にステータスチェックというタブがあってそこから上記のように設定する。
ロードアベレージ
ロードアベレージとはなんぞやという問いにはググって欲しいとしかいいようがない。CPUのコアをどれくらいつかっているかという感じで良いかと思う。これはちょっと面倒で、シェルスクリプトをEC2に仕込まないといけない。色々調べたが、上手くいったサイトを挙げる。
https://qiita.com/na0AaooQ/items/1fedb1d0136cd78c6aa1
設定すると、CPUと同じく、CloudWatchのメトリクスの名前空間にLOAD AVREAGEというのが出てくるので該当の物(ローカルIPになる)を選択して、View graphed metrics→アクションのアラームを押す。するとアラームの設定画面が出るので入力する。
※cron設定を忘れるとステータスが「データ不足」になります。
Healthcheck
http://shomi3023.com/2017/11/18/route53-health-check/
Route53から簡単にヘルスチェックができるのでこれにする。複数インスタンスを動かしていて全部落ちたらアラートが発報されるようだが、一部落ちたら、上記記述の他のアラームが発動されるので問題ないと私は思う。
なお、スケールアップ、スケールダウンなどのインスタンスタイプを変更するとロードアベレージのCloudWatchの監視設定が外れるのでインスタンスタイプを再設定する必要がある。注意した方が良いです。障害というのは変更した事が原因で発生することが多く、そのアラートが届かないという目も当てられない事態に陥るのを回避するためです。
では
コメントを書く