【aws】route53 – ヘルスチェック 使われるIP確認

  • 目的
    • 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
aws
スポンサーリンク
K・B・S
タイトルとURLをコピーしました