Редактор запросов Amazon CloudWatch
Grafana предоставляет редактор запросов для источника данных CloudWatch, который позволяет запрашивать, визуализировать логи и метрики, хранящиеся в Amazon CloudWatch, и создавать по ним оповещения. Он находится на странице Explore. Общую документацию по запросам к источникам данных в Grafana см. в разделе Запрос и преобразование данных.
Ключевые концепции
Если вы только начинаете работать с CloudWatch, в этой документации используются следующие термины:
Выбор режима редактирования запроса
Источник данных CloudWatch может запрашивать данные как из API CloudWatch Metrics, так и из API CloudWatch Logs, каждый из которых имеет собственный специализированный редактор запросов.
Выберите API для запроса с помощью раскрывающегося списка справа от параметра Region.
Компоненты редактора запросов CloudWatch Metrics
Ниже перечислены компоненты редактора запросов CloudWatch.
Использование режимов Builder и Code
Оба типа запросов — Metric Search и Metric Insights — предоставляют два режима редактирования. Используйте переключатель Builder и Code в редакторе запросов, чтобы переключаться между ними.
Режим Builder
Режим Builder позволяет составлять запрос с помощью раскрывающихся списков и полей формы, не записывая никакого синтаксиса:
- Для запросов Metric Search выберите пространство имён, имя метрики, статистику и измерения.
- Для запросов Metric Insights выберите пространство имён, имя метрики, фильтр, группировку и параметры сортировки, используя ключевые слова Metrics Insights. Grafana формирует SQL-запрос на основе ваших выборов.
Режим Code
Режим Code позволяет записывать запрос непосредственно в редакторе кода:
- Для запросов Metric Search напишите выражение метрической математики или выражение
SEARCH. - Для запросов Metric Insights напишите SQL-запрос Metrics Insights.
Редактор кода включает встроенную функцию автодополнения, которая предлагает ключевые слова, агрегации, пространства имён, метрики, метки и значения меток.
Подсказки появляются после ввода пробела, запятой или символа доллара ($), либо при нажатии
Note
Шаблонные переменные в редакторе кода могут мешать автодополнению.
Чтобы выполнить запрос, нажмите Run query над редактором кода.
Запрос метрик CloudWatch
В редакторе запросов CloudWatch можно создавать два типа запросов:
- Metric Search — помогает извлекать доступные метрики и фильтровать их.
- Metric Insights — использует функциональность Metrics Insights для получения данных временных рядов.
Тип запроса, который вы используете, зависит от того, как вы хотите взаимодействовать с метриками AWS. Используйте раскрывающийся список в верхней средней части редактора запросов, чтобы выбрать нужный тип.
Запросы Metric Search
Запросы поиска метрик помогают находить доступные метрики и фильтровать их. Эти запросы используют подстановочные знаки и фильтры, чтобы находить метрики без необходимости знать точные имена метрик.
Корректный запрос метрики требует указать пространство имён, имя метрики и хотя бы одну статистику. Измерения необязательны, но если они включены, необходимо указать и key, и value.
Опция Match Exact управляет тем, как фильтрация по измерениям применяется к запросам метрик. Когда вы включаете match exact, запрос возвращает только те метрики, измерения которых точно соответствуют указанным критериям.
Для этого необходимо следующее:
- Все измерения, присутствующие у целевой метрики, должны быть явно указаны.
- Измерения, по которым вы не хотите фильтровать, должны использовать подстановочный знак (*).
- Схема метрики должна точно соответствовать определённой в документации по схеме метрик CloudWatch.
Когда Match Exact отключена, вы можете указать любое подмножество измерений для фильтрации. Запрос возвращает метрики, которые:
- Соответствуют указанному пространству имён и имени метрики.
- Соответствуют всем определённым фильтрам по измерениям.
- Могут содержать дополнительные измерения помимо указанных.
Этот режим обеспечивает более гибкие запросы, но может возвращать метрики с неожиданными дополнительными измерениями.
Поскольку источник данных извлекает метрики через API CloudWatch GetMetricData, один запрос возвращает данные максимум для 100 метрик, соответствующих критериям вашего фильтра, — это ограничение на один запрос, которое применяет AWS.
Улучшайте запросы метрик с помощью шаблонных переменных, чтобы создавать динамичные, многократно используемые дашборды.
Создание динамических запросов с подстановочными знаками в измерениях
Используйте подстановочный знак — звёздочку (*) — для значений измерений, чтобы создавать динамические запросы, которые автоматически отслеживают изменяющиеся наборы ресурсов AWS.
Запрос возвращает среднюю загрузку CPU для всех инстансов EC2 в регионе по умолчанию. Когда Match Exact отключена, а InstanceId использует подстановочный знак, запрос извлекает метрики для любого инстанса EC2 независимо от дополнительных измерений.
События автомасштабирования добавляют новые инстансы на график без ручного отслеживания идентификаторов инстансов. Как и в случае других запросов поиска метрик, AWS возвращает до 100 метрик на один запрос GetMetricData.
Нажмите кнопку Query inspector и выберите Meta Data, чтобы увидеть выражение поиска, которое автоматически построено для поддержки подстановочных знаков.
Чтобы узнать больше о выражениях поиска, см. документацию CloudWatch.
Выражение поиска по умолчанию определяется таким образом, что запрашиваемые метрики должны точно соответствовать указанным именам измерений.
Это означает, что в примере запрос возвращает только метрики ровно с одним измерением с именем InstanceId.
Отключение Match Exact включает метрики с дополнительными измерениями и создаёт выражение поиска даже без подстановочных знаков. Grafana ищет любую метрику, соответствующую как минимум пространству имён, имени метрики и всем определённым измерениям.
Использование многозначных шаблонных переменных
Когда вы определяете значения измерений на основе многозначных шаблонных переменных, источник данных использует выражение поиска для запроса соответствующих метрик.
Это позволяет использовать несколько шаблонных переменных в одном запросе, а также применять шаблонные переменные в запросах, для которых опция Match Exact отключена.
Выражения поиска ограничены 1024 символами, поэтому ваш запрос может завершиться ошибкой, если у вас длинный список значений.
Рекомендуем использовать подстановочный знак — звёздочку (*) — вместо опции All, чтобы запрашивать все метрики, у которых есть какое-либо значение для определённого имени измерения.
Многозначные шаблонные переменные поддерживаются только для значений измерений.
Использование многозначных шаблонных переменных для Region, Namespace или Metric Name не поддерживается.
Использование выражений метрической математики
Создавайте новые метрики временных рядов с помощью математических функций над метриками CloudWatch. Поддерживаются арифметические операторы, унарное вычитание и другие функции. Доступные функции см. в разделе AWS Metric Math.
Чтобы применить арифметические операции, назначьте исходной метрике уникальный строковый идентификатор, а затем ссылайтесь на этот идентификатор в поле Expression новой метрики.
Note
Если вы используете поле выражения для ссылки на другой запрос, например
queryA * 2, вы не можете создать правило оповещения на основе этого запроса.
Запрос метрик из нескольких учётных записей мониторинга AWS
Когда вы выбираете режим Builder в редакторе поиска метрик, отображается новое поле Account. Используйте поле Account, чтобы указать, по какой из связанных учётных записей мониторинга должен выполняться данный запрос. По умолчанию указана опция All, что подразумевает все связанные учётные записи.
В режиме Code вы можете указать любое математическое выражение. Если в заголовке редактора запросов отображается значок учётной записи мониторинга, все выражения SEARCH, введённые в это поле, будут по умолчанию выполняться между учётными записями и смогут запрашивать метрики из связанных учётных записей. Учтите, что хотя запросы выполняются между учётными записями, функция автодополнения в настоящее время не извлекает ресурсы из связанных учётных записей, поэтому при написании запросов между учётными записями имена ресурсов придётся указывать вручную.
Вы можете ограничить поиск одной учётной записью или их набором, как описано в документации AWS.
Макрос Period
Если вы используете выражение CloudWatch SEARCH, рассмотрите возможность использования макроса $__period_auto вместо явного указания периода. Макрос $__period_auto будет преобразован в период CloudWatch, подходящий для выбранного диапазона времени.
Создание глубоких ссылок из панелей Grafana в консоль CloudWatch
Щелчок левой кнопкой мыши по временному ряду на панели отображает контекстное меню со ссылкой View in CloudWatch console.
Нажатие на ссылку открывает новую вкладку, которая переводит вас в консоль CloudWatch и отображает все метрики для этого запроса.
Если вы не вошли в консоль CloudWatch, ссылка перенаправит вас на страницу входа.
Предоставляемая ссылка действительна для любой учётной записи, но отображает ожидаемые метрики только в том случае, если вы вошли в учётную запись, соответствующую выбранному источнику данных в Grafana.
Эта функциональность недоступна для метрик, основанных на выражениях метрической математики.
Использование синтаксиса Metric Insights
Metric Insights использует диалект SQL и следующий синтаксис запросов:
SELECT FUNCTION(MetricName)
FROM Namespace | SCHEMA(...)
[ WHERE labelKey OPERATOR labelValue [AND|...]]
[ GROUP BY labelKey [, ...]]
[ ORDER BY FUNCTION() [DESC | ASC] ]
[ LIMIT number]
Подробности о синтаксисе Metrics Insights см. в справочной документации AWS.
Информацию об ограничениях Metrics Insights см. в документации по функциональности AWS.
Вы также можете дополнять запросы, используя шаблонные переменные.
Использование ключевых слов Metrics Insights
В этой таблице перечислены распространённые ключевые слова запросов Metrics Insights:
Запрос логов CloudWatch
Редактор запросов логов помогает писать запросы к CloudWatch Logs в рамках выбранного региона и набора групп логов или источников данных Amazon CloudWatch Logs.
Вы можете запрашивать CloudWatch Logs, используя три поддерживаемых варианта языка запросов:
- Logs Insights QL — собственный язык запросов AWS, специально разработанный для CloudWatch Logs. Он использует SQL-подобный синтаксис с командами
fields,filter,statsиsort. Он оптимизирован для структуры логов CloudWatch и предлагает встроенные функции для разбора временных меток, извлечения полей из JSON-логов и выполнения агрегаций. - OpenSearch SQL — OpenSearch SQL — это язык запросов, использующий SQL-подобный синтаксис для запроса данных в OpenSearch. Он поддерживает стандартные SQL-запросы и рассчитан на пользователей, знакомых с SQL.
- OpenSearch PPL — язык запросов OpenSearch основан на DSL (Domain Specific Language) запросов Elasticsearch. Он использует синтаксис на основе конвейеров, похожий на инструменты командной строки Unix или язык поиска Splunk, и поддерживает сложную булеву логику, запросы по диапазону, сопоставление по подстановочным знакам и возможности полнотекстового поиска.
Создание запроса к CloudWatch Logs:
- Выберите регион.
- Выберите CloudWatch Logs в раскрывающемся списке типа запроса.
- Используйте селектор Logs Mode, чтобы выбрать между запросами Logs Insights и Log Anomalies.
Log Anomalies
Обнаружение аномалий использует машинное обучение и распознавание образов для построения базовых уровней типичного содержимого логов.
Редактор запросов Log Anomalies извлекает список аномалий, обнаруженных в вашем сервисе CloudWatch. Чтобы запрашивать аномалии логов в редакторе, сначала нужно создать детектор аномалий логов в консоли AWS CloudWatch.
Ячейка тренда логов показывает количество вхождений шаблона за выбранный диапазон времени запроса.
Таблица показывает по 50 аномалий логов за раз. Если вы хотите сузить список, вы можете отфильтровать аномалии по их ARN и состоянию подавления.
Кроме того, вы можете использовать редактор Logs Insights QL и команду anomaly вместе с командой patterns, чтобы определять и отображать аномалии логов в реальном времени. Дополнительную информацию см. в документации CloudWatch Logs Insights.
Logs Insights
Раскрывающийся список Query language доступен только когда для Logs Mode установлено значение Logs Insights.
- Выберите язык запросов, который хотите использовать, в раскрывающемся списке Query language.
- Укажите группы логов, источники данных CloudWatch Logs или и то и другое, которые вы хотите запрашивать.
- Используйте основную область ввода, чтобы написать запрос к логам. Amazon CloudWatch поддерживает только подмножество команд OpenSearch SQL и PPL. Чтобы узнать больше о поддерживаемом синтаксисе, обратитесь к документации Amazon CloudWatch Logs
Указание групп логов для запроса
Чтобы нацелить запрос на группы логов, используйте один из следующих методов:
- Log group name: выберите конкретные группы логов. Это поведение по умолчанию. Вы можете выбрать до 50 групп логов. Нажмите Select log groups, чтобы выбрать целевые группы логов для вашего запроса. Когда в заголовке редактора запросов появляется значок Monitoring account, вы можете искать и выбирать группы логов в нескольких учётных записях. Используйте фильтр Accounts, чтобы сузить результаты по учётной записи. Для больших списков используйте поиск по префиксу, чтобы сузить выбор. Селектор загружает группы логов постранично, поэтому при большом количестве доступных групп логов можно прокручивать список, чтобы загрузить больше результатов.
- Name prefix: выберите область запроса Name prefix и укажите до пяти префиксов имён групп логов. Запрос будет выполняться по группам логов, имена которых начинаются с указанных префиксов. Каждый префикс должен содержать не менее трёх символов и не должен включать
*. Эта опция доступна только для Logs Insights QL. - All log groups: выберите область запроса All log groups. В этом случае запрашиваются все группы логов в выбранном регионе. Эта опция доступна только для Logs Insights QL.
Вы также можете применять необязательные фильтры при указании групп логов с областями запроса Name prefix или All log groups:
- Class: фильтрация по классу группы логов. Выберите Standard или Infrequent Access.
- Accounts: фильтрация по учётной записи AWS. Эта опция доступна только когда в заголовке редактора запросов появляется значок Monitoring account. Вы можете выбрать до 20 учётных записей.
Указание источников данных Amazon CloudWatch Logs для запроса
Источники данных Amazon CloudWatch Logs категоризируют логи по сервису или приложению, которые их генерируют, и по типу логов. Они дополняют группы логов и позволяют запрашивать логи, не зная имён отдельных групп логов. Подробности о том, как Amazon CloudWatch категоризирует логи, см. в разделе Data source discovery and management документации AWS.
Прежде чем использовать селектор источников данных, убедитесь, что роль или пользователь IAM для источника данных Grafana имеет разрешение logs:ListAggregateLogGroupSummaries. Полные примеры политик IAM см. в разделе
Примеры политик IAM.
Чтобы запрашивать логи по источнику данных CloudWatch Logs, выполните следующие шаги:
- Нажмите Select data sources.
- Найдите имя или тип источника данных.
- Выберите до 10 источников данных.
- Нажмите Apply selection.
Вы можете комбинировать выбор источников данных CloudWatch Logs с конкретными группами логов или с областями запроса Name prefix и All log groups. Когда появляется значок Monitoring account, селектор включает источники данных из учётной записи мониторинга и связанных с ней исходных учётных записей.
Источник данных CloudWatch автоматически добавляет выбранные источники данных CloudWatch Logs в запросы Logs Insights QL и OpenSearch PPL.
Note
Когда вы используете Logs Insights QL, OpenSearch PPL или OpenSearch SQL, необходимо указать регион и определить логи для запроса, выбрав группы логов, выбрав источники данных CloudWatch Logs или выбрав поддерживаемую область запроса групп логов.
В OpenSearch SQL вы можете указывать группы логов несколькими способами. Подробности см. в разделе Запрос групп логов и источников данных Amazon CloudWatch Logs с помощью OpenSearch SQL.
Нажмите View in CloudWatch console, чтобы интерактивно просматривать, искать и анализировать данные логов в консоли CloudWatch Logs Insights. Если вы не вошли в консоль CloudWatch, ссылка перенаправит вас на страницу входа.
Запрос групп логов и источников данных Amazon CloudWatch Logs с помощью OpenSearch SQL
При запросе групп логов и источников данных Amazon CloudWatch Logs с помощью OpenSearch SQL вы можете использовать макрос $__source, чтобы автоматически ссылаться на группы логов и источники данных CloudWatch Logs, выбранные в редакторе запросов. Это рекомендуемый подход, поскольку он позволяет управлять обоими типами выбора через интерфейс.
SELECT window.start, COUNT(*) AS exceptionCount
FROM `$__source`
WHERE `@message` LIKE '%Exception%'
Макрос $__source разворачивается в корректный синтаксис для групп логов и источников данных CloudWatch Logs, выбранных вами в интерфейсе.
Как вариант, вы можете вручную указать одну группу логов непосредственно в предложении FROM:
SELECT window.start, COUNT(*) AS exceptionCount
FROM `log_group`
WHERE `@message` LIKE '%Exception%'
При запросе нескольких групп логов вы обязаны использовать синтаксис logGroups(logGroupIdentifier: [...]):
SELECT window.start, COUNT(*) AS exceptionCount
FROM `logGroups(logGroupIdentifier: ['LogGroup1', 'LogGroup2'])`
WHERE `@message` LIKE '%Exception%'
Чтобы ссылаться на группы логов в учётной записи мониторинга, используйте ARN вместо имён LogGroup.
Вы также можете писать запросы, возвращающие данные временных рядов, используя команду stats.
При выполнении запросов stats в
Explore убедитесь, что вы находитесь в режиме Metrics Explore.
Создание запросов для оповещений
Для оповещений требуются запросы, возвращающие числовые данные, что поддерживает CloudWatch Logs.
Например, вы можете включить оповещения с помощью команды stats.
Ниже приведён корректный запрос для оповещения по сообщениям, содержащим текст “Exception”:
filter @message like /Exception/
| stats count(*) as exceptionCount by bin(1h)
| sort exceptionCount desc
Note
Если при попытке настроить оповещение по запросу вы получаете ошибку вроде
input data must be a wide series but got ..., убедитесь, что ваш запрос возвращает корректные числовые данные, которые можно вывести на панель Time series.
Дополнительную информацию об оповещениях Grafana см. в разделе Alerting.
Типичные сценарии использования
В следующих сценариях показано, как объединять возможности редактора запросов для решения реальных задач мониторинга.
- Мониторинг парка EC2: используйте запрос Metric Search для
AWS/EC2CPUUtilizationс измерениемInstanceId, установленным в подстановочный знак (*), и отключённой опциейMatch Exact. График автоматически включает новые инстансы по мере масштабирования вашего парка. - Отслеживание ошибок и вызовов Lambda: запросите пространство имён
AWS/Lambdaдля метрикErrorsиInvocations, затем добавьте выражение метрической математики, напримерerrors / invocations * 100, чтобы отобразить частоту ошибок. - Ранжирование наиболее нагруженных ресурсов: используйте запрос Metrics Insights с
ORDER BYиLIMIT, чтобы вернуть топ N ресурсов по метрике, например 10 инстансов EC2 с наибольшей средней загрузкой CPU. - Исследование ошибок приложения: используйте запрос CloudWatch Logs с
filterиstats, чтобы подсчитать ошибки во времени, затем сопоставьте всплески с панелями метрик на том же дашборде. - Оповещения о частоте ошибок в логах: постройте запрос Logs, возвращающий числовые данные с помощью команды
stats, затем создайте правило оповещения по результату. См. Создание запросов для оповещений.
Наблюдаемость между учётными записями
Плагин CloudWatch обеспечивает мониторинг и устранение неполадок приложений, охватывающих несколько учётных записей в пределах региона. Наблюдаемость между учётными записями позволяет без труда выполнять поиск, визуализацию и анализ метрик и логов без привязки к границам учётных записей.
Чтобы включить наблюдаемость между учётными записями, выполните следующие шаги:
-
Перейдите в документацию Amazon CloudWatch и следуйте инструкциям по включению наблюдаемости между учётными записями.
-
Добавьте два действия API в политику IAM, прикреплённую к роли или пользователю, от имени которых работает плагин.
Запросы между учётными записями доступны в плагине через режимы Logs, Metric search и Metric Insights. После настройки вы увидите значок Monitoring account в заголовке редактора запросов.
Кэширование запросов
Когда вы включаете кэширование запросов и ресурсов, Grafana временно сохраняет результаты запросов к источникам данных и запросов ресурсов. Кэширование запросов доступно для CloudWatch Metrics в Grafana Cloud и Grafana Enterprise. Оно недоступно в CloudWatch Logs Insights из-за того, как результаты запросов опрашиваются из AWS.