> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Маркеры релизов на графиках панели мониторинга

> Отображайте на временных графиках панели мониторинга момент первого появления каждой версии сервиса на основе выражения версии сервиса, настроенного в источнике плитки

export const Image = ({img, alt, size = "lg", background}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  const backgroundColor = background === "white" ? "white" : background === "black" ? "rgb(31 31 28)" : undefined;
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} style={{
    backgroundColor
  }} />
      </Frame>
    </div>;
};

Первый вопрос при всплеске задержек или ошибок обычно — не был ли развернут новый релиз. Временные графики на панели мониторинга позволяют сразу получить ответ: включите маркеры релизов, и на каждой плитке появится пунктирная вертикальная линия в момент первого появления версии сервиса в его телеметрии.

Сведения о версиях берутся из уже отправляемой телеметрии с помощью выражения в источнике плитки. Не нужно настраивать интеграцию с CI или отправлять что-либо при развертывании.

<div id="turn-on">
  ## Включение маркеров
</div>

По умолчанию маркеры релизов отключены. Откройте меню дополнительных действий панели мониторинга и выберите **Показать маркеры релизов**.

<Image img="https://mintcdn.com/private-7c7dfe99/-i0voiP_5BwPYqYV/images/clickstack/dashboards/release-markers-menu.webp?fit=max&auto=format&n=-i0voiP_5BwPYqYV&q=85&s=15de1ec95ed1c9658230890fc2640055" alt="Меню дополнительных действий панели мониторинга с пунктом «Показать маркеры релизов» в разделе «Вид», под пунктом «Показать аннотации оповещений»" size="sm" width="540" height="600" data-path="images/clickstack/dashboards/release-markers-menu.webp" />

Переключатель добавляет `releaseMarkers=true` в URL панели мониторинга, поэтому ссылка, которой вы делитесь, откроется с уже включёнными маркерами. Это состояние представления, а не конфигурация панели мониторинга: оно не сохраняется вместе с панелью мониторинга, а при отключении маркеров параметр снова удаляется.

Маркеры отображаются на плитках временных рядов, источником которых являются логи или трассировки. [Аннотации оповещений](/docs/ru/clickstack/features/alerts) доступны в том же меню и могут отображаться одновременно — оба набора маркеров отображаются вместе, и каждый сохраняет собственные метки.

<div id="version-expression">
  ## Настройка источника версии
</div>

