サーバが知らん間に状態おかしなってたら困る。急にディスク利用率上がってたり、固まってたり。

状態確認様にcloudwatchのダッシュボード使ってる。

ホストごとに色変えてグラフ表示してくれるし、時間帯をマウスでドラッグ選択したら拡大表示できて便利。

aws-alert

awsのec2ホストは、メトリクスっていうてCPU利用率見せてくれたり、状態監視のためのアラーム設定ができる。

メモリとディスクのメトリクスは このへん で設定してる。

CPU、メモリ、ディスク、サーバ本体の死活監視をして、問題出たら メール飛ばす

アラーム設定の入り口はcloudwatchにあるで。

aws-alert

ec2停止してたりrds停止してたら、監視先からデータが取れへんから、緑色で「OK」って出てる箇所が変わる。

アラーム設定の参照

監視させるためにアラーム設定を作ってく。まずはメトリクス指定して監視設定。

項目めっちゃ多いし、全部は使ったことない。

インスタンスタイプ変えたらInstanceIDが変わってまうから、サーバ本体の死活監視以外は再設定せなアカンで。

CPUの監視

例えばインスタンスIDで絞って参照させる。CPUUtilizationでCPU利用率を使う。

aws-alert

閾値設定は5分間隔で「平均利用率80%オーバ」とかにする。

メモリとディスクの監視

CloudWatchAgent経由で取得してるから、カスタム名前空間から選ぶ。

aws-alert

どっちがどっちやったか忘れたけど、メモリとディスクの監視のためにたどってく。

aws-alert

メモリ利用率のメトリクス選ぶ。

aws-alert

ディスク空きパーセンテージのメトリクス選ぶ。ec2-windowsホストやったらドライブ名も見える。

aws-alert

閾値設定は30分間隔の平均値で「80%オーバの利用率になったら」とかにしてる。

RDSの場合

RDSの系列をたどる。インスタンスタイプ変えたら監視外れてまうはずやけど、どやったかな。

aws-alert

aws-alert

RDSで使ってるディスクの空き容量が監視できる。oracleのデータポンプでエクスポートとかされると消費されて枯渇してるって監視メール飛んでくることある。

aws-alert

サーバ本体の死活監視

StatusCheckFailed_Systemは、 このへん に解説あるけどVMそのものがおかしくなったことを検出できるはず。

StatusCheckFailed_Instanceも、 このへん に解説あって、NICに向かってヘルスチェックやってる。

どっちも使う。

サーバ状態おかしくなったら1が戻ってきたっけ。

aws-alert

プロセス監視

やったことないけど、できるらしいってことは知ってる。

判明したら書き足す。

条件とメールの設定

監視でアラート通知する条件を設定する。閾値には整数値を書く。

aws-alert

計算面倒やけど、RDSのディスクの利用率は「10GB下回ったら」みたいな設定するとき、ギガバイトをバイトに読み替えて整数値で書く。

10GB=10 x 1024 x 1024 x 1024 = 10737418240byte

構築当初は100GBでRDS動かしてたのを、データ流し込んで入らへんかもとかで200GBに増やしたりしたら、監視も連動して閾値の変更せなアカンで。

監視でアラート通知先を設定する。

aws-alert

アクションも設定できる

「死活監視で異常検出したときはOS再起動」みたいな設定もできる。

aws-alert

この設定はインスタンス監視で設定してる。

おかしくなった状態は一度も見たことないんやけど、ジョブ管理サーバでこれ発生したら悲惨やな。

テスト

awsではアラームのテストができる。

aws cloudwatch set-alarm-state --alarm-name [アラーム名] --state-value ALARM --state-reason "[ホスト名]"

たとえばこんな指定をawsのwebコンソールでCloudshell起動して使う。

普段はec2ホスト単位でテストしてるから、アラームテスト用のテキストを用意しといて、一括でメール飛ばす。

aws cloudwatch set-alarm-state --alarm-name GVIS-win2022-SV-disk_free_percent-D --state-value ALARM --state-reason "GVIS-win2022"

メールがこんな感じでくる。めっちゃ冗長で読みにくい。

ALARM: GVIS-win2022-SV-disk_free_percent-D
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
You are receiving this email because your Amazon CloudWatch Alarm "GVIS-win2022-SV-disk_free_percent-D" 
in the Asia Pacific (Tokyo) region has entered the ALARM state, 
because "Threshold Crossed: 6 out of the last 6 datapoints were greater than the threshold (10.0). 
The most recent datapoints which crossed the threshold: 
:(中略)
Alarm Details:
- Name:                       GVIS-win2022-SV-disk_free_percent-D ⭐️アラート名入ってくる
- Description:                
- State Change:               INSUFFICIENT_DATA -> ALARM
- Reason for State Change:    Threshold Crossed: ・・・
- Timestamp:                  Thursday 25 January, 2024 02:18:57 UTC ⭐️UTCやなくてJSTにしてくれよ
- AWS Account:                xxxxxxxxxxxx
- Alarm Arn:                  arn:aws:cloudwatch:ap-northeast-1:xxxxxxxxxxxx:alarm:GVIS-win2022-SV-disk_free_percent-D

Threshold:
- The alarm is in the ALARM state when the metric is GreaterThanThreshold 10.0 for at least 6 of the last 6 period(s) of 300 seconds. 

Monitored Metric:
- MetricNamespace:                     CWAgent
- MetricName:                          LogicalDisk % Free Space
- Dimensions:                          [instance = D:] [InstanceId = i-xxxxxxxxxxxxxxxxxx] [objectname = LogicalDisk] [ImageId = ami-xxxxxxxxxxxxxxxxxx] [InstanceType = m5.xlarge]
- Period:                              300 seconds
- Statistic:                           Average
- Unit:                                not specified
- TreatMissingData:                    notBreaching


State Change Actions:
- OK: 
- ALARM: [arn:aws:sns:ap-northeast-1:xxxxxxxxxxxx:SendMonitoringEmail]
- INSUFFICIENT_DATA: 

--