В этом случае в статье приведены примеры запроса данных с помощью простого режима язык запросов Kusto (KQL) и Log Analytics.
Примечание
Вы можете выполнить это упражнение в своей среде, если собираете данные хотя бы с одной виртуальной машины. Если нет, используйте нашу демонстрационную среду, которая содержит большое количество образцов данных.
Видеоучебник
Примечание
В этом видео показана более ранняя версия пользовательского интерфейса, но снимки экрана в этой статье актуальны и отражают текущий пользовательский интерфейс.
Требуемые разрешения
У вас должны быть Microsoft.OperationalInsights/workspaces/query/*/read разрешения на запрашиваемые рабочие области Log Analytics, как указано встроенной ролью Log Analytics Reader, например.
Структура запроса
Запросы могут начинаться с имени таблицы или search команды. Рекомендуется начать с имени таблицы, так как она определяет четкую область для запроса. Он также повышает производительность запросов и релевантность результатов.
Примечание
KQL, используемый Azure Monitor, учитывает регистр. Ключевые слова языка обычно записываются в нижнем регистре. При использовании имен таблиц или столбцов в запросе обязательно используйте правильный регистр, как показано в области схемы.
Запросы на основе таблиц
Azure Monitor упорядочивает данные журнала в таблицы, каждая из которых состоит из нескольких столбцов. Все таблицы и столбцы отображаются на панели схем в Log Analytics в портал Azure.
Определите интересующую вас таблицу, а затем просмотрите несколько данных:
Kusto
SecurityEvent
| take10
Предыдущий запрос возвращает 10 результатов из таблицы без определенного SecurityEvent порядка. Это общий способ получить взгляд на таблицу помогает понять ее структуру и содержимое. Давайте рассмотрим структуру запроса:
Запрос начинается с имени SecurityEventтаблицы, которая определяет область запроса.
Символ вертикальной черты ("|") разделяет команды, поэтому выходные данные первой команды содержатся во входных данных следующей. Можно добавить любое число элементов, разделенных этой чертой.
После канала используется take оператор. Запрос можно запустить даже без добавления | take 10. Команда по-прежнему будет допустимой, но она может вернуть до 30 000 результатов.
Искать запросы
Поисковые запросы менее структурированы. Они лучше всего подходят для поиска записей, включающих определенное значение в любой из столбцов определенной таблицы.
Этот запрос выполняет поиск SecurityEvent в таблице записей, содержащих фразу "Криптографика". Из этих записей возвращаются и отображаются 10 записей:
Kusto
searchin (SecurityEvent) "Cryptographic"
| take10
Если опустить in (SecurityEvent) часть и запустить только search "Cryptographic"ее, поиск проходит по всем таблицам. Затем процесс займет больше времени и будет менее эффективным.
Важно!
Поисковые запросы обычно выполняются медленнее, чем запросы на основе таблиц, поскольку они обрабатывают больше данных.
Чтобы найти записи, содержащие определенное значение в любом из столбцов, выполните следующие действия:
Выберите таблицу и выберите SecurityEventее.
Откройте "Добавить>поиск" в таблице.
Введите криптографию, а затем нажмите кнопку "Применить".
Мы рекомендуем использовать фильтр, если вы знаете, какой столбец содержит данные, которые вы ищете. Оператор поиска значительно меньше производительности , чем фильтрация, и может не работать хорошо на больших объемах данных.
take Используйте оператор для просмотра небольшого образца записей, возвращая до указанного количества записей. Например:
Kusto
SecurityEvent
| take10
Выбранные результаты являются произвольными и отображаются без определенного порядка. Если необходимо вернуть результаты в определенном порядке, используйте операторы и top операторыsort.
Чтобы вернуть до определенного количества записей, можно ограничить результаты:
Выберите "Показать", чтобы открыть окно "Показать результаты".
Выберите один из предустановленных ограничений или введите настраиваемое ограничение, а затем нажмите кнопку "Применить".
Сортировка результатов
В этом разделе описываются sort операторы и top их descasc аргументы. Хотя take это полезно для получения нескольких записей, вы не можете выбрать или отсортировать результаты в определенном порядке. Чтобы получить упорядоченное представление, используйте sort и top.
Оператор можно использовать sort для сортировки результатов запроса по указанному столбцу.
sort Однако не ограничивает количество записей, возвращаемых запросом.
Например, следующий запрос возвращает все доступные записи для SecurityEvent таблицы, которая составляет не более 30 000 записей и сортирует их по столбцу TimeGenerated.
Kusto
SecurityEvent
| sortby TimeGenerated
Предыдущий запрос может возвращать слишком много результатов. Кроме того, может потребоваться некоторое время, чтобы вернуть результаты. Запрос сортирует всю SecurityEvent таблицу по столбцу TimeGenerated . Затем портал Аналитики ограничивает отображение только 30 000 записей. Такой подход не является оптимальным. Лучший способ получить только последние записи — использовать top оператор.
Desc и asc
desc Используйте аргумент для сортировки записей в порядке убывания. Убывание — это порядок sort сортировки по умолчанию, поэтому topобычно можно опустить desc аргумент.
Например, данные, возвращаемые обеими из следующих запросов, сортируются по столбцу TimeGenerated в порядке убывания:
Kusto
SecurityEvent
| sortby TimeGenerated desc
Kusto
SecurityEvent
| sortby TimeGenerated
Чтобы отсортировать по возрастанию, укажите asc.
Чтобы отсортировать результаты, выполните приведенные далее действия.
Откройте "Добавить>сортировку".
Выберите столбец для сортировки по.
Выберите "По возрастанию " или "По убыванию", а затем нажмите кнопку "Применить".
Снова откройте "Добавить>сортировку", чтобы отсортировать по другому столбцу.
Чтобы добавить фильтр в запрос, используйте where оператор , за которым следует одно или несколько условий. Например, следующий запрос возвращает только SecurityEvent записи, в которых Level equals _8:
Kusto
SecurityEvent
| where Level == 8
При написании условий фильтра вы можете использовать следующие выражения.
Для фильтрации по нескольким условиям можно использовать любой из следующих подходов.
Используйте and, как показано здесь:
Kusto
SecurityEvent
| where Level == 8and EventID == 4672
Канал нескольких where элементов, один за другим, как показано здесь:
Kusto
SecurityEvent
| where Level == 8
| where EventID == 4672
Примечание
Значения могут иметь разные типы, поэтому может потребоваться привести их в правильный тип для выполнения сравнения. Например, SecurityEvent Level столбец имеет тип String, поэтому необходимо привести его к числовой типу, например int или long, прежде чем использовать числовые операторы на нем, как показано ниже: SecurityEvent | where toint(Level) >= 10
Чтобы отфильтровать по нескольким условиям, можно добавить дополнительные фильтры:
Откройте вкладку "Добавить " и выберите столбец EventID.
В раскрывающемся списке "Оператор" выберите "Равно". Введите номер 4672 в поле ниже, а затем нажмите кнопку "Применить".
Можно указать диапазон времени с помощью средства выбора времени или фильтра времени.
Примечание
Если в запрос включен диапазон времени, средство выбора времени автоматически изменяет значение Set в запросе. Если вы вручную измените средство выбора времени на другое значение, Log Analytics применяет меньший из двух диапазонов времени.
Использование элемента выбора времени
Средство выбора времени отображается рядом с кнопкой "Запуск " и указывает, что вы запрашиваете записи только за последние 24 часа. Этот диапазон времени по умолчанию применяется ко всем запросам. Чтобы получить записи только из последнего часа, выберите последний час и снова запустите запрос.
Добавление фильтра времени в запрос
Вы также можете определить ваш собственный диапазон времени, добавив фильтр времени к запросу.
Лучше всего поместить фильтр времени сразу после имени таблицы:
Kusto
SecurityEvent
| where TimeGenerated > ago(30m)
| wheretoint(Level) >= 10
В предыдущем фильтре ago(30m) времени означает "30 минут назад". Этот запрос возвращает записи только за последние 30 минут, которые выражаются, например, 30 млн. Можно использовать и другие единицы времени, например дни (2d) и секунды (10s).
Средство выбора времени отображается рядом с кнопкой "Запуск " и указывает, что вы запрашиваете записи только за последние 24 часа. Этот диапазон времени по умолчанию применяется ко всем запросам. Чтобы получить записи только из последнего часа, выберите последний час и снова запустите запрос.
Включение или исключение столбцов в результатах запроса
Приведенный выше пример формирует следующие выходные данные:
Можно также использовать project для переименования столбцов и определения новых. Следующий пример используется project для выполнения следующих действий:
Выберите только исходные ComputerTimeGenerated столбцы.
Отображение столбца Activity как EventDetails.
Создайте новый столбец с именем EventCode. Функция substring() используется для получения только первых четырех символов из Activity поля.
Вы можете использовать extend для хранения всех исходных столбцов в результирующем наборе и определения других. Следующий запрос используется extend для добавления столбца EventCode . Этот столбец может не отображаться в конце результатов таблицы. Вам потребуется развернуть сведения о записи, чтобы просмотреть ее.
extend Используйте оператор для нерегламентированных вычислений в запросах. Используйте преобразования во время приема или сводные правила для преобразования или агрегирования данных во время приема для более эффективных запросов.
В простом режиме нет прямого эквивалента оператору extend .
Используется summarize для идентификации групп записей в соответствии с одним или несколькими столбцами и применения агрегатов к ним. Наиболее распространенное использование summarize заключается countв том, что возвращается количество результатов в каждой группе.
Следующий запрос проверяет все Perf записи из последнего часа, группирует их по ObjectNameи подсчитывает записи в каждой группе:
Kusto
Perf
| where TimeGenerated > ago(1h)
| summarizecount() by ObjectName
Чтобы просмотреть все Perf записи из последней, сгруппировать их ObjectNameпо и подсчитать записи в каждой группе:
Откройте диапазон времени и измените его на Последний час.
Откройте "Добавить>агрегат", а затем выберите команду "Применить" и нажмите кнопку "Применить".
Выбор столбца: ObjectName
Оператор: count
Группировка уникальных сочетаний значений в нескольких столбцах
Другое распространенное использование — выполнять математические или статистические вычисления в каждой группе. В следующем примере вычисляется среднее CounterValue значение для каждого компьютера:
Kusto
Perf
| where TimeGenerated > ago(1h)
| summarizeavg(CounterValue) by Computer
К сожалению, результаты этого запроса бессмысленны, так как мы смешали разные счетчики производительности. Чтобы сделать результаты более значимыми, вычислите среднее значение по каждому сочетанию CounterName и Computer:
Kusto
Perf
| where TimeGenerated > ago(1h)
| summarizeavg(CounterValue) by Computer, CounterName
Чтобы вычислить среднее CounterValue значение для каждого компьютера, выполните следующие действия.
Откройте диапазон времени и измените его на Последний час.
Откройте "Добавить>агрегат", а затем выберите команду "Применить" и нажмите кнопку "Применить".
Выбор столбца: Компьютер
Оператор: avg
Среднее: CounterValue
К сожалению, результаты этого запроса бессмысленны, так как мы смешали разные счетчики производительности. Чтобы сделать результаты более значимыми, можно вычислить среднее значение отдельно для каждого сочетания CounterName и Computer.
Однако в настоящее время невозможно определить группы по нескольким измерениям в простом режиме. Перейдите на вкладку режима KQL, чтобы узнать, как это можно сделать с помощью запроса Kusto.
Суммирование по столбцу времени
Результаты группировки также могут быть основаны на столбце времени или другом непрерывном значении. Просто сводные данные by TimeGenerated, однако, будут создавать группы для каждого отдельного миллисекунда в диапазоне времени, так как эти значения уникальны.
Чтобы создать группы на основе непрерывных значений, рекомендуется разбить диапазон на управляемые единицы с помощью bin. Следующий запрос анализирует записи, которые измеряют Perf свободную память (Available MBytes) на определенном компьютере. Он рассчитывает среднее значение каждого периода в 1 час за последние 7 дней:
Kusto
Perf
| where TimeGenerated > ago(7d)
| where Computer == "DC01.na.contosohotels.com"
| where CounterName == "Available MBytes"
| summarizeavg(CounterValue) by bin(TimeGenerated, 1h)
Чтобы сделать выходные данные более понятными, можно выбрать его для отображения в виде диаграммы времени, в которой отображается доступная память с течением времени. Чтобы сделать это, перейдите в представление диаграммы, откройте боковую панель форматирования диаграммы справа и выберите строку для типа диаграммы:
Выберите таблицу Perf .
Откройте диапазон времени и измените его на последние 7 дней.
Откройте вкладку "Добавить", выберите "Добавить", а затем установите флажок ComputerDC01.na.contosohotels.com "Применить".
Примечание
Если DC01.na.contosohotels.com не отображается, увеличьте отображаемые результаты от 1000 (стандартный) до более высокого числа.
Откройте "Добавить" и выберите "Добавить", а затем установите флажок CounterNameAvailable MBytes "Применить".
Откройте "Добавить>агрегат" и выберите следующий вариант, а затем нажмите кнопку "Применить".
Выбор столбца: TimeGenerated
Оператор: avg
Среднее: CounterValue
Перейдите впредставление диаграммы, откройте боковую панель форматирования диаграммы справа и выберите строку для типа диаграммы:
Часто задаваемые вопросы
В этом разделы приводятся ответы на часто задаваемые вопросы.
Почему в журналах Azure Monitor отображаются дубликаты записей?
Иногда можно заметить повторяющиеся записи в журналах Azure Monitor. Это дублирование обычно происходит из одного из следующих двух условий:
Компоненты в конвейере выполнять несколько попыток доставки в место назначения. Иногда эта возможность может привести к дубликатам для небольших процентов элементов телеметрии.
Если повторяющиеся записи приходят из виртуальной машины, возможно, установлен агент Log Analytics и агент Azure Monitor. Если агент Log Analytics по-прежнему нужен, настройте рабочую область Log Analytics, чтобы больше не собирать данные, собираемые правилом сбора данных, используемым агентом Azure Monitor.
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.
Напишите запросы журнала, чтобы получить аналитические сведения о бизнесе, ИТ-операциях и производительности. Используйте язык запросов Kusto (KQL) для извлечения данных журнала в Azure Monitor Log Analytics.
Эта справочная информация для язык запросов Kusto, используемой Azure Monitor, включает элементы, относящиеся к Azure Monitor, и элементы, которые не поддерживаются в запросах журнала Azure Monitor.
В этом учебнике описано, как с помощью Log Analytics в Azure Monitor создать и выполнить запрос журнала и проанализировать его результат на портале Azure.