<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Документация Proto Observability Platform – аномалии</title><link>/docs/tags/%D0%B0%D0%BD%D0%BE%D0%BC%D0%B0%D0%BB%D0%B8%D0%B8/</link><description>Recent content in аномалии on Документация Proto Observability Platform</description><generator>Hugo -- gohugo.io</generator><language>ru</language><atom:link href="/docs/tags/%D0%B0%D0%BD%D0%BE%D0%BC%D0%B0%D0%BB%D0%B8%D0%B8/index.xml" rel="self" type="application/rss+xml"/><item><title>Alerting: Выявление аномалий</title><link>/docs/alerting/anomaly-detection/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/alerting/anomaly-detection/</guid><description>
&lt;p>На этой странице:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#%d1%87%d1%82%d0%be-%d1%8d%d1%82%d0%be-%d1%82%d0%b0%d0%ba%d0%be%d0%b5">Что это такое&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%ba%d0%b0%d0%ba%d0%b8%d0%b5-%d0%bc%d0%b5%d1%82%d1%80%d0%b8%d0%ba%d0%b8-%d0%bf%d1%80%d0%be%d1%84%d0%b8%d0%bb%d0%b8%d1%80%d1%83%d1%8e%d1%82%d1%81%d1%8f">Какие метрики профилируются&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%b2%d1%81%d1%82%d1%80%d0%be%d0%b5%d0%bd%d0%bd%d1%8b%d0%b5-%d0%bf%d1%80%d0%b0%d0%b2%d0%b8%d0%bb%d0%b0-%d0%b2%d1%8b%d1%8f%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b0%d0%bd%d0%be%d0%bc%d0%b0%d0%bb%d0%b8%d0%b9">Встроенные правила выявления аномалий&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%ba%d0%b0%d0%ba-%d0%b4%d0%be%d0%b1%d0%b0%d0%b2%d0%b8%d1%82%d1%8c-%d0%bc%d0%b5%d1%82%d1%80%d0%b8%d0%ba%d0%b8-%d0%b2-%d0%bf%d1%80%d0%be%d1%84%d0%b8%d0%bb%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5">Как добавить метрики в профилирование&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%b4%d0%be%d0%bf%d0%be%d0%bb%d0%bd%d0%b8%d1%82%d0%b5%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d1%8b">Дополнительные параметры&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d1%87%d1%82%d0%be-%d0%b4%d0%b0%d0%bb%d1%8c%d1%88%d0%b5">Что дальше&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="что-это-такое">Что это такое&lt;/h2>
&lt;p>&lt;strong>Выявление аномалий&lt;/strong> — механизм Proto Observability Platform, который с помощью машинного обучения (ML) автоматически строит &lt;strong>базовую линию&lt;/strong> (ожидаемый диапазон значений, baseline) для ключевых показателей каждого сервиса и ключевой транзакции. Базовая линия учитывает суточную и недельную сезонность и постоянно переобучается на свежих данных, поэтому &lt;strong>не требует ручной настройки порогов&lt;/strong> — она подстраивается под нормальное поведение каждого сервиса.&lt;/p>
&lt;p>Аномалией считается выход фактического значения за &lt;strong>верхнюю границу&lt;/strong> ожидаемого диапазона. Базовую линию рассчитывает сервис &lt;code>proto-metric-analyzer&lt;/code>.&lt;/p>
&lt;p>&lt;img src="images/baseline.png" alt="Базовая линия по трём ключевым показателям сервиса">
&lt;em>Скриншот: базовая линия (серая область — ожидаемый диапазон) и фактические значения (линия) для вызовов, ошибок и времени отклика.&lt;/em>&lt;/p>
&lt;p>Для каждой профилируемой метрики платформа публикует сопутствующий набор метрик базовой линии с суффиксом &lt;code>_prophet&lt;/code> и лейблом &lt;code>value_type&lt;/code>: &lt;code>yhat&lt;/code> — прогноз, &lt;code>yhat_lower&lt;/code> и &lt;code>yhat_upper&lt;/code> — нижняя и верхняя границы ожидаемого диапазона. На этих метриках строятся встроенные правила алертинга. Подробнее о метриках базовой линии — &lt;a href="../metrics-and-expressions/">Метрики и выражения для правил&lt;/a>.&lt;/p>
&lt;h2 id="какие-метрики-профилируются">Какие метрики профилируются&lt;/h2>
&lt;p>Из коробки базовая линия рассчитывается для следующих метрик:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Категория&lt;/th>
&lt;th>Метрика&lt;/th>
&lt;th>Показатель&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Сервисы&lt;/td>
&lt;td>&lt;code>services_calls&lt;/code>&lt;/td>
&lt;td>количество вызовов&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Сервисы&lt;/td>
&lt;td>&lt;code>services_callduration&lt;/code>&lt;/td>
&lt;td>время отклика&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Сервисы&lt;/td>
&lt;td>&lt;code>services_errorcallsperc&lt;/code>&lt;/td>
&lt;td>доля вызовов с ошибками&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ключевые транзакции&lt;/td>
&lt;td>&lt;code>calls_keybusinesstransactioncount&lt;/code>&lt;/td>
&lt;td>количество вызовов&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ключевые транзакции&lt;/td>
&lt;td>&lt;code>calls_keybusinesstransactionduration&lt;/code>&lt;/td>
&lt;td>время отклика&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ключевые транзакции&lt;/td>
&lt;td>&lt;code>calls_keybusinesstransactionerrorperc&lt;/code>&lt;/td>
&lt;td>доля вызовов с ошибками&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Хосты&lt;/td>
&lt;td>&lt;code>system_cpu_idle&lt;/code>&lt;/td>
&lt;td>простой CPU&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Хосты&lt;/td>
&lt;td>&lt;code>system_mem_usable&lt;/code>&lt;/td>
&lt;td>доступная память&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Для каждой из этих метрик автоматически публикуется набор метрик базовой линии &lt;code>&amp;lt;метрика&amp;gt;_prophet&lt;/code>. Встроенные правила алертинга есть для метрик &lt;strong>сервисов&lt;/strong> и &lt;strong>ключевых транзакций&lt;/strong> (см. ниже). Для системных метрик базовая линия публикуется, но встроенного правила нет — при необходимости создайте собственное.&lt;/p>
&lt;h2 id="встроенные-правила-выявления-аномалий">Встроенные правила выявления аномалий&lt;/h2>
&lt;p>Из коробки доступны правила алертинга в группе &lt;code>ANOMALY&lt;/code> (критичность &lt;code>WARNING&lt;/code>, срабатывание при выполнении условия в течение 7 минут). Каждое правило сравнивает фактическое значение метрики с верхней границей её базовой линии:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Правило&lt;/th>
&lt;th>Метрика&lt;/th>
&lt;th>Когда срабатывает&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Аномалия в количестве вызовов&lt;/td>
&lt;td>&lt;code>services_calls&lt;/code>&lt;/td>
&lt;td>фактическое число вызовов выше ожидаемого диапазона&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Аномалия во времени отклика&lt;/td>
&lt;td>&lt;code>services_callduration&lt;/code>&lt;/td>
&lt;td>время отклика выше ожидаемого&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Аномалия в количестве ошибок&lt;/td>
&lt;td>&lt;code>services_errorcallsperc&lt;/code>&lt;/td>
&lt;td>доля ошибок выше ожидаемой&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Аномалия в количестве вызовов ключевой транзакции&lt;/td>
&lt;td>&lt;code>calls_keybusinesstransactioncount&lt;/code>&lt;/td>
&lt;td>то же для ключевой транзакции&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Аномалия во времени отклика ключевой транзакции&lt;/td>
&lt;td>&lt;code>calls_keybusinesstransactionduration&lt;/code>&lt;/td>
&lt;td>то же для ключевой транзакции&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Аномалия в проценте ошибок ключевой транзакции&lt;/td>
&lt;td>&lt;code>calls_keybusinesstransactionerrorperc&lt;/code>&lt;/td>
&lt;td>то же для ключевой транзакции&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;img src="images/anomaly-rules-list.png" alt="Встроенные правила в группе ANOMALY">
&lt;em>Скриншот: список правил, отфильтрованный по группе &lt;code>ANOMALY&lt;/code>.&lt;/em>&lt;/p>
&lt;p>Все правила &lt;strong>односторонние&lt;/strong> — срабатывают только при превышении верхней границы (&lt;code>value_type=&amp;quot;yhat_upper&amp;quot;&lt;/code>) и только при наличии трафика. Дополнительные условия по трафику подавляют ложные срабатывания при простое сервиса и в период первичного обучения модели. Схема выражения:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-promql" data-lang="promql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">sum&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">services_calls&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">by&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">service&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nv">service_id&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nv">service_group&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">sum&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">services_calls_prophet&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="nl">value_type&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">&amp;#34;&lt;/span>&lt;span class="s">yhat_upper&lt;/span>&lt;span class="p">&amp;#34;}&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">by&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">service&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nv">service_id&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nv">service_group&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="ow">and&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">avg&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">services_calls&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">by&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">service&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nv">service_id&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nv">service_group&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Эти правила встроенные: их нельзя редактировать или удалить, но можно &lt;strong>отключить&lt;/strong> или &lt;strong>создать копию&lt;/strong> и настроить уже копию — см. &lt;a href="../configuration/#%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d0%bf%d1%80%d0%b0%d0%b2%d0%b8%d0%bb%d0%b0%d0%bc%d0%b8">Настройка оповещений → Работа с правилами&lt;/a>.&lt;/p>
&lt;h2 id="как-добавить-метрики-в-профилирование">Как добавить метрики в профилирование&lt;/h2>
&lt;p>Список профилируемых метрик задаётся в конфигурации сервиса &lt;code>proto-metric-analyzer&lt;/code> через переменные окружения — &lt;strong>изменение кода не требуется&lt;/strong>. Доступны две переменные:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;code>POBP_ADDITIONAL_METRICS_LIST&lt;/code>&lt;/strong> — рекомендуемый способ расширения. Список метрик через &lt;code>;&lt;/code>, который &lt;strong>добавляется&lt;/strong> к стандартному набору (с дедупликацией).&lt;/li>
&lt;li>&lt;strong>&lt;code>POBP_METRICS_LIST&lt;/code>&lt;/strong> — полностью &lt;strong>заменяет&lt;/strong> стандартный набор (тогда нужно перечислить и стандартные метрики, и новые).&lt;/li>
&lt;/ul>
&lt;p>В элементе списка можно указать селектор лейблов, например &lt;code>up{app=&amp;quot;payments&amp;quot;}&lt;/code> — каждая подходящая серия профилируется отдельно.&lt;/p>
&lt;p>Пример для &lt;code>docker-compose&lt;/code> (добавить APDEX сервисов и свою метрику):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">services&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">proto-metric-analyzer&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">environment&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">POBP_ADDITIONAL_METRICS_LIST&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;services_apdex;my_custom_metric&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>После применения для новой метрики автоматически появятся метрики базовой линии &lt;code>&amp;lt;метрика&amp;gt;_prophet&lt;/code>.&lt;/p>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Базовая линия — это не алерт&lt;/h4>
&lt;p>Профилирование метрики &lt;strong>не создаёт правило алертинга автоматически&lt;/strong>. Чтобы получать оповещения по новой метрике, добавьте собственное правило (см. &lt;a href="../configuration/#%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bf%d1%80%d0%b0%d0%b2%d0%b8%d0%bb%d0%b0">Создание правила&lt;/a>), сравнив метрику с её верхней границей:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-promql" data-lang="promql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">sum&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">my_custom_metric&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">by&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">service&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nv">service_id&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">sum&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">my_custom_metric_prophet&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="nl">value_type&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">&amp;#34;&lt;/span>&lt;span class="s">yhat_upper&lt;/span>&lt;span class="p">&amp;#34;}&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">by&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">service&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nv">service_id&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;h2 id="дополнительные-параметры">Дополнительные параметры&lt;/h2>
&lt;p>Поведение профилирования настраивается переменными окружения сервиса &lt;code>proto-metric-analyzer&lt;/code>:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Переменная&lt;/th>
&lt;th style="text-align:center">По умолчанию&lt;/th>
&lt;th>Назначение&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>POBP_ROLLING_TRAINING_WINDOW_SIZE&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>7d&lt;/code>&lt;/td>
&lt;td>объём истории для обучения модели&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>POBP_RETRAINING_INTERVAL_MINUTES&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>120&lt;/code>&lt;/td>
&lt;td>как часто переобучается модель&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>POBP_Z_THRESHOLD&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>3.0&lt;/code>&lt;/td>
&lt;td>чувствительность: ширина доверительного интервала (меньше — чувствительнее)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>POBP_DIRECTION_DEFAULT&lt;/code>&lt;/td>
&lt;td style="text-align:center">&lt;code>both&lt;/code>&lt;/td>
&lt;td>направление аномалии: &lt;code>up&lt;/code> / &lt;code>down&lt;/code> / &lt;code>both&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Версия&lt;/h4>
Параметры &lt;code>POBP_Z_THRESHOLD&lt;/code> и &lt;code>POBP_DIRECTION_DEFAULT&lt;/code> доступны начиная с версии 201.
&lt;/div>
&lt;h2 id="что-дальше">Что дальше&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="../">Алертинг в Proto Observability Platform&lt;/a> — обзор модуля алертинга.&lt;/li>
&lt;li>&lt;a href="../configuration/">Настройка оповещений&lt;/a> — создание каналов, политик и правил, работа с правилами.&lt;/li>
&lt;li>&lt;a href="../metrics-and-expressions/">Метрики и выражения для правил&lt;/a> — метрики сервисов и метрики базовой линии &lt;code>_prophet&lt;/code>.&lt;/li>
&lt;/ul></description></item></channel></rss>