По умолчанию ClickStack считывает `ResourceAttributes['service.version']` — атрибут ресурса OpenTelemetry. Если ваши сервисы соответствуют [семантическим соглашениям для ресурсов сервисов](https://opentelemetry.io/docs/specs/semconv/registry/attributes/service/), маркеры работают без дополнительной настройки.

Чтобы считывать версию из другого источника, задайте **Service Version Expression** для источника логов или трассировок. Отредактируйте источник в разделе **Team Settings → Sources**. Для источника логов это поле доступно в **Configure Optional Fields**; для источника трассировок оно отображается непосредственно в форме, под **Service Name Expression**.

<Image img="https://mintcdn.com/private-7c7dfe99/-i0voiP_5BwPYqYV/images/clickstack/dashboards/service-version-expression.webp?fit=max&auto=format&n=-i0voiP_5BwPYqYV&q=85&s=4ea311f6c8f17a0f717a2355aab18246" alt="Поле Service Version Expression среди необязательных полей источника логов с заполнителем по умолчанию ResourceAttributes['service.version']" size="lg" width="1540" height="290" data-path="images/clickstack/dashboards/service-version-expression.webp" />

Значение — это SQL-выражение, а не имя атрибута, что позволяет охватить два распространённых случая:

* **Идентификатор релиза хранится в другом атрибуте.** При использовании GitOps идентификатором релиза обычно служит тег образа контейнера, передаваемый как `container.image.tag`. Указать для источника `ResourceAttributes['container.image.tag']` значительно проще, чем менять инструментацию во всех сервисах.
* **Сервисы в одной таблице используют разные атрибуты.** Используйте `coalesce` для резервного перехода между атрибутами:

```sql theme={null}
coalesce(
  nullIf(ResourceAttributes['service.version'], ''),
  nullIf(ResourceAttributes['container.image.tag'], '')
)
```

Это поле также доступно как `serviceVersionExpression` для источников журналов и трассировок в [API источников](/docs/ru/clickstack/api-reference), поэтому его можно задать при программном создании источников. Полный список настроек источников для [журналов](/docs/ru/clickstack/managing/config#logs) и [трассировок](/docs/ru/clickstack/managing/config#traces).

<div id="what-a-marker-means">
  ## Что означает маркер
</div>

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

* Развертывание, не изменяющее строку версии, вообще не создаёт маркер.
* Если сервис бездействует дольше периода ретроспективного просмотра, при последующем масштабировании вверх появляется маркер.

Версия, которая уже работала на момент открытия окна, определяется и исключается, а не отображается как релиз, которого на самом деле не было. Для этого запрос просматривает данные до начала окна — на 30 минут или на 10 % длительности окна, если этот интервал больше, — чтобы найти исходную версию.

<div id="scoping">
  ## Какие релизы показывает плитка
</div>

Запрос релизов выполняется для источника самой плитки с её собственными предикатами: предложением `WHERE`, фильтром каждой серии и любыми [фильтрами панели мониторинга](/docs/ru/clickstack/features/dashboards/overview#custom-filters). Набор отображаемых релизов зависит от того, что показывает плитка:

| Плитка                                      | Маркеры                                                                                                |
| :------------------------------------------ | :----------------------------------------------------------------------------------------------------- |
| Отфильтрована по одному сервису             | Релизы этого сервиса                                                                                   |
| Сгруппирована по сервису                    | Релизы каждого сервиса, представленного на графике; каждый маркер окрашен в цвет соответствующей линии |
| Агрегированная линия по нескольким сервисам | Нет, если только все релизы в окне не относятся к одному сервису                                       |

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

<div id="reading-markers">
  ## Маркеры релизов на насыщенном графике
</div>

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

<Image img="https://mintcdn.com/private-7c7dfe99/-i0voiP_5BwPYqYV/images/clickstack/dashboards/release-marker-tooltip.webp?fit=max&auto=format&n=-i0voiP_5BwPYqYV&q=85&s=665c133349841df4ce7fc61b6ac68597" alt="Всплывающая подсказка при наведении на маркер релиза с указанием сервиса frontend, версии 2.0.2 и времени первого появления этой версии на графике двух сервисов" size="sm" width="826" height="854" data-path="images/clickstack/dashboards/release-marker-tooltip.webp" />

Цвет связывает маркер с его серией, но в легенде графика отображается не более четырёх записей, а остальные скрываются за «+N ещё». В этом случае на экране уже не с чем сопоставить цвет. В подсказке сервис указан напрямую, поэтому она работает независимо от количества серий на графике плитки.

Маркеры, расположенные слишком близко друг к другу, чтобы подписать их по отдельности, объединяются в одну точку с подписью `N релизов`; при наведении перечисляются все релизы. Кластер, охватывающий несколько сервисов, отображается нейтральным цветом, а не цветом одного из них, поэтому количество остаётся точным и не создаёт впечатления, что у него есть владелец.

Горизонтальное перетаскивание по графику по-прежнему позволяет масштабировать его при отображении маркеров.

<div id="limitations">
  ## Ограничения
</div>

* **Только плитки с временными рядами.** Таблицы, числовые показатели и тепловые карты не отображают маркеры.
* **Только источники логов и трассировок.** Для источника метрик таблица определяется отдельно для каждого типа метрик, поэтому нет единой таблицы для повторной агрегации и возможности осмысленно применить к ней фильтры плитки. Чтобы аннотировать данные метрик, разместите на той же панели мониторинга рядом плитку логов или трассировок.
* **Пустые значения версии пропускаются.** Сервис, не передающий сведения о версии, не добавляет маркеров. Если плитка вообще не обнаруживает изменений версий, ClickStack сообщает `No releases found`, чтобы не возникало сомнений, работает ли эта возможность.
* **До 500 различных версий** считываются для каждого окна.
