レイテンシーやエラーが急増した際、まず確認したいのは何かがリリースされたかどうかです。ダッシュボードの時系列チャートなら、その場で確認できます。リリースマーカーをオンにすると、各タイルに、サービスのバージョンがテレメトリーに初めて現れた時点を示す破線の縦線が表示されます。
バージョン情報は、すでに送信しているテレメトリーから、タイルのログソースに設定された式を通じて取得されます。CIインテグレーションを設定する必要はなく、デプロイ時に何かをプッシュする必要もありません。
リリースマーカーをオンにする
リリースマーカーはデフォルトでオフです。ダッシュボードのオーバーフローメニューを開き、リリースマーカーを表示を選択します。

このトグルにより、ダッシュボードの URL に releaseMarkers=true が追加されます。そのため、共有したリンクを開くと、マーカーはすでにオンになっています。これはダッシュボードの設定ではなく表示状態です。ダッシュボードとともに保存されることはなく、オフにするとパラメータも削除されます。
マーカーは、ログソースまたはトレースソースをソースとする時系列タイルに描画されます。アラートアノテーションも同じメニューから表示でき、同時に表示できます。2 種類のマーカーは一緒に描画され、それぞれのラベルが維持されます。
バージョンの取得元を設定する
デフォルトでは、ClickStack は OpenTelemetry リソース属性 ResourceAttributes['service.version'] を読み取ります。サービスがサービスリソースのセマンティック規約に従っている場合、設定なしでマーカーを使用できます。
別の場所からバージョンを読み取るには、ログまたはトレースソースで Service Version Expression を設定します。Team Settings → Sources でログソースを編集します。ログソースでは、このフィールドは Configure Optional Fields 内にあります。トレースソースでは、フォームの Service Name Expression の下に直接表示されます。
![ログソースの任意フィールドにある Service Version Expression フィールド。デフォルトのプレースホルダー ResourceAttributes['service.version'] が表示されている](/docs/images/clickstack/dashboards/service-version-expression.webp)
この値は属性名ではなく SQL 式であり、よくある次の 2 つのケースに対応できます。
- リリース識別子が別の属性にある場合。 GitOps では、リリースを識別する情報は通常コンテナーイメージのタグであり、
container.image.tagとして送られます。ログソースにResourceAttributes['container.image.tag']を指定する方が、フリート全体のインストルメンテーションを変更するよりも大幅に低コストです。 - 同じテーブル内のサービスで値が一致しない場合。
coalesceを使用して属性をフォールバックします。
coalesce(
nullIf(ResourceAttributes['service.version'], ''),
nullIf(ResourceAttributes['container.image.tag'], '')
)このフィールドは、ログおよびトレースソースの sources API でも serviceVersionExpression として公開されているため、ソースをプログラムでプロビジョニングする際に設定できます。ログおよびトレースのソース設定の完全な一覧を参照してください。
マーカーの意味
マーカーは、表示中のウィンドウ内のタイルデータで、あるバージョン値が初めて現れたことを記録します。これはデプロイメントに近いものですが、意図的に同じ事象を示すものではありません。そのため、これらはデプロイメントマーカーではなくリリースマーカーと呼ばれます。
- バージョン文字列を変更しないデプロイでは、マーカーはまったく生成されません。
- ルックバック期間を超えてアイドル状態だったサービスは、再びスケールアップするとマーカーが描画されます。
ウィンドウを開いた時点ですでに実行されていたバージョンは、実際には発生していないリリースとして描画されないよう、認識して除外されます。そのため、クエリはウィンドウ開始前まで遡り、30 分間、またはそれより長い場合はウィンドウの 10% の期間を対象に、既存のバージョンを特定します。
タイルに表示されるリリース
リリースクエリは、タイル独自のログソースに対し、タイル独自の条件 (WHERE 句、各系列のフィルター、ダッシュボードフィルター) を使用して実行されます。タイルに表示される内容は、何をチャート化しているかによって異なります。
| タイル | マーカー |
|---|---|
| 1つのサービスでフィルタリング | そのサービスのリリース |
| サービスごとにグループ化 | チャート化されたすべてのサービスのリリース。それぞれ対応する線と同じ色で表示されます |
| 複数のサービスにまたがる集計線 | なし。ただし、ウィンドウ内のすべてのリリースが1つのサービスからのものである場合を除く |
3つ目のケースでは、マーカーに対応するサービスの線がチャート上にないため、マーカーは除外されます。ウィンドウ内のすべてのリリースが単一のサービスからのものである場合は、代わりにデフォルトのマーカー色で描画されます。
混み合ったチャートでマーカーを確認する
マーカーのラベルにカーソルを合わせると、その時点にあるすべてのリリースが一覧表示され、各リリースの提供元サービス、バージョン、時刻を確認できます。

色はマーカーとその系列を対応付けますが、チャートの凡例には最大 4 件しか表示されず、残りは "+N more" にまとめられます。その場合、画面上では色を照合できません。ツールチップにはサービス名が直接表示されるため、タイルに表示される系列数にかかわらず確認できます。
個別にラベルを付けるには近すぎるマーカーは、N releases と表示された 1 つのアンカーにまとめられます。カーソルを合わせると、すべてのリリース名が表示されます。複数のサービスにまたがるクラスターは、いずれかのサービスの色ではなく中立色で描画されるため、所有者がいるように見せることなく件数を正確に示せます。
マーカーが表示されている場合でも、プロット上を水平方向にドラッグしてズームできます。
制限事項
- **時系列タイルのみ。**テーブル、数値、ヒートマップにはマーカーを表示できません。
- **ログおよびトレースソースのみ。**メトリクスログソースでは、メトリクスタイプごとにテーブルが特定されるため、再集計対象となる単一のテーブルがなく、タイルのフィルターを意味のある形で適用することもできません。メトリクスデータに注釈を付けるには、同じダッシュボード上にログまたはトレースのタイルを並べて配置してください。
- **空のバージョン値はスキップされます。**バージョンを出力しないサービスはマーカーに反映されません。タイルでバージョンの変更がまったく見つからない場合、ClickStackは機能が壊れているのではないかと迷わせるのではなく、
No releases foundと表示します。 - ウィンドウごとに最大500個の異なるバージョンが読み取られます。