mcpField
D
dt-migration

dt-migration

github.com/dynatraceデータ・データベース1692.4k 回インストール今日更新
リポジトリ

dt-migration について

Dynatrace classic および Gen2 のエンティティベース DQL クエリを Smartscape 向けに移行するスキルです。クエリ分類、エンティティマッピング、特殊ケースを扱い、アセットレベルの移行は対象外です。

主な機能

  1. 01移行シナリオの分類
  2. 02classic エンティティと Smartscape の対応付け
  3. 03関係と DQL 構文の書き換え
  4. 04未対応エンティティと ID 前提の確認
  5. 05エンティティ別リファレンスの提供

活用シーン

  1. 01単独のエンティティ一覧クエリの移行
  2. 02大量データクエリ内のエンティティ条件の変換
  3. 03classic の関係トラバーサルの書き換え

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dynatrace/dynatrace-for-ai --skill dt-migration

インストール後、Claude Code で/dt-migrationを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
auto-tagging-field-mapping.md
dql-function-migration.md
entity-cloud-application.md
entity-container.md
entity-host.md
entity-kubernetes.md
entity-process.md
entity-selector-predicates.md
entity-service.md
examples.md
mass-data-filtering-strategy.md
migration-workflow.md
quick-reference.md
README.md
relationship-mappings.md
special-cases.md
type-mappings.md

詳細

Smartscape 移行スキル

このスキルでは、Dynatrace のクラシックおよび Gen2 のエンティティベースの DQL クエリとクエリパターンを、Smartscape ベースの同等のものに移行します。

最終的な DQL を記述する前に dt-dql-essentials スキルを読み込み、変換後のクエリが現在の DQL 構文規則にも従うようにしてください。

このスキルでは、Smartscape を中心とした DQL の移行のみを扱います。アセットレベルの移行ワークフローは対象外です。

クエリの目的の分類

まずここから始めてください。 適切な移行戦略は、クエリで使用されているクラシック構文だけでなく、クエリが実際に何をしようとしているかによって決まります。

状況は次の 3 つに分類されます。

#状況クラシックなアンチパターン移行戦略
1エンティティ条件でフィルタリングする大量データクエリ時系列、ログ、またはメトリクスのクエリの filter: 内に classicEntitySelector(...) をインラインで記述するまずエンティティ条件を生データのディメンションに解決します。Smartscape はフォールバックであり、デフォルトの選択肢ではありません。
2フィルタリングにエンティティサブクエリを使用する大量データクエリ外側の大量データクエリをフィルタリングするために、in [...]、lookup [...]、または join [...] 内で fetch dt.entity.* を使用する同じくディメンションを優先する戦略を使います。生データのディメンションフィルター、または in [smartscapeNodes ...] サブクエリに書き換えます。
3エンティティリストのみを取得するクエリfetch dt.entity.* を単独で、または主な結果ソースとして使用する有効な方法は smartscapeNodes のみです。生データのディメンションを使う方法はありません。

判断基準:

  • 状況 1 または 2 — references/mass-data-filtering-strategy.md を読み込み、フィールドの検出(ステップ 2)と同等性の検証(ステップ 4)を含むすべての手順を完了してください。fieldsSnapshot のゲートを省略しないでください。ゲートによって、どの方法が実行可能かが決まります。Smartscape サブクエリを完成させるためにエンティティタイプのマッピングまたはリレーションのたどり方が必要な場合に限り、以下の移行ワークフローにフォールバックしてください。
  • 状況 3 — 以下の移行ワークフローとエンティティマッピングテーブルに進んでください。

注:状況 3 には、classicEntitySelector を使って fetch dt.entity.* が返すエンティティをフィルタリングするサブケースがあります。これはまれなケースで、同じ smartscapeNodes の方法に従います。references/mass-data-filtering-strategy.md のステップ 1B でセレクター条件を解決し、smartscapeNodes のノードフィルターとして適用してください。

移行ワークフロー

状況 3(エンティティリストのみを取得するクエリ)と、状況 1 および 2 で Smartscape サブクエリを作成する際は、次の順序に従ってください。

  1. クラシックな入力パターンを特定します。
    • fetch dt.entity.*
    • classicEntitySelector(...)
    • belongs_to[...]、runs[...]、instance_of[...] などのリレーションフィールドへのアクセス
    • dt.entity.* を使用するシグナルまたはイベントのクエリ
  2. 関連するクラシックのエンティティタイプを特定します。
  3. 以下のコアエンティティマッピングテーブルで、Smartscape の置き換え先を確認します。
  4. 明示的な移行が必要なクラシック DQL 構文を確認します。
  5. Smartscape の基本要素を使ってクエリを書き換えます。
    • smartscapeNodes
    • smartscapeEdges
    • traverse
    • references
    • getNodeName()
    • getNodeField()
  6. 特殊なケース、サポートされていないエンティティ、または ID に関する前提を確認します。
  7. エンティティファミリーまたは移行パターンに対応する詳細なリファレンスを読み込みます。

