デプロイメントの追跡

Version タグ

version タグは、統合サービスタグ付け内に予約され、インフラストラクチャーメトリクス(ホスト、コンテナ、プロセス、NPM チェック)、トレースメトリクス、トレース、プロファイル、ログに適用されます。

version タグを使用して、ソフトウェアのデプロイメントストラテジーと併せてデプロイメントおよびサービス動作の監視を行うことができます。

まだ version タグをセットアップしていない場合は、統合サービスタグ付けのドキュメントで詳細をご確認ください。

サービス詳細画面での version タグの使用

サービス詳細画面のバージョン

サービス詳細画面で、version タグが使用可能な場合、リクエストウィジェットのスコープを次のいずれかに設定できます。

  • バージョン別の合計リクエスト数、または
  • バージョン別 1 秒あたりのリクエスト数

エラーウィジェットのスコープを次のいずれかに設定できます。

  • バージョンごとの合計エラー数
  • バージョン別 1 秒あたりのエラー数、または
  • バージョン別のエラー率

リクエストおよびエラーのウィジェットは、ダッシュボードとモニターにエクスポートできます。

バージョンタグを使った欠陥のあるデプロイの自動検出

version タグでサービスを構成することで、欠陥のあるデプロイの自動検出が可能になります。

モニターを設定して、潜在的な欠陥のあるすべてのデプロイについて自動的に通知 を受けることができます。これを行うには、New Monitors ページに移動して Events を選択し、モニターを定義する検索クエリに tags:deployment_analysis を含めます。

デプロイ済みのバージョン

version タグで構成されたサービスには、サービス健全性を示すメインのグラフの下のサービス詳細画面にバージョンセクションがあります。バージョンセクションには、選択した時間間隔にアクティブだったサービスのすべてのバージョンが表示されます(上部にはアクティブなサービスが表示)。

デフォルトで、以下が表示されます。

  • タイムフレーム中にこのサービスにデプロイされたバージョン名。

  • このバージョンに対応するトレースが確認された最初および最後の時間。

  • 各バージョンに出現した、直前バージョンでは出現しなかったエラータイプの回数を表示するエラータイプインジケーター。

    注: ここには、前バージョンのトレースでは見られなかったエラーが表示されますが、このバージョンがこのようなエラーを発生させることを意味するものではありません。新しいエラータイプを確認することは、エラー調査を始める良い方法です。

  • 1 秒あたりのリクエスト数。

  • 合計リクエスト数のパーセンテージとしてのエラー率。

この概要テーブルに列を追加またはテーブルから列を削除することができます。選択はすべて保存されます。利用可能な列は以下のとおりです。

  • 前バージョンに存在しなかったバージョンでアクティブなエンドポイント。
  • アクティブな時間。このバージョンで Datadog に送信された最初のトレースから最後のトレースまでの時間を表示。
  • リクエスト総数。
  • エラー総数。
  • p50、p75、p90、p95、p99、または最大で計測されたレイテンシー。
サービス詳細画面のバージョン

注: バージョンセクションは、ページ上部で選択された時間間隔の間に報告するバージョンが 1 つ以上ある場合にのみ表示されます。

デプロイメントの比較

バージョン概要テーブルで任意のバージョンの行をクリックすると、バージョンの比較ページが開き、同じサービスの 2 つのバージョンを比較できます。デフォルトでは、選択したバージョンが直前のバージョンと比較されますが、過去 30 日以内のあらゆる 2 バージョンに変更して比較することが可能です。

バージョンの比較ページでは、以下の情報を確認できます。

比較グラフ

サービス詳細画面のグラフと同様、リクエストおよびエラーのグラフにはデプロイメントのロールアウト概要およびエラー率の急上昇を示します。このページでは、比較のため選択されたバージョンがグラフ上でハイライトされ、コンテキストとして他のすべてのバージョンはグレー表示されます。

デプロイメント比較グラフ

Continuous Profiler が有効な場合、CPU 時間や割り当てメモリなどの主要なパフォーマンスメトリクスの比較を APM リソースごとに表示することもできます。そこから、プロファイル比較ページに移動することができます。

デプロイメントプロファイリング比較グラフ

エラー比較

このセクションには、それぞれの 2 バージョンで検出されたエラータイプの違いが、以下をハイライトしてリストアップされます。

  • ソースバージョンにのみ見られたエラータイプ(トラブルシューティングに役立ちます)
  • ソースバージョンに見られなくなったエラータイプ(修正の有効性の確認に役立ちます)
  • 両方でアクティブなエラータイプ。

このテーブルから、選択したエラーに対応する現在および過去のトレースにピボットして、さらに調査をすることができます。

注: エラー比較は、観察された エラータイプに基づいています。珍しいエラータイプは、まだ 確認されていないという理由だけで、「出現しなくなった」と検出される可能性があります。

エンドポイント比較

このセクションでは、サービスの各エンドポイントのパフォーマンス(リクエスト、レイテンシー、エラー)を比較できます。値別にテーブルをソートして、デプロイ後に最高スループットのエンドポイントが引き続き正常であることを確認したり、パーセンテージの変化でソートして、レイテンシーまたはエラー率における大きな変化を確認したりできます。

エンドポイント比較

デプロイ戦略

Datadog のデプロイ追跡により、以下のデプロイ戦略 (またはその他) の使用時にデプロイされたコードのパフォーマンスを可視化して不良コードのデプロイを検出し、変更の影響を抑え、インシデントにより迅速に対応することができます。

