Как запустить Azure Log Analytics query api, используя Python?

#json #python-3.x #azure #azure-devops #azure-api-management

#json #python-3.x #azure #azure-devops #azure-api-management

Вопрос:

Я пытался запустить запрос log analytics с использованием python, который выполнялся в приведенном ниже запросе

 os.system("curl -X POST 'https://api.loganalytics.io/v1/workspaces/0000000000000000000000-0000-c05f0ccc198d/query' -d '{"query": "ContainerLog","timespan": "PT12H"}' -H 'Authorization:Bearer" auth " ' -H 'Content-Type: application/json'")
  

но он не работает с приведенным ниже запросом

 os.system("curl -X POST 'https://api.loganalytics.io/v1/workspaces/0000000000000000000000-c05f0ccc198d/query' -d '{"query": "search in (ContainerLog) "error" | where TimeGenerated > datetime("2020-09-09") | project LogEntry"}' -H 'Authorization:Bearer " auth "' -H 'Content-Type: application/json'")
  

Ошибка :

{«ошибка»:{«сообщение»:»В запросе были некоторые недопустимые properties»,»code»:»BadArgumentError»,»correlationId»:»3cf07489-2a00-4ef6-9c00-15bd7d1be648″,»details»:[{«code»:»InvalidJsonBody»,»message»:» Неожиданный токен e в JSON в позиции 38″, «target»: null}], «innererror»:{«code»: «QueryValidationError», «message»: «Не удалось выполнить синтаксический анализ запроса»}}}

Ответ №1:

    use the below code 

    import requests
    url = "https://api.loganalytics.io/v1/workspaces/{workspace_id}/query"
    
    payload = "{"query": "search in (ContainerLog) 'error' | top 50 by TimeGenerated asc   | project LogEntry"}"
    headers = {
      'Authorization': 'Bearer access token',
      'Content-Type': 'application/json'
    }
    
    response = requests.request("POST", url, headers=headers, data = payload)
  

Ответ №2:

Вы должны использовать одинарные кавычки вместо двойных для "error" и "2020-09-09" .

Например, используйте 'error' вместо "error" ; используйте datetime('2020-09-09') вместо datetime("2020-09-09")

Запрос выглядит следующим образом:

 os.system("curl -X POST 'https://api.loganalytics.io/v1/workspaces/0000000000000000000000-c05f0ccc198d/query' -d '{"query": "search in (ContainerLog) 'error' | where TimeGenerated > datetime('2020-09-09') | project LogEntry"}' -H 'Authorization:Bearer " auth "' -H 'Content-Type: application/json'")
  

Комментарии:

1. {«ошибка»:{«сообщение»:»Запрос содержал некоторые недопустимые properties»,»code»:»BadArgumentError»,»correlationId»:»086c0ed6-3058-4dc1-95b6-9c22a2db1044″,»innererror»:{«code»:»SemanticError»,»message»:» Произошла семантическая ошибка.»,»innererror»:{«code»: «SEM0100», «message»:»оператор ‘where’: не удалось разрешить скалярное выражение с именем ‘error'»}}}}

2. @pappu.jerin, пожалуйста, попробуйте использовать этот запрос search in (ContainerLog) 'error' | where TimeGenerated > datetime('2020-09-09') | project LogEntry на этой странице и посмотрите, по-прежнему ли возникает ошибка.

3. и, пожалуйста, не забудьте заполнить поля «Идентификатор рабочей области» и «Ключ API» своим реальным значением.