0

I am using the following script to query logs from loki which is running on some vm.I want to get the logs on multiple boxes and do some operation on them. so i am using loki as a source to get all the logs collectively.

import requests
import time
import requests
import urllib3
import ssl
import urllib.parse


class CustomHttpAdapter (requests.adapters.HTTPAdapter):
    # "Transport adapter" that allows us to use custom ssl_context.

    def __init__(self, ssl_context=None, **kwargs):
        self.ssl_context = ssl_context
        super().__init__(**kwargs)

    def init_poolmanager(self, connections, maxsize, block=False):
        self.poolmanager = urllib3.poolmanager.PoolManager(
            num_pools=connections, maxsize=maxsize,
            block=block, ssl_context=self.ssl_context)


def get_legacy_session():
    ctx = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
    ctx.options |= 0x4  # OP_LEGACY_SERVER_CONNECT
    session = requests.session()
    session.mount('https://', CustomHttpAdapter(ctx))
    return session


loki_url = "https://url-for-loki"


query = '{instance="some-instance"}'
# query = urllib.parse.quote(query)
# print(query)
range_seconds = 60


limit = 10000

step = 60

headers = {
    "Content-Type": "application/json",
    "X-Scope-OrgID": "tenant-id",
}




while True:

    payload = {
        "query": query,
        "range": {
            "from": f"now-{range_seconds}s",
            "to": "now"
        },
        "limit": limit,
        "step": step,
    }


    print(payload)
    response = get_legacy_session().get(
        f"{loki_url}/loki/api/v1/query", json=payload, headers=headers)

    # print(response.json())
    print("text:-", response.text)

    if response.status_code != 200:
        print(f"Error: {response.status_code}")
        exit()

    for log in response.json()["data"]["result"]:
        print(log["values"][0][1])

    time.sleep(60)

But i get a syntax error. text:- parse error : syntax error: unexpected $end Error: 400

what am i doing wrong here?

Nitz
  • 31
  • 1

0 Answers0