Wrote a little script to poll all the AWS Elastic Load Balancer instances and check the health check endpoints. For example, if your health check endpoint is /healthcheck
, this script will get the public IPs of all the ELB instances, and hit the endpoint /healthcheck
at those IPs to ensure they’re being properly forwarded to your backend instances. Should return HTTP status code 200.
Usage:
python3 aws_elb_check_elb.py --elb_name http://elb.region.elb.amazon.aws.com --path healthcheck
Source can be found here.
import argparse
import requests
import dns.resolver
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--elb_name', required=True, help='Value of ELB DNS.')
parser.add_argument('--path', required=True,
help='Path to test for HTTP status code 200.')
args = parser.parse_args()
url = 'all.' + args.elb_name
answers = dns.resolver.query(url, 'A')
count = 1
for ip in answers:
ip = str(ip)
test_request = 'http://' + ip + '/' + args.path
request = requests.get(test_request)
print(str(count) + '. ' + test_request + ' > ' + str(request.status_code))
count += 1