<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%BD%D0%BE%D1%82%D0%B0%D1%86%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%BD%D0%BE%D1%82%D0%B0%D1%86%D0%B8%D0%B8/index.xml" rel="self" type="application/rss+xml"/><item><title>Alerting: Метрики и выражения для правил алертинга</title><link>/docs/alerting/metrics-and-expressions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/alerting/metrics-and-expressions/</guid><description>
&lt;p>На этой странице:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#%d1%8f%d0%b7%d1%8b%d0%ba%d0%b8-%d0%b2%d1%8b%d1%80%d0%b0%d0%b6%d0%b5%d0%bd%d0%b8%d0%b9">Языки выражений&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%b4%d0%be%d1%81%d1%82%d1%83%d0%bf%d0%bd%d1%8b%d0%b5-%d0%bc%d0%b5%d1%82%d1%80%d0%b8%d0%ba%d0%b8-%d1%81%d0%b5%d1%80%d0%b2%d0%b8%d1%81%d0%be%d0%b2">Доступные метрики сервисов&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%bb%d0%b5%d0%b9%d0%b1%d0%bb%d1%8b-%d0%bc%d0%b5%d1%82%d1%80%d0%b8%d0%ba">Лейблы метрик&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d1%81%d0%b8%d0%bd%d1%82%d0%b0%d0%ba%d1%81%d0%b8%d1%81-%d1%84%d0%b8%d0%bb%d1%8c%d1%82%d1%80%d0%b0%d1%86%d0%b8%d0%b8-%d0%b8-%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d1%80%d1%8b-%d0%b2%d1%8b%d1%80%d0%b0%d0%b6%d0%b5%d0%bd%d0%b8%d0%b9">Синтаксис фильтрации и примеры выражений&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%b3%d0%b4%d0%b5-%d0%bf%d0%be%d1%81%d0%bc%d0%be%d1%82%d1%80%d0%b5%d1%82%d1%8c-%d1%81%d0%bf%d0%b8%d1%81%d0%be%d0%ba-%d0%bc%d0%b5%d1%82%d1%80%d0%b8%d0%ba">Где посмотреть список метрик&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%b0%d0%bd%d0%bd%d0%be%d1%82%d0%b0%d1%86%d0%b8%d0%b8-%d1%81%d0%be-%d1%81%d1%81%d1%8b%d0%bb%d0%ba%d0%b0%d0%bc%d0%b8-%d0%bd%d0%b0-%d0%b4%d0%b0%d1%88%d0%b1%d0%be%d1%80%d0%b4%d1%8b">Аннотации со ссылками на дашборды&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Эта страница — справочник для составления выражений в правилах алертинга. О том, как создавать правила в веб-интерфейсе (поля формы, предпросмотр, работа с правилами), см. &lt;a href="../configuration/">Настройка оповещений&lt;/a>. Обзор модуля алертинга — на странице &lt;a href="../">Алертинг в Proto Observability Platform&lt;/a>.&lt;/p>
&lt;h2 id="языки-выражений">Языки выражений&lt;/h2>
&lt;p>Proto Observability Platform поддерживает выражения в правилах алертинга, написанные на языках &lt;a href="https://prometheus.io/docs/prometheus/latest/querying/basics/" target="_blank" rel="noopener noreferrer">PromQL&lt;/a> и &lt;a href="https://docs.victoriametrics.com/metricsql/" target="_blank" rel="noopener noreferrer">MetricsQL&lt;/a>.&lt;/p>
&lt;p>Правило срабатывает, когда выражение возвращает результат. Например, выражение &lt;code>... &amp;gt; 100&lt;/code> вернёт серии только для тех сущностей, у которых значение превышает порог &lt;code>100&lt;/code>, — именно по ним и сработает алерт.&lt;/p>
&lt;h2 id="доступные-метрики-сервисов">Доступные метрики сервисов&lt;/h2>
&lt;p>Ниже перечислены ключевые метрики сервисов, доступные для &lt;strong>правил алертинга&lt;/strong>. Список не исчерпывающий: в правилах можно использовать любую метрику из хранилища метрик (инфраструктурные, Kubernetes, метрики БД и др.) — полный каталог доступен в &lt;a href="#%d0%b3%d0%b4%d0%b5-%d0%bf%d0%be%d1%81%d0%bc%d0%be%d1%82%d1%80%d0%b5%d1%82%d1%8c-%d1%81%d0%bf%d0%b8%d1%81%d0%be%d0%ba-%d0%bc%d0%b5%d1%82%d1%80%d0%b8%d0%ba">Браузере метрик&lt;/a>. Кроме того, набор метрик, для которых строится базовая линия, можно расширить через конфигурацию (см. &lt;a href="../anomaly-detection/#%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;/p>
&lt;p>Ключевые метрики сервисов:&lt;/p>
&lt;ul>
&lt;li>&lt;code>services_calls&lt;/code>: количество вызовов сервиса за интервал;&lt;/li>
&lt;li>&lt;code>services_callduration&lt;/code>: среднее время отклика сервиса, в миллисекундах;&lt;/li>
&lt;li>&lt;code>services_errorcallsperc&lt;/code>: доля вызовов с ошибками, в процентах (от &lt;code>0&lt;/code> до &lt;code>100&lt;/code>);&lt;/li>
&lt;li>&lt;code>services_apdex&lt;/code>: значение APDEX сервиса, от &lt;code>0&lt;/code> до &lt;code>1&lt;/code> (&lt;code>1&lt;/code> — все запросы обслужены в пределах целевого времени).&lt;/li>
&lt;/ul>
&lt;p>Для трёх из этих метрик платформа дополнительно строит ML-базовую линию (прогноз) — метрики с суффиксом &lt;code>_prophet&lt;/code>: &lt;code>services_calls_prophet&lt;/code>, &lt;code>services_callduration_prophet&lt;/code>, &lt;code>services_errorcallsperc_prophet&lt;/code>. Значения прогноза различаются по лейблу &lt;code>value_type&lt;/code> (например, &lt;code>yhat_upper&lt;/code> — верхняя граница нормы). Эти метрики используются встроенными правилами выявления аномалий — см. &lt;a href="../anomaly-detection/">Выявление аномалий&lt;/a>.&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Метрики для дашбордов&lt;/h4>
Перечисленные метрики предназначены для &lt;strong>алертинга&lt;/strong>. Полный список метрик, доступных для &lt;strong>визуализации на OLAP-дашбордах&lt;/strong>, можно посмотреть при создании дашборда в режиме &lt;strong>«OLAP Мастер»&lt;/strong> — см. руководство &lt;a href="../../guides/dashboards/#olap-%d0%bc%d0%b0%d1%81%d1%82%d0%b5%d1%80-apm-%d0%b8-eum-%d0%bc%d0%b5%d1%82%d1%80%d0%b8%d0%ba%d0%b8">Кастомные дашборды&lt;/a>.
&lt;/div>
&lt;h2 id="лейблы-метрик">Лейблы метрик&lt;/h2>
&lt;p>Для сервисов доступны следующие лейблы метрик:&lt;/p>
&lt;ul>
&lt;li>&lt;code>service&lt;/code>: имя сервиса, аналогичное отображаемому имени сервиса в разделе &lt;code>Приложения&lt;/code> &amp;gt; &lt;code>Сервисы&lt;/code>;&lt;/li>
&lt;li>&lt;code>service_id&lt;/code>: внутренний идентификатор сервиса для генерации ссылки на дашборд (см. &lt;a href="#%d0%b0%d0%bd%d0%bd%d0%be%d1%82%d0%b0%d1%86%d0%b8%d0%b8-%d1%81%d0%be-%d1%81%d1%81%d1%8b%d0%bb%d0%ba%d0%b0%d0%bc%d0%b8-%d0%bd%d0%b0-%d0%b4%d0%b0%d1%88%d0%b1%d0%be%d1%80%d0%b4%d1%8b">Аннотации со ссылками на дашборды&lt;/a>);&lt;/li>
&lt;li>&lt;code>host&lt;/code>, &lt;code>service_id_host&lt;/code>: хост и его идентификатор, на котором наблюдается сервис (используются в ссылках на дашборды сервера и контейнера).&lt;/li>
&lt;/ul>
&lt;h2 id="синтаксис-фильтрации-и-примеры-выражений">Синтаксис фильтрации и примеры выражений&lt;/h2>
&lt;p>Для применения в правилах фильтра по конкретному сервису используйте синтаксис &lt;code>метрика{лейбл=&amp;quot;значение&amp;quot;}&lt;/code>.&lt;/p>
&lt;p>Например, выражение &lt;code>services_callduration{service=&amp;quot;credit-bureau-service&amp;quot;}&lt;/code> вернёт среднее время отклика сервиса &lt;code>credit-bureau-service&lt;/code> в миллисекундах.&lt;/p>
&lt;p>Пример выражения для правила (время отклика сервиса больше 100 мс):&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">avg&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">services_callduration&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="nl">service&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">&amp;#34;&lt;/span>&lt;span class="s">credit-bureau-service&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 class="o">&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">100&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Разбор выражения:&lt;/p>
&lt;ul>
&lt;li>&lt;code>services_callduration&lt;/code> — метрика: время отклика сервиса (в миллисекундах);&lt;/li>
&lt;li>&lt;code>{service=&amp;quot;credit-bureau-service&amp;quot;}&lt;/code> — фильтр по имени сервиса;&lt;/li>
&lt;li>&lt;code>avg(...) by (service, service_id) &amp;gt; 100&lt;/code> — агрегация по лейблам &lt;code>service&lt;/code> и &lt;code>service_id&lt;/code> (лейбл &lt;code>service_id&lt;/code> нужен, чтобы в аннотациях получить ссылку на дашборд сервиса).&lt;/li>
&lt;/ul>
&lt;h2 id="где-посмотреть-список-метрик">Где посмотреть список метрик&lt;/h2>
&lt;p>Полный список доступных метрик с поиском доступен в &lt;strong>Браузере метрик&lt;/strong> (Metric Explorer): откройте раздел &lt;code>Метрики&lt;/code> &amp;gt; &lt;code>Браузер&lt;/code> в главном меню. Введите часть имени метрики в поле поиска — например, &lt;code>services&lt;/code> покажет все метрики сервисов.&lt;/p>
&lt;p>&lt;img src="images/metric-explorer.png" alt="Браузер метрик (Metric Explorer)">
&lt;em>Скриншот: Браузер метрик — поиск по каталогу метрик (запрос &lt;code>services&lt;/code>).&lt;/em>&lt;/p>
&lt;p>Браузер метрик также позволяет изучать лейблы метрик, количество временных рядов и строить запросы визуально. Подробнее — в руководстве &lt;a href="../../guides/metric_browser_and_promql_query_builder/">Браузер метрик и построитель PromQL-запросов&lt;/a>.&lt;/p>
&lt;h2 id="аннотации-со-ссылками-на-дашборды">Аннотации со ссылками на дашборды&lt;/h2>
&lt;p>Аннотации и лейблы задаются в правиле алертинга (см. &lt;a href="../configuration/#%d0%bb%d0%b5%d0%b9%d0%b1%d0%bb%d1%8b-%d0%b8-%d0%b0%d0%bd%d0%bd%d0%be%d1%82%d0%b0%d1%86%d0%b8%d0%b8">Настройка оповещений → Лейблы и аннотации&lt;/a>):&lt;/p>
&lt;ul>
&lt;li>&lt;strong>аннотации&lt;/strong> позволяют добавлять дополнительные метки к алертам; аннотации приходят в уведомления (Email, Telegram, Webhook и т. д.);&lt;/li>
&lt;li>&lt;strong>лейблы&lt;/strong> позволяют группировать алерты и используются в политиках маршрутизации алертов.&lt;/li>
&lt;/ul>
&lt;p>Зарезервированные ключи (имена) аннотаций формируют кликабельные ссылки на дашборды Proto OBP:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;code>dashboard&lt;/code>&lt;/strong>, &lt;strong>&lt;code>dashboardService&lt;/code>&lt;/strong> — ссылка на дашборд сервиса. Используйте следующее значение:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{{ $externalURL }}/dashboard/GENERAL/Service/{{ .Labels.service_id | reReplaceAll &amp;#34;__&amp;#34; &amp;#34;==&amp;#34; | reReplaceAll &amp;#34;_&amp;#34; &amp;#34;=&amp;#34; }}/Proto-General-Service
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;code>dashboardHost&lt;/code>&lt;/strong> — ссылка на дашборд сервера. Используйте следующее значение:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{{ $externalURL }}/dashboard/OS_LINUX/Service/{{ .Labels.service_id_host }}/Proto-Linux-Service
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;code>dashboardContainer&lt;/code>&lt;/strong> — ссылка на дашборд контейнера. Используйте следующее значение:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{{ $externalURL }}/dashboard/OS_LINUX/Endpoint/{{ .Labels.service_id_host }}/{{ .Labels.service_id_host }}_{{ .Labels.service_id_container }}/Proto-Linux-Docker
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;p>Примеры использования аннотаций — ссылок на дашборды:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Telegram-уведомления:&lt;/p>
&lt;img src="images/alert-notification-telegram.png" alt="Ссылка на дашборд в Telegram-уведомлении" width="550">
&lt;/li>
&lt;li>
&lt;p>Веб-интерфейс Proto OBP:&lt;/p>
&lt;img src="images/alert-realtime-example.png" alt="Ссылка на дашборд в веб-интерфейсе" width="550">
&lt;/li>
&lt;/ul></description></item><item><title>Guides: Маркеры событий (аннотации)</title><link>/docs/guides/event_markers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/guides/event_markers/</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%b1%d1%8b%d1%81%d1%82%d1%80%d1%8b%d0%b9-%d1%81%d1%82%d0%b0%d1%80%d1%82">Быстрый старт&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%b7%d0%b0%d1%87%d0%b5%d0%bc-%d1%8d%d1%82%d0%be-%d0%bd%d1%83%d0%b6%d0%bd%d0%be">Зачем это нужно&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%ba%d0%bb%d1%8e%d1%87%d0%b5%d0%b2%d1%8b%d0%b5-%d0%bf%d0%be%d0%bd%d1%8f%d1%82%d0%b8%d1%8f">Ключевые понятия&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%b3%d0%be%d1%82%d0%be%d0%b2%d1%8b%d0%b5-%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d1%80%d1%8b">Готовые примеры&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d1%81%d0%bf%d1%80%d0%b0%d0%b2%d0%be%d1%87%d0%bd%d0%b8%d0%ba-api">Справочник API&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d1%81%d0%be%d0%b2%d0%bc%d0%b5%d1%81%d1%82%d0%b8%d0%bc%d0%be%d1%81%d1%82%d1%8c-%d1%81-grafana">Совместимость с Grafana&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d1%85%d1%80%d0%b0%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b8-%d0%b4%d0%be%d1%81%d1%82%d1%83%d0%bf">Хранение и доступ&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="что-это-такое">Что это такое&lt;/h2>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Доступно с версии 201&lt;/h4>
Grafana-совместимый API маркеров событий (&lt;code>/api/annotations&lt;/code>) для записи релизов, деплоев, изменений и инцидентов и их отображения на дашбордах.
&lt;/div>
&lt;p>&lt;strong>Маркер события (аннотация)&lt;/strong> — это отметка во времени поверх графиков метрик:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>точечный маркер&lt;/strong> — вертикальная линия (событие в один момент);&lt;/li>
&lt;li>&lt;strong>интервальный маркер&lt;/strong> — закрашенная область (событие с длительностью).&lt;/li>
&lt;/ul>
&lt;p>Метрики показывают, &lt;em>что&lt;/em> произошло (выросло время отклика, пошли ошибки), но не отвечают, &lt;em>почему именно в этот момент&lt;/em>. Маркеры добавляют недостающий слой контекста: «время отклика подскочило сразу после релиза &lt;code>v2.4.1&lt;/code>» или «провал трафика — это плановые работы, а не авария».&lt;/p>
&lt;p>События записываются простым HTTP-запросом из CI/CD-пайплайнов, скриптов и сторонних систем.&lt;/p>
&lt;h2 id="быстрый-старт">Быстрый старт&lt;/h2>
&lt;p>Отметить релиз — один запрос:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">curl -X POST &lt;span class="s2">&amp;#34;https://&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">PROTO_BACKEND_URL&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">/api/annotations&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -H &lt;span class="s2">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -d &lt;span class="s1">&amp;#39;{&amp;#34;text&amp;#34;: &amp;#34;Релиз payment_bank v2.4.1&amp;#34;, &amp;#34;tags&amp;#34;: [&amp;#34;release&amp;#34;], &amp;#34;type&amp;#34;: &amp;#34;RELEASE&amp;#34;, &amp;#34;service&amp;#34;: &amp;#34;payment_bank&amp;#34;}&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>В ответ вернётся идентификатор созданного маркера:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;0a4e7c8b-1f2d-4a3e-9b8c-2d1e0f3a4b5c&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;message&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Annotation added&amp;#34;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Готово — событие записано и доступно для отображения на дашбордах. Аутентификация не требуется (см. &lt;a href="#%d1%85%d1%80%d0%b0%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b8-%d0%b4%d0%be%d1%81%d1%82%d1%83%d0%bf">Хранение и доступ&lt;/a>); &lt;code>PROTO_BACKEND_URL&lt;/code> указывается без префикса &lt;code>https://&lt;/code>.&lt;/p>
&lt;h2 id="зачем-это-нужно">Зачем это нужно&lt;/h2>
&lt;p>Один маркер на графике мгновенно отвечает на первый вопрос при разборе сбоя — «что изменилось прямо перед этим?». Большинство инцидентов в проде вызвано именно изменениями (деплой или конфигурация), поэтому такая корреляция напрямую &lt;strong>сокращает время восстановления (MTTR)&lt;/strong>.&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;strong>Релизы и деплои&lt;/strong>&lt;/td>
&lt;td>Версия, коммит, время выката&lt;/td>
&lt;td>Видно, что всплеск ошибок совпал с релизом → быстрый откат и точный виновник&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Инциденты и аварии&lt;/strong>&lt;/td>
&lt;td>Период деградации (интервал)&lt;/td>
&lt;td>Готовая хронология для постмортема и аудита&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Плановые работы&lt;/strong>&lt;/td>
&lt;td>Окно техработ (интервал)&lt;/td>
&lt;td>Падение трафика не путают с аварией и не засчитывают как нарушение SLO&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Изменения конфигурации&lt;/strong>&lt;/td>
&lt;td>Feature-флаг, масштабирование, миграция БД&lt;/td>
&lt;td>Объясняет «загадочные» деградации, не связанные с релизом кода&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Бизнес-события&lt;/strong>&lt;/td>
&lt;td>Кампания, распродажа, рассылка&lt;/td>
&lt;td>Всплеск нагрузки выглядит объяснимым, а не аномальным&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Дополнительно маркеры дают &lt;strong>контекст дежурному без «археологии»&lt;/strong> (не нужно искать по Git, чатам и CI-логам) и при длительном хранении служат &lt;strong>журналом изменений в проде&lt;/strong>.&lt;/p>
&lt;h2 id="ключевые-понятия">Ключевые понятия&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Точечный маркер&lt;/strong> — событие в один момент времени (по умолчанию). Время задаётся полем &lt;code>time&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Интервальный маркер&lt;/strong> — событие с длительностью. Создаётся добавлением &lt;code>timeEnd&lt;/code> и отображается закрашенной областью.&lt;/li>
&lt;li>&lt;strong>Глобальное событие&lt;/strong> — поле &lt;code>service&lt;/code> не задано. Относится ко всей платформе и видно на дашборде любого сервиса. Подходит для платформенных релизов и общих работ.&lt;/li>
&lt;li>&lt;strong>Событие сервиса&lt;/strong> — поле &lt;code>service&lt;/code> задано. Видно только в контексте этого сервиса, не зашумляя остальные дашборды.&lt;/li>
&lt;li>&lt;strong>Теги&lt;/strong> (&lt;code>tags&lt;/code>) — метки для фильтрации (&lt;code>release&lt;/code>, &lt;code>deployment&lt;/code>, &lt;code>change&lt;/code>, &lt;code>incident&lt;/code>, &lt;code>env:production&lt;/code>). По ним дашборды отбирают, какие события показывать.&lt;/li>
&lt;li>&lt;strong>Тип&lt;/strong> (&lt;code>type&lt;/code>) — категория маркера, например &lt;code>RELEASE&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="готовые-примеры">Готовые примеры&lt;/h2>
&lt;p>Скопируйте подходящий шаблон в свой пайплайн или скрипт. Время указывается в &lt;strong>миллисекундах эпохи&lt;/strong> (Unix-время × 1000).&lt;/p>
&lt;p>&lt;strong>Релиз конкретного сервиса&lt;/strong> (со ссылкой на сборку — в &lt;code>text&lt;/code> допустима HTML-разметка):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">curl -X POST &lt;span class="s2">&amp;#34;https://&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">PROTO_BACKEND_URL&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">/api/annotations&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -H &lt;span class="s2">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -d &lt;span class="s1">&amp;#39;{
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;text&amp;#34;: &amp;#34;Релиз &amp;lt;b&amp;gt;payment_bank&amp;lt;/b&amp;gt; v2.4.1 · commit a1b2c3d · &amp;lt;a href=\&amp;#34;https://ci/build/987\&amp;#34;&amp;gt;сборка #987&amp;lt;/a&amp;gt;&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;tags&amp;#34;: [&amp;#34;release&amp;#34;, &amp;#34;env:production&amp;#34;],
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;type&amp;#34;: &amp;#34;RELEASE&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;service&amp;#34;: &amp;#34;payment_bank&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> }&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Глобальный релиз&lt;/strong> (виден на всех дашбордах — &lt;code>service&lt;/code> не указан):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">curl -X POST &lt;span class="s2">&amp;#34;https://&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">PROTO_BACKEND_URL&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">/api/annotations&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -H &lt;span class="s2">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -d &lt;span class="s1">&amp;#39;{&amp;#34;text&amp;#34;: &amp;#34;Платформенный релиз v2.4.1&amp;#34;, &amp;#34;tags&amp;#34;: [&amp;#34;release&amp;#34;], &amp;#34;type&amp;#34;: &amp;#34;RELEASE&amp;#34;}&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Окно технических работ&lt;/strong> (интервальный маркер — заданы &lt;code>time&lt;/code> и &lt;code>timeEnd&lt;/code>):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">curl -X POST &lt;span class="s2">&amp;#34;https://&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">PROTO_BACKEND_URL&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">/api/annotations&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -H &lt;span class="s2">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -d &lt;span class="s1">&amp;#39;{
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;text&amp;#34;: &amp;#34;Плановое обслуживание БД&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;tags&amp;#34;: [&amp;#34;change&amp;#34;, &amp;#34;maintenance&amp;#34;],
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;time&amp;#34;: 1730000000000,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;timeEnd&amp;#34;: 1730003600000
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> }&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Получить релизы сервиса за период:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">curl &lt;span class="s2">&amp;#34;https://&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">PROTO_BACKEND_URL&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">/api/annotations?from=1729000000000&amp;amp;to=1731000000000&amp;amp;tags=release&amp;amp;service=payment_bank&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="справочник-api">Справочник API&lt;/h2>
&lt;p>Базовый путь — &lt;code>/api/annotations&lt;/code>. Время передаётся в миллисекундах эпохи.&lt;/p>
&lt;h3 id="эндпоинты">Эндпоинты&lt;/h3>
&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;code>POST&lt;/code>&lt;/td>
&lt;td>&lt;code>/api/annotations&lt;/code>&lt;/td>
&lt;td>Создать маркер&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>GET&lt;/code>&lt;/td>
&lt;td>&lt;code>/api/annotations&lt;/code>&lt;/td>
&lt;td>Получить список маркеров&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>PUT&lt;/code>&lt;/td>
&lt;td>&lt;code>/api/annotations/{id}&lt;/code>&lt;/td>
&lt;td>Полностью заменить маркер&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>PATCH&lt;/code>&lt;/td>
&lt;td>&lt;code>/api/annotations/{id}&lt;/code>&lt;/td>
&lt;td>Частично обновить маркер&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>DELETE&lt;/code>&lt;/td>
&lt;td>&lt;code>/api/annotations/{id}&lt;/code>&lt;/td>
&lt;td>Удалить маркер&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="поля-запроса-post--put">Поля запроса (&lt;code>POST&lt;/code> / &lt;code>PUT&lt;/code>)&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Поле&lt;/th>
&lt;th style="text-align:center">Обяз.&lt;/th>
&lt;th>Тип&lt;/th>
&lt;th>Описание&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>text&lt;/code>&lt;/td>
&lt;td style="text-align:center">да&lt;/td>
&lt;td>строка&lt;/td>
&lt;td>Описание события (допустима HTML-разметка)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>tags&lt;/code>&lt;/td>
&lt;td style="text-align:center">нет&lt;/td>
&lt;td>массив строк&lt;/td>
&lt;td>Метки для фильтрации&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>time&lt;/code>&lt;/td>
&lt;td style="text-align:center">нет&lt;/td>
&lt;td>число&lt;/td>
&lt;td>Время начала, epoch ms (по умолчанию — текущее)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>timeEnd&lt;/code>&lt;/td>
&lt;td style="text-align:center">нет&lt;/td>
&lt;td>число&lt;/td>
&lt;td>Время окончания, epoch ms; задаёт интервальный маркер&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>service&lt;/code>&lt;/td>
&lt;td style="text-align:center">нет&lt;/td>
&lt;td>строка&lt;/td>
&lt;td>Имя сервиса; пусто — глобальное событие&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>type&lt;/code>&lt;/td>
&lt;td style="text-align:center">нет&lt;/td>
&lt;td>строка&lt;/td>
&lt;td>Тип маркера, например &lt;code>RELEASE&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Поля идентификаторов дашбордов и панелей Grafana (&lt;code>dashboardUID&lt;/code>, &lt;code>panelId&lt;/code>) принимаются, но &lt;strong>игнорируются&lt;/strong>: в Proto Observability Platform маркеры привязываются к сервису, а не к конкретному дашборду.&lt;/p>
&lt;h3 id="получение-и-фильтрация-get">Получение и фильтрация (&lt;code>GET&lt;/code>)&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Параметр&lt;/th>
&lt;th>Описание&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>from&lt;/code>, &lt;code>to&lt;/code>&lt;/td>
&lt;td>Диапазон по времени, epoch ms&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>tags&lt;/code>&lt;/td>
&lt;td>Фильтр по тегам (можно повторять). По умолчанию — совпадение по всем; &lt;code>matchAny=true&lt;/code> — по любому&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>type&lt;/code>&lt;/td>
&lt;td>Фильтр по типу маркера&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>service&lt;/code>&lt;/td>
&lt;td>Сервис; возвращаются как его события, так и глобальные&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>limit&lt;/code>&lt;/td>
&lt;td>Максимум записей (по умолчанию 100)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="совместимость-с-grafana">Совместимость с Grafana&lt;/h2>
&lt;p>API повторяет контракт &lt;a href="https://grafana.com/docs/grafana/latest/developer-resources/api-reference/http-api/annotations/" target="_blank" rel="noopener noreferrer">Grafana Annotations API&lt;/a>: поля &lt;code>text&lt;/code> / &lt;code>tags&lt;/code> / &lt;code>time&lt;/code> / &lt;code>timeEnd&lt;/code>, ответы вида &lt;code>{&amp;quot;id&amp;quot;, &amp;quot;message&amp;quot;}&lt;/code>, возврат списка простым JSON-массивом. Это позволяет переиспользовать привычные инструменты и скрипты записи маркеров. Дополнительно поддержаны расширения Proto — поля &lt;code>service&lt;/code> и &lt;code>type&lt;/code>.&lt;/p>
&lt;h2 id="хранение-и-доступ">Хранение и доступ&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Срок хранения&lt;/strong> по умолчанию — &lt;strong>370 дней&lt;/strong>, настраивается переменной окружения &lt;code>POBP_DATA_RETENTION_ANNOTATIONS_DAYS&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Доступ.&lt;/strong> Эндпоинт не требует аутентификации и рассчитан на вызов из доверенного сетевого контура (CI/CD-пайплайн, внутренние скрипты). Ограничьте к нему доступ средствами сети.&lt;/li>
&lt;/ul>
&lt;p>См. также: &lt;a href="../../alerting/#%d0%b8%d0%bd%d1%82%d0%b5%d0%b3%d1%80%d0%b0%d1%86%d0%b8%d1%8f-%d1%81-cicd">Интеграция с CI/CD&lt;/a> и &lt;a href="../dashboards/">Кастомные дашборды&lt;/a>.&lt;/p></description></item></channel></rss>