Как визуализировать данные временных рядов, агрегированные более чем по одному измерению, в AWS Insights?

Я хотел бы использовать данные CloudWatch, чтобы визуализировать многострочный график средней задержки по узлам с течением времени. Одна строка для каждого хоста.

Этот запрос статистики извлекает задержку и объединяет ее в 10-минутные блоки по узлам, но не создает никакой визуализации.

stats avg(latencyMS) by bin(10m), host

bin(10m) | host | avg(latencyMS)
0m       |    1 |           120
0m       |    2 |           220
10m      |    1 |           130
10m      |    2 |           230

Документы называют это распространенной ошибкой, но не предлагают никакой альтернативы.

Следующий запрос не создает визуализацию, так как содержит более одного поля группировки.

stats avg(myfield1) by bin(5m), myfield4

документы aws

Экспериментально cloudwatch будет генерировать многострочный график, если каждая запись имеет несколько ключей. Запрос, который будет генерировать линейный график, должен возвращать такие результаты:

bin(10m) | host-1 avg(latencyMS) | host-2 avg(latencyMS)
0m       |    120                |                   220
10m      |    130                |                   230

Я не знаю, как написать запрос, который выведет это.


person everett1992    schedule 12.09.2019    source источник


Ответы (1)


Разобрать отдельное сообщение для каждого хоста, а затем вычислить их статистику.

Например, чтобы получить среднюю задержку для ответов от процессов с PID=11 и PID=13.

parse @message /\[PID:11\].* duration=(?<pid_11_latency>\S+)/
| parse @message /\[PID:13\].* duration=(?<pid_13_latency>\S+)/
| display @timestamp, pid_11_latency, pid_13_latency
| stats avg(pid_11_latency), avg(pid_13_latency) by bin(10m)
| sort @timestamp desc
| limit 20

Регулярные выражения извлекают продолжительность для процессов с идентификаторами 11 и 13 в параметры pid_11_latency и pid_13_latency соответственно и заполняют null, где нет последовательного совпадения.

Вы можете использовать этот пример, создав регулярное выражение соответствия, которое извлекает метрики из сообщения для узлов, которые вам интересны.

person Oluwafemi Sule    schedule 05.03.2020
comment
Спасибо, я в конце концов понял это, и ваш ответ идеально подходит для моего случая использования, когда я был рад жестко закодировать хосты в запросе. - person artbristol; 06.03.2020
comment
Как сделать PID динамическим? Например, хосты могут расти со временем, поэтому каждый раз у меня их может быть больше, или даже представить, что у вас их сотня. Размещать сотню строк синтаксического анализа неэффективно - person Cassiano; 11.05.2020
comment
Кто-нибудь понял, как справиться с этим динамически? У меня есть вариант использования, когда я не знаю, сколько хостов у меня будет в наборе данных или каковы будут их значения, но я хотел бы видеть разные значения с течением времени, какими бы они ни были. - person Eli Byers; 23.07.2020