移行プロセス全体と出力に関する要件については、references/migration-workflow.md を読み込んでください。

コアエンティティのマッピング表

一般的な移行では、まずこの簡潔な表を使用してください。マッピングの全一覧については、references/type-mappings.md を読み込んでください。

Classic / Gen2 エンティティSmartscape フィールドSmartscape ノードタイプ備考
dt.entity.hostdt.smartscape.hostHOST標準的なホストのマッピング
dt.entity.servicedt.smartscape.serviceSERVICE標準的なサービスのマッピング
dt.entity.process_group_instancedt.smartscape.processPROCESSプロセスインスタンスは直接マッピングされます
dt.entity.container_group_instancedt.smartscape.containerCONTAINERコンテナグループインスタンスは直接マッピングされます
dt.entity.kubernetes_clusterdt.smartscape.k8s_clusterK8S_CLUSTERKubernetes クラスター
dt.entity.kubernetes_nodedt.smartscape.k8s_nodeK8S_NODEKubernetes ノード
dt.entity.kubernetes_servicedt.smartscape.k8s_serviceK8S_SERVICEKubernetes サービス
dt.entity.cloud_application複数のワークロードフィールド複数の K8S ワークロードノードタイプ複数のワークロードタイプにマッピングされます。cloud-application guide を読み込んでください
dt.entity.cloud_application_instancedt.smartscape.k8s_podK8S_PODClassic のクラウドアプリケーションインスタンスはポッドになります
dt.entity.cloud_application_namespacedt.smartscape.k8s_namespaceK8S_NAMESPACE名前空間のマッピング
dt.entity.applicationdt.smartscape.frontendFRONTENDフロントエンドアプリケーションのマッピング
dt.entity.aws_lambda_functiondt.smartscape.aws.lambda_functionAWS_LAMBDA_FUNCTIONクラウド関数エンティティのマッピング

移行時に確認する DQL 構文

次の Classic 構文は、通常、明示的な書き換えが必要です。

Classic 構文一般的な Smartscape での置き換え備考
entityName(x)name または getNodeName(x)ノードを直接クエリする場合は、name を優先してください
entityAttr(x, "...")ノードの直接フィールドまたは getNodeField(x, "...")使用可能な場合は直接フィールドを優先してください
classicEntitySelector(...)ノードフィルターと traverse制約された側から開始してください。大量データクエリについては、まず mass-data-filtering-strategy.md を参照してください
シグナルクエリ内の dt.entity.*dt.smartscape.*by、filter、fieldsAdd、expand および関連する句に適用されます
belongs_to[...]、runs[...]、instance_of[...]traverse または references[...]references は静的エッジにのみ使用できます
Classic エンティティ ID フィルターSmartscape の idClassic ID をそのまま再利用しないでください
affected_entity_ids と affected_entity_typessmartscape.affected_entities2 つの並列配列は 1 つのレコード配列に置き換わります。各レコードには id、type、name があります

関数ごとの詳細なガイドについては、references/dql-function-migration.md を読み込んでください。

特殊なケース

次のパターンをそのまま置き換えないでください。

  • ホストグループ — 独立した Smartscape エンティティはありません。HOST のフィールドを使用してください
  • プロセスグループ — 独立した Smartscape エンティティはありません。PROCESS のフィールドを使用してください
  • コンテナグループ — 独立した Smartscape エンティティはありません。必要に応じてプレースホルダーを使用し、出力形式を維持してください
  • Classic ID — Classic エンティティ ID は Smartscape に自動的に引き継がれません
  • 計画済み、未対応、または計画されていないマッピング — 直接対応していると判断する前に、マッピングの全一覧を確認してください

これらのパターンを移行する前に、references/special-cases.md を読み込んでください。

エンティティに焦点を当てたガイド

特定のエンティティファミリーを中心に移行する場合は、対応する詳細ガイドを読み込んでください。

各ガイドでは、次の内容を説明しています。

  • 従来のエンティティが表していたもの
  • Smartscape での置き換え先
  • 通常変更されるフィールド
  • リレーションシップの移行方法
  • よくある例と落とし穴

リファレンス

コメント