Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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')
Ejemplo n.º 4
0
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')