#azure-log-analytics #azure-sentinel
#azure-log-analytics #azure-sentinel
Вопрос:
Я записываю пользовательские журналы для аналитики журналов.
На основе следующей ссылки:
https://docs.microsoft.com/en-us/azure/azure-monitor/logs/data-collector-api#create-a-request
Я должен иметь возможность использовать поле в заголовке запроса с именем: time-generated-field
, в документации говорится, что: » Если вы укажете поле, его содержимое будет использоваться для сгенерированного времени. Если вы не укажете это поле, по умолчанию для TimeGenerated используется время приема сообщения. Содержимое поля сообщения должно соответствовать формату ISO 8601 ГГГГ-ММ-DDThh: мм: ssZ »
Я передаю следующее значение: 2021-11-11T19:52:45Z
(в виде строки, поскольку вы не можете передать это как объект datetime), но проблема в том, что, когда я смотрю в рабочую область log analytics, поле, генерируемое временем, выглядит следующим образом (сегодняшняя дата): 2021-12-01T18:41:04.529Z
это дата и время, когда событие принимается, поэтому, по сути,оно не учитывает время, сгенерированное реальным событием 2021-11-11T19:52:45Z
, которое я передаю в заголовке.
Я делаю что-то не так здесь?
Буду признателен за любую помощь, у меня здесь заканчиваются идеи.
Комментарии:
1. Рад, что ваша проблема была исправлена. Вы можете принять ответ и проголосовать за него, чтобы он был полезен другим членам сообщества, которые могут столкнуться с той же проблемой.
Ответ №1:
Оказывается, я неправильно прочитал документацию и не понял, что time-generated-field
это не аргумент, который вы передаете, а свойство в теле данных JSON, которые вы отправляете в рабочую область log analytics.
На него можно ссылаться таким образом (это пример 1 способа сделать это):
def post_data(customer_id, shared_key, body, log_type):
method = 'POST'
#The string "raised" assigned to the TimeStampField variable below
#is an actual property in the JSON object that I am sending to log
#analytics, it contains the datetime in the expected format.
TimeStampField = "raised"
content_type = 'application/json'
resource = '/api/logs'
rfc1123date = datetime.datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT')
content_length = len(body)
signature = build_signature(customer_id, shared_key, rfc1123date, content_length, method, content_type, resource)
uri = 'https://' customer_id '.ods.opinsights.azure.com' resource '?api-version=2016-04-01'
headers = {
'content-type': content_type,
'Authorization': signature,
'Log-Type': log_type,
'x-ms-date': rfc1123date,
'time-generated-field': TimeStampField
}
Обязательно создаст запрос на извлечение, чтобы изменить формулировку здесь:
https://docs.microsoft.com/en-us/azure/azure-monitor/logs/data-collector-api#create-a-request
Как я чувствую, это не очень интуитивно понятно