ローリングデプロイ

ローリングデプロイでは、新しいバージョンをホストまたはコンテナに 1 つずつデプロイしながら、トラフィックを他のインスタンスに転送することにより、ダウンタイムをゼロにできます。

Datadog を使用して、ローリングデプロイを監視し、エラーの増加を検出できます。

ローリングデプロイメント

ブルーおよびグリーンデプロイ

ブルーおよびグリーン (または他の色の組み合わせ) デプロイでは、どちらもトラフィックを受け入れる 2 つのサービスのクラスターを実行するか、一方をスタンバイ状態にして、もう一方に問題がある場合にアクティブ化できるようにすることで、ダウンタイムを削減します。

これらのサービスの version タグを設定して表示すると、リクエストとエラーを比較し、クラスターの 1 つが他のクラスターよりもエラー率が高い場合、クラスターが SLO を満たしていない場合、トラフィックを受信することが想定されていないクラスターである場合を検出することができます。

ブルー/グリーンデプロイメント

カナリアデプロイ

カナリアデプロイでは、サービスを限られた数のホストまたは一部の顧客にデプロイして、影響を制限しながら新しいデプロイをテストします。

Datadog 内で version タグを使用すると、カナリアデプロイのエラー率、トレース、サービスの動作を比較できます。

たとえば、次の画像では、カナリアバージョンがデプロイされ、いくつかのエラーがあり、削除されたことがわかります。そのバージョンに対応するトレースは、さらに影響を与えることなく調査に利用できます。

カナリアデプロイメント

シャドウデプロイ

シャドウデプロイでは、リリース候補バージョンが本番バージョンと一緒にデプロイされ、着信トラフィックが両方のサービスに送信されます。ユーザーには本番からの結果のみが表示されますが、両方からデータを収集することができます。

シャドウデプロイを使用すると、実際の本番トラフィックに対して潜在的なリリースをテストできます。シャドウに version タグをタグ付けすると、2 つのバージョン間のエラー率、トレース、サービスの動作を比較して、シャドウバージョンをリリースする必要があるかどうかを判断できます。

Datadog 内での Version タグの使用

version タグは、検索ビューを特定のバージョンにフィルターするか、異なるバージョンのメトリクスを比較するために、Datadog 内の任意の場所で使用できます。

リソースステータス画面

リソースステータス画面のバージョン

リソースステータス画面で、version タグが使用可能な場合、リクエストウィジェットのスコープは次のいずれかに設定できます。

  • バージョンごとの合計リクエスト数
  • バージョンごとの 1 秒あたりのリクエスト数

エラーウィジェットは、version タグを含む 3 つのオプションのいずれかにスコープを設定できます。

  • バージョンごとの合計エラー数
  • バージョンごとの 1 秒あたりのエラー数
  • バージョンごとのエラー率

これらはすべてダッシュボードとモニターにエクスポートできます。

トレース検索と分析

使用可能な場合、version はトレース検索と分析の両方のタグとして使用することで、ライブ検索モードとインデックス化されたトレースをフィルタリングするか、分析クエリをフィルタリングまたはグループ化することができます。

version タグでのフィルタリングを含む分析は、ダッシュボードとモニターにエクスポートできます。

バージョン別プロファイル

特定のバージョンに対応するプロファイルを検索できます。デプロイメント比較 ページ右上の View Profiles をクリックして、比較しているバージョンのいずれかにスコープした継続的プロファイラーを開くことも可能です。

バージョン別にプロファイルをフィルター

デプロイメント間の時間メトリクス

サービスの新しいデプロイが検出されるたびに、Deployment Tracking は time_between_deployments メトリクスの値を計算し、新しいデプロイとその前の最新バージョンのデプロイの間の秒数として計算されます。

メトリクス定義

datadog.service.time_between_deployments{env, service, second_primary_tag}
前提条件: このメトリクスは、統合サービスタグ付けによってバージョンタグ付けが有効になっているすべての APM サービスに存在します。
説明: サービスのデプロイメントと、それ以前の最新バージョンのデプロイメントとの間の経過時間 (秒)。
メトリクスタイプ: ディストリビューション
タグ: メトリクスには、サービスの envservice、および 2 番目のプライマリタグがタグ付けされます。

もし、バージョン A を time = 0 で、バージョン B を time = 10 でデプロイするサービスがあれば、datadog.service.time_between_deployments のメトリクス値は 10 になります。

Time = 0
{service: foo, env: prod, cluster-name: dev-shopist, version: A}
Time = 10
{service: foo, env: prod, cluster_name: dev-shopist, version: B}
デプロイメント間の時間
datadog.service.time_between_deployments{env: prod, cluster_name: dev-shopist} = 10

クラスター dev-shopist に time = 20 でバージョン X を、クラスター us-staging に time = 30 でバージョン Y を、クラスター dev-shopist に time = 45 で再びバージョン Y をデプロイすると、任意のクラスターにおけるメトリクス datadog.service.time_between_deploymentsmax 値は 25 (最新の Y から最後の X を引いた時間) になります。

Time = 20
{service: foo, env: staging, cluster-name: dev-shopist, version: X}
Time = 30
{service: foo, env: staging, cluster-name: us-staging, version: Y}
Time = 45
{service: foo, env: dev-shopist, cluster-name: us-staging, version: Y}
デプロイメント間の最大時間:
max:datadog.service.time_between_deployments{env: staging, cluster-name: *} = 25

その他の参考資料