def events(logkeys, lognick, loggroup, timefrom, timeto, datefrom, dateto, relative_range): """Get log events""" if lognick: logkeys = api_utils.get_named_logkey(lognick) elif loggroup: logkeys = api_utils.get_named_logkey_group(loggroup) if all([logkeys, timefrom, timeto]): query_api.get_events(logkeys, time_from=timefrom, time_to=timeto) elif all([logkeys, datefrom, dateto]): query_api.get_events(logkeys, date_from=datefrom, date_to=dateto) elif all([logkeys, relative_range]): query_api.get_events(logkeys, time_range=relative_range) else: click.echo( "Example usage: lecli events 12345678-aaaa-bbbb-1234-1234cb123456 " "-f 1465370400 -t 1465370500") click.echo( "Example usage: lecli events 12345678-aaaa-bbbb-1234-1234cb123456 " "--datefrom '2016-05-18 11:04:00' --dateto '2016-05-18 11:09:59' ") click.echo( "Example usage: lecli events --loggroup myloggroup " "--datefrom '2016-05-18 11:04:00' --dateto '2016-05-18 11:09:59' ") click.echo( "Example usage: lecli events --lognick mynicknamedlog " "--datefrom '2016-05-18 11:04:00' --dateto '2016-05-18 11:09:59' ") click.echo("Example usage: lecli events --lognick mynicknamedlog " "-r 'last 3 hours'")
def test_case_insensitivity_of_named_logkey(): with patch.object(ConfigParser.ConfigParser, 'items', return_value=[('test-logkey-nick', misc_ex.TEST_LOG_KEY) ]): logkey = api_utils.get_named_logkey('TEST-logkey-nick') assert logkey == (misc_ex.TEST_LOG_KEY, )
def test_case_insensitivity_of_named_logkey(): with patch.object(ConfigParser.ConfigParser, 'items', return_value=[('test-logkey-nick', ID_WITH_VALID_LENGTH) ]): logkey = api_utils.get_named_logkey('TEST-logkey-nick') assert logkey == (ID_WITH_VALID_LENGTH, )
def test_get_invalid_named_logkey(capsys): with patch.object(ConfigParser.ConfigParser, 'items', return_value=[('test-logkey-nick', misc_ex.TEST_LOG_KEY) ]): with pytest.raises(SystemExit): nick_to_query = 'test-logkey-nick_invalid' logkey = api_utils.get_named_logkey(nick_to_query) out, err = capsys.readouterr() assert logkey is None assert nick_to_query in out assert 'was not found' in out
def query(**kwargs): """ Post query to Logentries. """ date_from = kwargs.get('date_from') date_to = kwargs.get('date_to') time_from = kwargs.get('time_from') time_to = kwargs.get('time_to') relative_time_range = kwargs.get('relative_time_range') saved_query_id = kwargs.get('saved_query_id') query_string = kwargs.get('query_string') log_keys = kwargs.get('log_keys') querynick = kwargs.get('querynick') lognick = kwargs.get('lognick') loggroup = kwargs.get('loggroup') if not validate_query(date_from=date_from, time_from=time_from, query_string=query_string, relative_time_range=relative_time_range, saved_query_id=saved_query_id, log_keys=log_keys, querynick=querynick, lognick=lognick, loggroup=loggroup): return False time_range = prepare_time_range(time_from, time_to, relative_time_range, date_from, date_to) if querynick: query_string = api_utils.get_named_query(querynick) if lognick: log_keys = api_utils.get_named_logkey(lognick) if loggroup: log_keys = api_utils.get_named_logkey_group(loggroup) try: if saved_query_id: response = run_saved_query(saved_query_id, time_range, log_keys) else: response = post_query(log_keys, query_string, time_range) with click.progressbar(length=100, label='Progress\t') as progress_bar: handle_response(response, progress_bar) return True except requests.exceptions.RequestException as error: click.echo(error) sys.exit(1)
def query(logkeys, lognick, loggroup, leql, querynick, timefrom, timeto, datefrom, dateto, relative_range): """Query logs using LEQL""" if lognick: logkeys = api_utils.get_named_logkey(lognick) elif loggroup: logkeys = api_utils.get_named_logkey_group(loggroup) if all([leql, querynick]): click.echo( "Cannot define a LEQL query and query nickname in the same query request" ) elif querynick: leql = api_utils.get_named_query(querynick) if all([logkeys, leql, timefrom, timeto]): query_api.post_query(logkeys, leql, time_from=timefrom, time_to=timeto) elif all([logkeys, leql, datefrom, dateto]): query_api.post_query(logkeys, leql, date_from=datefrom, date_to=dateto) elif all([logkeys, relative_range]): query_api.post_query(logkeys, leql, time_range=relative_range) else: click.echo( "Example usage: lecli query 12345678-aaaa-bbbb-1234-1234cb123456 -q " "'where(method=GET) calculate(count)' -f 1465370400 -t 1465370500") click.echo( "Example usage: lecli query 12345678-aaaa-bbbb-1234-1234cb123456 -q " "'where(method=GET) calculate(count)' " "--datefrom '2016-05-18 11:04:00' --dateto '2016-05-18 11:09:59' ") click.echo( "Example usage: lecli query --loggroup myloggroup --leql " "'where(method=GET) calculate(count)' " "--datefrom '2016-05-18 11:04:00' --dateto '2016-05-18 11:09:59' ") click.echo( "Example usage: lecli query --lognick mynicknamedlog --leql " "'where(method=GET) calculate(count)' " "--datefrom '2016-05-18 11:04:00' --dateto '2016-05-18 11:09:59' ") click.echo( "Example usage: lecli query --lognick mynicknamedlog --leql " "'where(method=GET) calculate(count)' " "-r 'last 3 days'")
def tail_logs(logkeys, leql, poll_interval, lognick=None, loggroup=None, saved_query_id=None): """ Tail given logs """ if lognick: logkeys = api_utils.get_named_logkey(lognick) elif loggroup: logkeys = api_utils.get_named_logkey_group(loggroup) if saved_query_id: if logkeys: url = _url( ('live', 'logs', ':'.join(logkeys), str(saved_query_id)))[1] else: url = _url(('live', 'saved_query', str(saved_query_id)))[1] else: url = _url(('live', 'logs'))[1] try: if saved_query_id: response = requests.get(url, headers=api_utils.generate_headers('rw')) else: payload = {'logs': logkeys} if leql: payload.update({'leql': {'statement': leql}}) response = requests.post(url, headers=api_utils.generate_headers('rw'), json=payload) handle_tail(response, poll_interval) return True except requests.exceptions.RequestException as error: click.echo(error, err=True) sys.exit(1)
def recentevents(logkeys, lognick, loggroup, last, relative_range): """Get recent log events""" if lognick: logkeys = api_utils.get_named_logkey(lognick) elif loggroup: logkeys = api_utils.get_named_logkey_group(loggroup) if all([logkeys, relative_range]): query_api.get_recent_events(logkeys, time_range=relative_range) elif all([logkeys, last]): query_api.get_recent_events(logkeys, last_x_seconds=last) else: click.echo( 'Example usage: lecli recentevents \'12345678-aaaa-bbbb-1234-1234cb123456\' -l 200' ) click.echo( 'Example usage: lecli recentevents -n mynicknamedlog -l 200') click.echo('Example usage: lecli recentevents -g myloggroup -l 200') click.echo( "Example usage: lecli recentevents -g myloggroup -r 'last 50 mins'" )