- 目的
- awsのroute53の機能を利用してヘルスチェックをインスタンスに対して行う
- 結論
- 以下の手順でインスタンスに対してヘルスチェックを導入できる
- 手順
- ここから設定
- 設定値
-
・名前
任意の名前
・モニタリングの対象
エンドポイント
・エンドポイントの指定
IPアドレス
=> ドメイン設定してないのでIPアドレスを指定した
・プロトコル
http
SSL証明書の設定をしてないのでhttpを指定
・IP アドレス
インスタンスのIP
・ホスト名
指定なし
・ポート
80
=> httpのため80を指定
・パス
ここで作成したtest.htmlを指定
・リクエスト間隔
30秒
=> 高頻度で確認したいなら10秒
・失敗しきい値
1
=> 何回連続で失敗したらNGと判定するかを設定
cloudwatchでNGの判定を行うのでここでは1を指定する
・文字列マッチング
しない
=> 特定の文字列が入ってた場合はOKにする、というような設定を入れるなら設定する
・レイテンシーグラフ
なし
・ヘルスチェックステータスを反転
なし
・ヘルスチェックの無効化
なし
・ヘルスチェッカーのリージョン
推奨を使用する
=> こだわりがなければ推奨を利用
・アラームの作成
作成しない
=> ここでは作成しないを選択 - 作成を押下
-
- チェック結果を確認する
- ヘルスチェックの結果を確認する
- ヘルスチェックのログがaccess.logで確認できること
-
tail -f /var/log/httpd/access_log
- アクセスが来てない場合はセキュリティグループの穴あけが必要
- アクセスが来てる場合は以下のようなログが出る
-
54.252.79.141 – – [09/Jul/2023:02:10:19 +0000] “GET /test.html HTTP/1.1” 200 5 “-” “Amazon-Route53-Health-Check-Service (ref 3b767fdd-af59-4fa2-b52c-107d974996ea; report http://amzn.to/1vsZADi)”
-
-
- ヘルスチェックで利用するIPの穴あけを行う
- 情報が記載されたjsonのダウンロード
-
wget https://ip-ranges.amazonaws.com/ip-ranges.json
-
- ヘルスチェックで利用するIPのみ抽出
-
15.177.0.0/18
52.80.197.0/25
52.80.197.128/25
52.80.198.0/25
52.83.34.128/25
52.83.35.0/25
52.83.35.128/25
54.248.220.0/26
54.250.253.192/26
54.251.31.128/26
54.255.254.192/26
54.252.254.192/26
54.252.79.128/26
176.34.159.192/26
54.228.16.0/26
177.71.207.128/26
54.232.40.64/26
107.23.255.0/26
54.243.31.192/26
54.183.255.128/26
54.241.32.64/26
54.244.52.192/26
54.245.168.0/26
-
- 取得する処理
-
cat healthcheck.py #!/usr/bin/python # -*- coding: utf-8 -*- import json import pprint # 取得したJSONファイルを読み込む # https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/route-53-ip-addresses.html JSON_PATH = "./ip-ranges.json" # 取得したい利用サービスを定義 AWS_SERVICE = "ROUTE53_HEALTHCHECKS" # jsonファイルの読み込み with open(JSON_PATH) as json_file: read_json = json.load(json_file) #print(read_json) # forループ for k, ip_lists in read_json.items(): # prefixes以外のkeyはループする必要ないから抜ける if k != "prefixes": continue # 余計なリストに入ってるから一度ループする for ip_list in ip_lists: if str(ip_list['service']) != AWS_SERVICE: continue # pprint.pprint(ip_list) # これの出力例 # {'ip_prefix': '54.183.255.128/26', # 'network_border_group': 'us-west-1', # 'region': 'us-west-1', # 'service': 'ROUTE53_HEALTHCHECKS'} # 対象のサービスで利用するIPのみ出力する print(ip_list['ip_prefix']) # [root@ip-192-168-10-20 healthcheck_ip]# python3 ./healthcheck.py # 15.177.0.0/18 # 52.80.197.0/25 # 52.80.197.128/25 # 52.80.198.0/25 # 52.83.34.128/25 # 52.83.35.0/25 # 52.83.35.128/25 # 54.248.220.0/26 # 54.250.253.192/26 # 54.251.31.128/26 # 54.255.254.192/26 # 54.252.254.192/26 # 54.252.79.128/26 # 176.34.159.192/26 # 54.228.16.0/26 # 177.71.207.128/26 # 54.232.40.64/26 # 107.23.255.0/26 # 54.243.31.192/26 # 54.183.255.128/26 # 54.241.32.64/26 # 54.244.52.192/26 # 54.245.168.0/26 # [root@ip-192-168-10-20 healthcheck_ip]#
-
- 実行方法はこれ
-
python3 ./healthcheck.py
-