def main(): configure_logging() config = get_config() instance_logs_url = config.get('instance_logs_url') if not instance_logs_url: logging.warn('No endpoint for instance logs configured.') return # identity = {'region': 'eu-west-1', 'accountId': 123456, 'instanceId': 'i-123'} identity = boto.utils.get_instance_identity()['document'] region = identity['region'] account_id = identity['accountId'] instance_id = identity['instanceId'] boot_time = get_boot_time() is_shutdown = False if len(sys.argv) > 1: is_shutdown = sys.argv[1] == '--shutdown' while True: for fn in glob.glob('/var/log/audit.log.*.gz'): push_audit_log(config, instance_logs_url, account_id, region, instance_id, boot_time, fn) if is_shutdown: for fn in glob.glob('/var/log/audit.log'): push_audit_log(config, instance_logs_url, account_id, region, instance_id, boot_time, fn, compress=True) return time.sleep(60)
def main(): configure_logging() config = get_config() instance_logs_url = config.get('instance_logs_url') if not instance_logs_url: logging.warn('No endpoint for instance logs configured.') return # identity = {'region': 'eu-west-1', 'accountId': 123456, 'instanceId': 'i-123'} identity = boto.utils.get_instance_identity()['document'] region = identity['region'] account_id = identity['accountId'] instance_id = identity['instanceId'] boot_time = get_boot_time() is_shutdown = False if len(sys.argv) > 1: is_shutdown = sys.argv[1] == '--shutdown' while True: for fn in glob.glob('/var/log/audit.log.*.gz'): push_audit_log(config, instance_logs_url, account_id, region, instance_id, boot_time, fn) if is_shutdown: for fn in glob.glob('/var/log/audit.log'): push_audit_log(config, instance_logs_url, account_id, region, instance_id, boot_time, fn, compress=True) return rtime = random.randrange(60, 3000) time.sleep(rtime)
def main(): configure_logging() config = get_config() instance_logs_url = config.get('instance_logs_url') if instance_logs_url: userAndPass = b64encode( bytes('{}:{}'.format(config.get('logsink_username'), config.get('logsink_password')), encoding='ascii')).decode("ascii") or '' # identity = {'region': 'eu-west-1', 'accountId': 123456, 'instanceId': 'i-123'} identity = boto.utils.get_instance_identity()['document'] region = identity['region'] account_id = identity['accountId'] instance_id = identity['instanceId'] boot_time = get_boot_time() # remove "sensitive" information from Taupage Config # (should be encrypted anyway, but better be sure..) masked_config = mask_dictionary(config) data = { 'account_id': str(account_id), 'region': region, 'instance_boot_time': boot_time, 'instance_id': instance_id, 'log_data': codecs.encode( yaml.safe_dump(masked_config).encode('utf-8'), 'base64').decode('utf-8'), 'log_type': 'USER_DATA' } logging.info('Pushing Taupage YAML to {}..'.format(instance_logs_url)) try: # TODO: use OAuth credentials response = requests.post(instance_logs_url, data=json.dumps(data), timeout=5, headers={ 'Content-Type': 'application/json', 'Authorization': 'Basic {}'.format(userAndPass) }) if response.status_code != 201: logging.warn( 'Failed to push Taupage YAML: server returned HTTP status {}: {}' .format(response.status_code, response.text)) except Exception: logging.exception('Failed to push Taupage YAML')
def main(): configure_logging() config = get_config() instance_logs_url = config.get('instance_logs_url') if instance_logs_url: userAndPass = b64encode(bytes('{}:{}'.format( config.get('logsink_username'), config.get('logsink_password')), encoding='ascii')).decode("ascii") or '' # identity = {'region': 'eu-west-1', 'accountId': 123456, 'instanceId': 'i-123'} identity = boto.utils.get_instance_identity()['document'] region = identity['region'] account_id = identity['accountId'] instance_id = identity['instanceId'] boot_time = get_boot_time() # remove "sensitive" information from Taupage Config # (should be encrypted anyway, but better be sure..) masked_config = mask_dictionary(config) data = {'account_id': str(account_id), 'region': region, 'instance_boot_time': boot_time, 'instance_id': instance_id, 'log_data': codecs.encode(yaml.safe_dump(masked_config).encode('utf-8'), 'base64').decode('utf-8'), 'log_type': 'USER_DATA'} logging.info('Pushing Taupage YAML to {}..'.format(instance_logs_url)) try: # TODO: use OAuth credentials response = requests.post(instance_logs_url, data=json.dumps(data), timeout=5, headers={'Content-Type': 'application/json', 'Authorization': 'Basic {}'.format(userAndPass)}) if response.status_code != 201: logging.warn('Failed to push Taupage YAML: server returned HTTP status {}: {}'.format( response.status_code, response.text)) except: logging.exception('Failed to push Taupage YAML')