Sumo Logic: "Неожиданный токен [['найден" "при указании временного окна
Я пытаюсь найти некоторые данные журнала, которые похожи на следующие поддельные данные:
2019-01-13 00:22:10.812 INFO fake_log_data - <module>: req_id: 'f6867a35-39d8-4e4e-b8c1-ed208e0e11c8' REQUEST: {'code': '1'}
2019-01-13 00:22:10.812 INFO fake_log_data - <module>: req_id: 'f6867a35-39d8-4e4e-b8c1-ed208e0e11c8' RESPONSE: {'code': '1'}
2019-01-13 00:22:11.016 INFO fake_log_data - <module>: req_id: 'ecbbb658-2d2b-4c9b-8856-9839c56127a9' REQUEST: {'code': '1'}
2019-01-13 00:22:11.017 INFO fake_log_data - <module>: req_id: 'ecbbb658-2d2b-4c9b-8856-9839c56127a9' RESPONSE: {'code': '1'}
2019-01-13 00:22:11.221 INFO fake_log_data - <module>: req_id: '4f3c9293-0850-453c-9957-a551ead367bc' REQUEST: {'code': '1'}
2019-01-13 00:22:11.221 INFO fake_log_data - <module>: req_id: '4f3c9293-0850-453c-9957-a551ead367bc' RESPONSE: {'code': '0'}
2019-01-13 00:22:11.426 INFO fake_log_data - <module>: req_id: '9849e69c-fbab-4e0d-86f9-113e8eec29b5' REQUEST: {'code': '1'}
2019-01-13 00:22:11.426 INFO fake_log_data - <module>: req_id: '9849e69c-fbab-4e0d-86f9-113e8eec29b5' RESPONSE: {'code': '0'}
2019-01-13 00:22:11.630 INFO fake_log_data - <module>: req_id: 'c7a23d64-b4bb-42a3-8aa6-2207f5fadd49' REQUEST: {'code': '1'}
2019-01-13 00:22:11.630 INFO fake_log_data - <module>: req_id: 'c7a23d64-b4bb-42a3-8aa6-2207f5fadd49' RESPONSE: {'code': '1'}
2019-01-13 00:22:11.835 INFO fake_log_data - <module>: req_id: 'f76e5356-97f0-4cd2-bbdc-bad73e26a167' REQUEST: {'code': '0'}
2019-01-13 00:22:11.835 INFO fake_log_data - <module>: req_id: 'f76e5356-97f0-4cd2-bbdc-bad73e26a167' RESPONSE: {'code': '1'}
2019-01-13 00:22:12.039 INFO fake_log_data - <module>: req_id: 'f210dfa3-5aca-44c1-927e-3d1ba8dfb260' REQUEST: {'code': '0'}
2019-01-13 00:22:12.040 INFO fake_log_data - <module>: req_id: 'f210dfa3-5aca-44c1-927e-3d1ba8dfb260' RESPONSE: {'code': '0'}
2019-01-13 00:22:12.243 INFO fake_log_data - <module>: req_id: 'af3fbc32-a810-4169-ba00-00d24b451252' REQUEST: {'code': '1'}
2019-01-13 00:22:12.243 INFO fake_log_data - <module>: req_id: 'af3fbc32-a810-4169-ba00-00d24b451252' RESPONSE: {'code': '1'}
2019-01-13 00:22:12.448 INFO fake_log_data - <module>: req_id: '10a19719-3e23-4090-a340-faf01ff12d6f' REQUEST: {'code': '1'}
2019-01-13 00:22:12.448 INFO fake_log_data - <module>: req_id: '10a19719-3e23-4090-a340-faf01ff12d6f' RESPONSE: {'code': '0'}
2019-01-13 00:22:12.653 INFO fake_log_data - <module>: req_id: '19445eac-8963-4b5f-80fd-4cb461787823' REQUEST: {'code': '0'}
2019-01-13 00:22:12.654 INFO fake_log_data - <module>: req_id: '19445eac-8963-4b5f-80fd-4cb461787823' RESPONSE: {'code': '1'}
который был сгенерирован с помощью этого скрипта Python:
import uuid
import random
import logging
import time
logging.basicConfig(
filename='example.log',
level=logging.DEBUG,
format='%(asctime)s.%(msecs)03d %(levelname)s %(module)s - %(funcName)s: %(message)s',
datefmt="%Y-%m-%d %H:%M:%S"
)
def random_code():
return {'code': str(1 if random.random() < 0.5 else 0)}
for _ in range(10):
req_id = uuid.uuid4()
logging.info(f"req_id: '{req_id}' REQUEST: {random_code()}")
logging.info(f"req_id: '{req_id}' RESPONSE: {random_code()}")
time.sleep(0.2)
Итак, разделенные на 0,2 секунды, есть REQUEST
с последующим RESPONSES
оба с одинаковыми req_id
но с разными code
s, которые равны 1 или 0 с равной вероятностью.
Я заинтересован в получении таблицы с кодом запроса и кодом ответа для каждого идентификатора запроса. После импорта данных в Sumo Logic я попытался выполнить следующий запрос:
_source="Example Requests" and _collector="LM-SJN-21018636"
("REQUEST" or "RESPONSE") | parse "req_id: '*'" as req_id
| join
(parse "REQUEST: {'code': '*'" as request_code | where request_code == "1") as requests,
(parse "RESPONSE: {'code': '*'" as response_code) as responses
on requests.req_id = responses.req_id
[timewindow 10m]
Однако я считаю, что запрос работает, только если я не укажу timewindow
в конце, который вызывает синтаксическую ошибку
Неожиданный токен '[' найден
(см. скриншот ниже)
Это блокирует меня, потому что в моем "реальном" запросе я получаю, что количество сообщений слишком велико:
Как правильно указать временное окно? Насколько я могу судить, я делаю это точно так, как описано на https://help.sumologic.com/05Search/Search-Query-Language/Search-Operators/join.
1 ответ
Оказывается, что квадратные скобки служат только для указания того, что этот синтаксис является необязательным. Так что, если я просто добавлю строку с timewindow 1s
в конце это работает:
(Я заметил это, прочитав пример в этом посте: https://www.sumologic.com/blog/log-management-analysis/using-the-join-operator/).