Created
April 5, 2017 15:42
-
-
Save nickrw/f4f48b6cf88e2700b13ea1be1050fab8 to your computer and use it in GitHub Desktop.
ELB DNS logger
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# Logs all IP addresses for every ELB in an AWS account | |
import boto3 | |
import dns.resolver | |
from dns.exception import DNSException | |
import logging | |
logger = logging.getLogger('elbdns') | |
elb = boto3.client('elb') | |
def get_elbs(): | |
elbs = [] | |
paginator = elb.get_paginator('describe_load_balancers') | |
for page in paginator.paginate(): | |
elbs.extend(page['LoadBalancerDescriptions']) | |
return elbs | |
def resolve_name(name): | |
result = dns.resolver.query(name) | |
records = sorted([x.address for x in result.response.answer[0].items]) | |
return records | |
def main(): | |
for elb in get_elbs(): | |
elb_name = elb['LoadBalancerName'] | |
dns_name = elb['DNSName'] | |
try: | |
a_records = resolve_name(dns_name) | |
logger.info("ELB {} {} resolves to {}" | |
.format(elb_name, dns_name, ', '.join(a_records)), | |
extra={'elb_name': elb_name, | |
'dns_name': dns_name, | |
'elb_ips': a_records}) | |
except DNSException as e: | |
logger.exception("Error resolving ELB {} {}: {}" | |
.format(elb_name, dns_name, e), | |
extra={'elb_name': elb_name, | |
'dns_name': dns_name}) | |
if __name__ == "__main__": | |
logging.basicConfig() | |
logger.setLevel(logging.INFO) | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment