<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://doc.ruscomtech.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2_DQL</id>
	<title>Примеры временных рядов DQL - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://doc.ruscomtech.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2_DQL"/>
	<link rel="alternate" type="text/html" href="https://doc.ruscomtech.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2_DQL&amp;action=history"/>
	<updated>2026-10-26T18:23:44Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://doc.ruscomtech.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2_DQL&amp;diff=7204&amp;oldid=prev</id>
		<title>IKuznetsov: Полностью удалено содержимое страницы</title>
		<link rel="alternate" type="text/html" href="https://doc.ruscomtech.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2_DQL&amp;diff=7204&amp;oldid=prev"/>
		<updated>2026-10-22T17:23:37Z</updated>

		<summary type="html">&lt;p&gt;Полностью удалено содержимое страницы&lt;/p&gt;
&lt;a href=&quot;https://doc.ruscomtech.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2_DQL&amp;amp;diff=7204&amp;amp;oldid=7073&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>IKuznetsov</name></author>
	</entry>
	<entry>
		<id>https://doc.ruscomtech.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2_DQL&amp;diff=7073&amp;oldid=prev</id>
		<title>IKuznetsov: Новая страница: « = Примеры временных рядов DQL = Метрики на платформе позволяют точно определять и извлекать любые данные метрик с помощью &#039;&#039;&#039;Языка запросов Ключ-АСТРОМ (DQL)&#039;&#039;&#039;. После ознакомления с &#039;&#039;&#039;основами запросов DQL&#039;&#039;&#039; и командой &lt;code&gt;timeseries&lt;/code&gt; используйте примеры на этой...»</title>
		<link rel="alternate" type="text/html" href="https://doc.ruscomtech.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2_DQL&amp;diff=7073&amp;oldid=prev"/>
		<updated>2026-10-13T23:19:13Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: « = Примеры временных рядов DQL = Метрики на платформе позволяют точно определять и извлекать любые данные метрик с помощью &amp;#039;&amp;#039;&amp;#039;Языка запросов Ключ-АСТРОМ (DQL)&amp;#039;&amp;#039;&amp;#039;. После ознакомления с &amp;#039;&amp;#039;&amp;#039;основами запросов DQL&amp;#039;&amp;#039;&amp;#039; и командой &amp;lt;code&amp;gt;timeseries&amp;lt;/code&amp;gt; используйте примеры на этой...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
