示例#1
0
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'")
示例#2
0
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, )
示例#3
0
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, )
示例#4
0
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
示例#5
0
文件: api.py 项目: pclune-r7/lecli
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)
示例#6
0
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'")
示例#7
0
文件: api.py 项目: pclune-r7/lecli
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)
示例#8
0
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'"
        )