= Примеры временных рядов DQL =&lt;br /&gt;
Метрики на платформе позволяют точно определять и извлекать любые данные метрик с помощью &amp;#039;&amp;#039;&amp;#039;Языка запросов Ключ-АСТРОМ (DQL)&amp;#039;&amp;#039;&amp;#039;. После ознакомления с &amp;#039;&amp;#039;&amp;#039;основами запросов DQL&amp;#039;&amp;#039;&amp;#039; и командой &amp;lt;code&amp;gt;timeseries&amp;lt;/code&amp;gt; используйте примеры на этой странице, чтобы начать получать ответы из ваших метрик.&lt;br /&gt;
&lt;br /&gt;
== Пример 1: Средняя загрузка CPU по всем хостам ==&lt;br /&gt;
В этом примере вы запрашиваете среднюю загрузку CPU по всем мониторимым хостам в вашей среде. &amp;#039;&amp;#039;&amp;#039;ЕдиныйАгент&amp;#039;&amp;#039;&amp;#039; собирает измерения CPU со своего хоста. Эти метрики доступны через ключи метрик, начинающиеся с &amp;lt;code&amp;gt;dt.host.cpu&amp;lt;/code&amp;gt;. Наблюдение за агрегированной загрузкой CPU по всем хостам помогает визуально подтвердить, как ваша инфраструктура реагирует на всплески нагрузки и восстанавливается после них, а также отслеживать медленные, незаметные тенденции роста.&amp;lt;pre&amp;gt;timeseries usage=avg(dt.host.cpu.usage)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример 2: Средняя загрузка CPU по хостам с ограничением до топ-3 хостов ==&lt;br /&gt;
В этом примере вы получаете среднюю загрузку CPU каждого мониторимого хоста и фокусируетесь на трёх хостах с наибольшей загрузкой. &amp;#039;&amp;#039;&amp;#039;ЕдиныйАгент&amp;#039;&amp;#039;&amp;#039; собирает измерения CPU со своего хоста. Эти метрики доступны через ключи метрик, начинающиеся с &amp;lt;code&amp;gt;dt.host.cpu&amp;lt;/code&amp;gt;. Построение графиков загрузки CPU отдельных хостов помогает визуализировать нормальную и аномальную нагрузку. Фокусируясь на трёх хостах с наибольшей загрузкой CPU, вы можете начать исследование недостаточно обеспеченных ресурсами приложений. Аналогично, фокусировка на хостах с наименьшей загрузкой CPU может выявить избыточное выделение ресурсов и привести к возможностям экономии.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Запрос данных:&amp;#039;&amp;#039;&amp;#039;&amp;lt;pre&amp;gt;timeseries usage=avg(dt.host.cpu.usage), usage_summary=avg(dt.host.cpu.usage, scalar:true), by:{dt.entity.host}&lt;br /&gt;
| fieldsAdd entityName(dt.entity.host)&lt;br /&gt;
| sort usage_summary desc&lt;br /&gt;
| limit 3&amp;lt;/pre&amp;gt;&amp;#039;&amp;#039;&amp;#039;Упрощение результатов:&amp;#039;&amp;#039;&amp;#039; в некоторых ситуациях таблица может быть удобнее для чтения, чем линейный график. Давайте запросим данные, которые лучше всего работают с табличным выводом, сосредоточившись на столбцах, которые нас больше всего интересуют: &amp;lt;code&amp;gt;dt.entity.host&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;usage&amp;lt;/code&amp;gt;.&amp;lt;pre&amp;gt;timeseries usage=avg(dt.host.cpu.usage, scalar:true), by:{dt.entity.host}&lt;br /&gt;
| fieldsAdd entityName(dt.entity.host)&lt;br /&gt;
| sort usage desc&lt;br /&gt;
| limit 3&lt;br /&gt;
| fields dt.entity.host, dt.entity.host.name, usage&amp;lt;/pre&amp;gt;Это по сути тот же запрос, что и выше, но без временного ряда.&lt;br /&gt;
&lt;br /&gt;
== Пример 3: Средняя загрузка CPU по IP-адресу хоста ==&lt;br /&gt;
В этом примере вы используете условие &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt; для запроса хостов по их IP-адресу. Используя оператор &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt; с &amp;lt;code&amp;gt;classicEntitySelector&amp;lt;/code&amp;gt;, можно фильтровать по &amp;lt;code&amp;gt;ipAddress&amp;lt;/code&amp;gt; и другим атрибутам хоста. Использование параметра &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt; команды &amp;lt;code&amp;gt;timeseries&amp;lt;/code&amp;gt; более производительно, чем объединение &amp;lt;code&amp;gt;timeseries&amp;lt;/code&amp;gt; с командой &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt;.&amp;lt;pre&amp;gt;timeseries usage=avg(dt.host.cpu.usage), filter: {in( dt.entity.host, classicEntitySelector(&amp;quot;type(host),ipAddress(\&amp;quot;10.102.39.126\&amp;quot;)&amp;quot;) )}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример 4: Количество хостов, отправляющих данные о загрузке CPU ==&lt;br /&gt;
В этом примере вы научитесь объединять &amp;lt;code&amp;gt;timeseries&amp;lt;/code&amp;gt; с &amp;lt;code&amp;gt;summarize&amp;lt;/code&amp;gt;. Сначала вы запрашиваете хосты, отправляющие данные о загрузке CPU, а затем подсчитываете количество хостов в результате. Другие команды &amp;#039;&amp;#039;&amp;#039;DQL&amp;#039;&amp;#039;&amp;#039; также можно объединять с &amp;lt;code&amp;gt;timeseries&amp;lt;/code&amp;gt;, как показано в предыдущих примерах, но в отличие от них, &amp;lt;code&amp;gt;summarize&amp;lt;/code&amp;gt; дополнительно агрегирует набор данных, возвращённый &amp;lt;code&amp;gt;timeseries&amp;lt;/code&amp;gt;. Эта двухэтапная агрегация будет полезна по мере усложнения ваших запросов.&amp;lt;pre&amp;gt;timeseries usage=avg(dt.host.cpu.usage), by:{dt.entity.host}&lt;br /&gt;
| summarize count()&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример 5: Топ хостов по прочитанным байтам с соответствующими записанными байтами ==&lt;br /&gt;
В этом примере вы обогащаете один результат контекстом из другой метрики. Даже если вы сосредоточены на операциях чтения с диска, соответствующие операции записи на диск могут дать полезный контекст.&amp;lt;pre&amp;gt;timeseries by:{dt.entity.host}, { bytes_read=sum(dt.host.disk.bytes_read, scalar:true), bytes_written=sum(dt.host.disk.bytes_written, scalar:true) }&lt;br /&gt;
| sort bytes_read desc&lt;br /&gt;
| limit 3&lt;br /&gt;
| fields dt.entity.host, entityName(dt.entity.host), bytes_read, bytes_written&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример 6: Доступный CPU по ноде Kubernetes ==&lt;br /&gt;
В этом примере вы рассчитываете доступный CPU на всех нодах вашего гипотетического кластера «openfeature». Чтобы вернуть временной ряд, а не одно значение, мы используем оператор &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt; для вычисления разницы отдельных значений временных рядов. Результатом является другой временной ряд, который можно визуализировать с помощью линейного графика. Доступный CPU важен для эффективного использования ресурсов и предотвращения конфликтов за ресурсы. Временной ряд, визуализированный с помощью линейного графика, — это один из способов показать, как доступный CPU меняется со временем.&amp;lt;pre&amp;gt;timeseries { cpu_allocatable = min(dt.kubernetes.node.cpu_allocatable), requests_cpu = max(dt.kubernetes.container.requests_cpu) }, by:{dt.entity.kubernetes_cluster, dt.entity.kubernetes_node}&lt;br /&gt;
| fieldsAdd // add friendly names&lt;br /&gt;
entityName(dt.entity.kubernetes_cluster), entityName(dt.entity.kubernetes_node)&lt;br /&gt;
| fieldsAdd result = cpu_allocatable[] - requests_cpu[]&lt;br /&gt;
| fieldsRemove cpu_allocatable, requests_cpu&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример 7: Средняя загрузка CPU хоста по размеру хоста ==&lt;br /&gt;
В этом примере вы научитесь использовать функцию &amp;lt;code&amp;gt;entityAttr&amp;lt;/code&amp;gt; для анализа загрузки CPU хоста по размеру хоста. &amp;#039;&amp;#039;&amp;#039;ЕдиныйАгент&amp;#039;&amp;#039;&amp;#039; собирает локальный контекст со своего хоста: информацию о том, сколько CPU установлено и сколько памяти он имеет. Вы можете добавить эту информацию в свой запрос с помощью функции &amp;lt;code&amp;gt;entityAttr&amp;lt;/code&amp;gt;. Информация на уровне хоста иногда может быть слишком детальной и трудной для интерпретации. В таких ситуациях хорошо выбранный атрибут сущности может помочь вам исследовать и анализировать, как отдельные хосты вносят вклад в более широкие тенденции.&amp;lt;pre&amp;gt;timeseries usage=avg(dt.host.cpu.usage, scalar:true), by:{dt.entity.host}&lt;br /&gt;
| fieldsAdd cpuCores = entityAttr(dt.entity.host, &amp;quot;cpuCores&amp;quot;)&lt;br /&gt;
| summarize by:{cpuCores}, avg(usage), count_hosts=count()&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример 8: Запрос нескольких метрик загрузки CPU одним запросом ==&lt;br /&gt;
В этом примере вы научитесь использовать команду &amp;lt;code&amp;gt;append&amp;lt;/code&amp;gt; для возврата нескольких метрик CPU одним запросом. Объединение запросов в одну команду может быть полезно для сравнения измерений из разных контекстов, так как они будут построены вместе. Поскольку вы запрашиваете много метрик с одного хоста и не выполняете арифметических операций, команда &amp;lt;code&amp;gt;append&amp;lt;/code&amp;gt; здесь предпочтительнее, чем запрос нескольких метрик одной командой &amp;lt;code&amp;gt;timeseries&amp;lt;/code&amp;gt;. Команда &amp;lt;code&amp;gt;append&amp;lt;/code&amp;gt; — это сравнительно более гибкий вариант, так как не требует эквивалентных аргументов &amp;lt;code&amp;gt;by&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt;. Кроме того, объединение &amp;lt;code&amp;gt;append&amp;lt;/code&amp;gt; более эффективно с точки зрения &amp;#039;&amp;#039;&amp;#039;DQL&amp;#039;&amp;#039;&amp;#039;.&amp;lt;pre&amp;gt;timeseries idle=avg(dt.host.cpu.idle), by:{dt.entity.host}, filter:{dt.entity.host == &amp;quot;HOST-EFAB6D2FE7274823&amp;quot;}&lt;br /&gt;
| append [ timeseries system=avg(dt.host.cpu.system), by:{dt.entity.host}, filter:{dt.entity.host == &amp;quot;HOST-EFAB6D2FE7274823&amp;quot;} ]&lt;br /&gt;
| append [ timeseries user=avg(dt.host.cpu.user), by:{dt.entity.host}, filter:{dt.entity.host == &amp;quot;HOST-EFAB6D2FE7274823&amp;quot;} ]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример 9: Коэффициент отказов соединений по хосту ==&lt;br /&gt;
В этом примере вы примените то, что узнали из предыдущих примеров, чтобы рассчитать коэффициент отказов и найти хосты, на которых выполняются процессы с большим количеством неудачных соединений. Этот пример использует параметр &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; для управления случаем, когда отказов нет. Он вставляет значение 0 везде, где данные отсутствуют. Расчёт коэффициента отказов распространён и критически важен для мониторинга целей уровня обслуживания. Обнаружение постоянных или повторяющихся высоких коэффициентов отказов в тестовых средах может указывать на проблему развёртывания до того, как приложение попадёт в производственную среду.&amp;lt;pre&amp;gt;timeseries { new = sum(dt.process.network.sessions.new), reset = sum(dt.process.network.sessions.reset, default:0), timeout = sum(dt.process.network.sessions.timeout, default:0) }, by:{dt.entity.host}&lt;br /&gt;
| fieldsAdd result = 100 * (reset[] + timeout[]) / new[]&lt;br /&gt;
| filter arrayAvg(result) &amp;gt; 0&lt;br /&gt;
| sort arrayAvg(result) desc&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример 10: Мониторинг доступности хостов ==&lt;br /&gt;
В этом примере вы будете мониторить доступность хостов и подсчитывать те, которые в данный момент работают. Вы можете использовать команду &amp;lt;code&amp;gt;timeseries&amp;lt;/code&amp;gt; с параметром &amp;lt;code&amp;gt;nonempty&amp;lt;/code&amp;gt; для расчёта доступности хостов. Этот параметр гарантирует, что вы получите результат, даже когда никакие данные не соответствуют фильтру — например, когда ни один хост не работает. Это обеспечивает более точное представление о доступности хостов.&amp;lt;pre&amp;gt;timeseries availability = sum(dt.host.availability, default:0), nonempty:true, filter:{availability.state == &amp;quot;up&amp;quot;}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример 11: Проба готовности ==&lt;br /&gt;
В этом примере вы запрашиваете метрики логов, чтобы подсчитать успешные и неудачные пробы готовности по хостам. Вы можете использовать параметр &amp;lt;code&amp;gt;union&amp;lt;/code&amp;gt;, чтобы охватить все хосты, включая те, у которых нет ни отказов, ни успехов.&amp;lt;pre&amp;gt;timeseries failure_count=sum(log.readiness_probe.failure_count, default:0), success_count=sum(log.readiness_probe.success_count, default:0), by:{dt.entity.host}, union:true&amp;lt;/pre&amp;gt;Аргумент &amp;lt;code&amp;gt;union:true&amp;lt;/code&amp;gt; охватывает все хосты, даже если у них не было ни отказов, ни успехов.&lt;br /&gt;
&lt;br /&gt;
== Пример 12: Коэффициент отказов ==&lt;br /&gt;
В этом примере вы запрашиваете коэффициент отказов в секунду для конкретной конечной точки («/api/accounts»). Используя параметр &amp;lt;code&amp;gt;rate&amp;lt;/code&amp;gt;, можно нормализовать данные временного ряда к определённой длительности. Мониторинг коэффициентов отказов запросов критически важен для понимания производительности приложения, выявления узких мест и обеспечения оптимального пользовательского опыта. Ключ-АСТРОМ по умолчанию показывает количество запросов в минуту, так как метрики сервисов Ключ-АСТРОМ собирают данные о запросах с минутной гранулярностью.&amp;lt;pre&amp;gt;timeseries sum(dt.service.request.failure_count, rate:1s), filter:{startsWith(endpoint.name, &amp;quot;/api/accounts&amp;quot;)}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример 13: Планирование ёмкости ==&lt;br /&gt;
В этом примере вы запрашиваете текущую доступность диска хоста и используете параметр &amp;lt;code&amp;gt;shift&amp;lt;/code&amp;gt; для сравнения с использованием 7 дней назад. Мониторинг доступности диска хоста помогает при планировании ёмкости. Если сегодняшнее использование дискового пространства стабильно выше, чем 7 дней назад, это может сигнализировать о необходимости дополнительных ресурсов хранения. И наоборот, снижение использования может позволить оптимизировать ресурсы.&amp;lt;pre&amp;gt;timeseries avail=avg(dt.host.disk.avail), by:{dt.entity.host}, from:-24h&lt;br /&gt;
| append [ timeseries avail.yesterday=avg(dt.host.disk.avail), by:{dt.entity.host}, shift:-168h ]&lt;br /&gt;
| filter startsWith(entityName(dt.entity.host), &amp;quot;prod-&amp;quot;)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример 14: Проверка доступности и резервирования хостов ==&lt;br /&gt;
В этом примере вы используете агрегацию &amp;lt;code&amp;gt;count&amp;lt;/code&amp;gt; для отслеживания количества хостов, мониторимых в каждой зоне доступности облачного региона. Приложения часто развёртывают хосты в нескольких зонах доступности (AZ) для обеспечения высокой доступности. Подсчёт хостов в каждой зоне доступности помогает проверить, сбалансировано ли распределение, и в случае сбоя сети или других проблем в одной зоне доступности рабочая нагрузка может переключиться на другую зону.&amp;lt;pre&amp;gt;timeseries num_hosts = count(dt.host.cpu.usage), by:{cloud.availability_zone}, filter:{startsWith(cloud.availability_zone, &amp;quot;region-1&amp;quot;)}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример 15: Оптимизация производительности ==&lt;br /&gt;
В этом примере вы используете агрегацию &amp;lt;code&amp;gt;percentile&amp;lt;/code&amp;gt; для отслеживания 90-го процентиля времени отклика гипотетической конечной точки /api/accounts. Отслеживание процентилей времени отклика сервиса помогает выявлять узкие места и области для улучшения. Если конкретная транзакция постоянно превышает этот порог, вы можете решить, требует ли она расследования и дополнительной оптимизации.&amp;lt;pre&amp;gt;timeseries p90 = percentile(dt.service.request.response_time, 90), filter:{startsWith(endpoint.name, &amp;quot;/api/accounts&amp;quot;)}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример 16: Правильный подбор размера развёртываний ==&lt;br /&gt;
В этом примере вы используете функцию &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; для маркировки недоиспользуемых пар хост-диск. Выявление избыточно выделенных развёртываний помогает снизить операционные затраты. Удалив избыточно выделенную инфраструктуру, вы можете определить правильный размер развёртывания для вашего приложения.&amp;lt;pre&amp;gt;timeseries avail=avg(dt.host.disk.avail, scalar:true), by:{dt.entity.disk, dt.entity.host}, filter:{startsWith(dt.entity.host, &amp;quot;my-app-&amp;quot;)}&lt;br /&gt;
| fieldsAdd disk_usage=if(avail&amp;gt;450000000000, &amp;quot;underused&amp;quot;, else: &amp;quot;optimal&amp;quot;)&lt;br /&gt;
| limit 3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример 17: Разделение загрузки CPU по аннотациям Kubernetes ==&lt;br /&gt;
В этом примере вы разделяете загрузку CPU по аннотации Kubernetes. Вы можете использовать аннотацию Kubernetes &amp;lt;code&amp;gt;app.kubernetes.io/component&amp;lt;/code&amp;gt; для оценки производительности компонентов вашего приложения. Аннотации — это атрибуты облачных приложений, и обычно они не загружаются вместе с метрикой. Вам следует разделить по облачному приложению и найти соответствующую аннотацию. Многие функции команды &amp;lt;code&amp;gt;summarize&amp;lt;/code&amp;gt; принимают итеративные выражения, такие как &amp;lt;code&amp;gt;cpu_usage[]&amp;lt;/code&amp;gt;, для сохранения временного ряда.&amp;lt;pre&amp;gt;timeseries cpu_usage = sum(dt.kubernetes.container.cpu_usage, rollup:max), by:{dt.entity.cloud_application}&lt;br /&gt;
| fieldsAdd annotations = entityAttr(dt.entity.cloud_application, &amp;quot;kubernetesAnnotations&amp;quot;)&lt;br /&gt;
| fieldsAdd component = annotations[`app.kubernetes.io/component`]&lt;br /&gt;
| summarize cpu_usage = sum(cpu_usage[]), by:{timeframe, interval, component}&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>IKuznetsov</name></author>
	</entry>
</feed>