Docs » Splunk Distribution of the OpenTelemetry Collector の利用開始 » SignalFx Smart Agent から Splunk Distribution of OpenTelemetry Collector への移行 » マッピングサービスと移行影響レポート

マッピングサービスと移行影響レポート 🔗

マッピングサービスにより、既存のダッシュボード、チャート、ディテクターのフォームやコンテンツを大幅に中断することなく、Smart Agent から OpenTelemetry のデプロイメントに移行することができます。Collector がバックグラウンドで使用する構文にcollectd (Smart Agent)の規約を自動的に変換します。

マッピングは複数のオブザーバー、デプロイメントタイプ、メタデータの種類をサポートします。

マッピングサービスはどのように機能するでしょうか? 🔗

マッピングサービスは、従来のSignalFx Smart Agentのメトリクスの命名と意味上の規約と、OpenTelemetryの名前とフォーマットの間の等価性を定義する移行ツールです:

  • これは、メトリクススとメトリクスス時系列(MTS)、ディメンション、およびプロパティに適用されます。

  • マッピング・ロジックは、バージョンを追跡することなく、メトリクスまたはプロパティの名前のいずれかを、OpenTelemetryの同じメトリクスまたはプロパティを参照しているものとして扱います。

たとえば、KubernetesポッドのCPU使用率を追跡する場合、アナリティクスでは kubernetes.container_cpu_limit の値を使用できます。この場合、マッピングサービスは既存のクエリを更新し、OR句で結合されたレガシー・セマンティクスと新しいセマンティクス( k8s.container.cpu_limit など)の両方を含めます。

移行影響レポートを入手する 🔗

OpenTelemetry移行影響レポート では、Smart AgentからOpenTelemetryへの移行が、以下のダッシュボード、チャート、ディテクターの変数や保存されたフィルターの一部にどのような影響を与えるかを説明しています。

移行の影響レポートは、コンテンツのサブセットがSmart Agent の名前を持つ関数を呼び出す場所を教えてくれるので、手作業またはプログラムでコンテンツを更新して、オープンテレメトリへの移行を完了できます。

移行影響レポートにアクセスする 🔗

移行影響レポートにアクセスするには、以下の手順に従ってください:

  1. Splunk Observability Cloud にログインします。

  2. ナビゲーションメニューから 設定 を選択し、サブスクリプションの使用状況 を選択します。

  3. Infrastructure Monitoring タブの 使用状況レポート リンクを選択します。

  4. 詳細な使用状況レポートを見る に移動します。

  5. OpenTelemetry Migration タブを選択します。

  6. カンマ区切りの値ファイルとしてレポートを開くには、ダウンロード を選択します。

変換で更新フラグが立つもの 🔗

このレポートは計算環境に特化したものです。以下の項目にフラグを立て、プロット、フィルターー、関数のコレクションのどこにそれらを見つけ、更新するかを指示します:

  • ワイルドカード

  • Smart Agent のメトリクスへの直接参照

  • Smart Agent のディメンションを使用するフィルター

  • Smart Agent のディメンションを使用する集計

移行影響レポートは、OpenTelemetryがサポートしていないワイルドカードを除く、どのOpenTelemetryメトリクスとディメンションが、特定のSmart Agentメトリクスとディメンションの代替としてうまく機能するかも示しています。

移行影響レポートを解釈する 🔗

OpenTelemetry 移行の影響レポートは、オープンテレメトリへの移行に伴うコンポーネント名の変更の範囲を要約します。データセットを評価し、現在メトリクス、ディメンション、プロパティ、タグ名として使用されているトークンをリストアップし、新旧の等価グループ間で競合が発生する可能性のある移行ルールをハイライトします。

このレポートでは、旧 MTS から新 MTS への移行がディテクターをいつトリガーするのか、またそれがどのディテクターなのかを説明しています。たとえば、集約されていない MTS で動作しているハートビートディテクターは設計の影響を受けますが、ハートビートディテクターが OTel への移行後も継続するディメンションで動作している場合は、マッピングサービスによって継続性が確保されるため、そのディテクターを再起動する必要はありません。

移行影響レポートでは、3つのカテゴリーにわたって移行の影響を評価しています:

  • データオブジェクトタイプ

  • チームの責任

  • 移行緩和のために取るべき措置

予期せぬ結果を避ける 🔗

マッピングサービスは、フィルターリングやグループ化で OpenTelemetry Collector の慣例に準拠するために名前の変更が必要な場合にのみ既存の MTS の名前を変更するため、マッピングされた MTS をマッピングされていない MTS と相関させると、異なるデータセット間の相関で予期せぬ結果が生じます。これは、たとえば、MTS がそれ自身のタイムシフトまたは変換されたバージョンと相関しようとした場合に発生する可能性があります。

異なるエージェントを使用する数式からチャートやディテクターを構築した場合、期待するアラートは得られません。

この問題を解決するには、ディメンションで明示的にフィルターまたはグループ化し、マッピングサービスがジョブ内のすべてのMTSのフィールド名をフィルターまたはグループ化で指定した名前に一致するように変更します。

データ・オブジェクト・タイプ情報 🔗

移行影響レポートは、以下のオブジェクトタイプに対する組織内の移行影響を説明します:

  • ダッシュボード

  • チャート

  • ディテクター

レポートには、各タイプのオブジェクトの数が表示され、影響を受けるオブジェクトの場所を示す表が含まれます。レポートを読むと、たとえば、特定のダッシュボード上またはダッシュボード グループ内の影響を受けるすべてのチャートのリストを見ることができます。

チーム情報 🔗

移行影響レポートは、データセットから利害関係者に関する情報を抽出します。つまり、オブジェクト・タイプを作成した人、またはオブジェクト・タイプの変更によって影響を受ける人(たとえば、重大な警告条件によってディテクターが作動した場合に通知される従業員の電子メール・リストに登録されているため)を意味します。

該当する場合、レポートには特定のディテクターにリンクされているチーム名が表示されます。レポートはまた、特定のダッシュボード・グループにリンクされている人またはチームを識別します。

移行緩和ステップ 🔗

移行の影響レポートでは、その中で強調されているコンテンツに移行がどのような影響を及ぼすかを説明しているため、必要に応じてそのコンテンツを修正し、よりスムーズな移行を実現することができます。

修正が必要なフラグ項目は以下の通り(レポートに記載):

  • プロット、フィルター、関数で使用されるワイルドカード。

  • Smart Agent のメトリクスへの直接参照。

  • Smart Agent のディメンションを使用するフィルター。

  • Smart Agent のディメンションを使用する集計。

移行の影響レポートでは、従来の構文や規約を使用しているために改訂が必要な項目が強調表示されますが、それらの項目と、その代替として使用できる OTel ベースのメトリクスおよびディメンションとのペアも表示されます。

相反するセマンティクス 🔗

互いにマッピング可能な2つ以上のメトリクスを出力すると、システムはそれらを区別できず、アラートの重複や結果のディメンションの不一致など、さまざまな副作用を引き起こす可能性があります。

次のようなことも起こり得ます:

  • Smart AgentとOpenTelemetry Collectorの両方が同じホスト上で動作している場合。

  • hosthost.name のように、同じメトリクスに2つの等価なディメンションが含まれる場合。マッピングのため、移行中はOpenTelemetryセマンティクスかレガシーセマンティクスのみを提供することが期待されます。

インジェストされたデータのセマンティクスの衝突は、MTS ごとにのみ適用されます。つまり、OpenTelemetry メトリクスをホスト A から送信し、レガシー・メトリクスをホスト B から送信できます。また、container_fs_usage_bytesk8s.container.name は異なる MTS になるため、同じホストから送信できます。

The same rule applies to querying in charts and detectors, where you are expected to only query by the OpenTelemetry semantics or by legacy semantics within the same data() invocation, regardless of the metrics you’re querying are aligned with legacy or OpenTelemetry semantics. In this situation Splunk Observability Cloud might produce duplicated MTSs from non-duplicated ingested data. For example, this might happen if you write a query such as data("container.image.name", filter=(filter("host", "<host-id>") OR filter("host.name", "<host-id>"))).

OpenTelemetryの値とレガシーに相当する値 🔗

OpenTelemetryの値と、それに相当するレガシーの値については、以下の表を参照してください:

レガシー・セマンティクス

OpenTelemetryのセマンティクス

container_fs_usage_bytes (メトリクス)

container.filesystem.usage (メトリクス)

container_id (ディメンション)

container.id (ディメンション)

container_image (ディメンション)

container.image.name (ディメンション)

container_memory_available_bytes (メトリクス)

container.memory.available (メトリクス)

container_memory_major_page_faults (メトリクス)

container.memory.major_page_faults (メトリクス)

container_memory_page_faults (メトリクス)

container.memory.page_faults (メトリクス)

container_memory_rss_bytes (メトリクス)

container.memory.rss (メトリクス)

container_memory_usage_bytes (メトリクス)

container.memory.usage (メトリクス)

container_memory_working_set_bytes (メトリクス)

container.memory.working_set (メトリクス)

container_name (ディメンション)

container.name (ディメンション)

container_spec_name (ディメンション)

k8s.container.name (ディメンション)

container_status_reason (プロパティ)

container.status.reason (プロパティ)

container_status (プロパティ)

container.status (プロパティ)

cronJob_uid (プロパティ)

k8s.cronjob.uid (プロパティ)

cronJob (プロパティ)

k8s.cronjob.name (プロパティ)

daemonSet_uid (プロパティ)

k8s.daemonset.uid (プロパティ)

daemonSet (プロパティ)

k8s.daemonset.name (プロパティ)

deployment_uid (プロパティ)

k8s.deployment.uid (プロパティ)

deployment (プロパティ)

k8s.deployment.name (プロパティ)

df_complex.free (メトリクス)

system.filesystem.usage (メトリクス)とディメンション名

statefree に等しい

df_complex.reserved (メトリクス)

system.filesystem.usage (メトリクス)とディメンション名

statereserved に等しい

df_complex.used (メトリクス)

system.filesystem.usage (メトリクス)とディメンション名

stateused に等しい

df_inodes.free (メトリクス)

system.filesystem.inodes.usage (メトリクス)とディメンション名

statefree に等しい

df_inodes.used (メトリクス)

system.filesystem.inodes.usage (メトリクス)とディメンション名

stateused に等しい

disk_merged.read (メトリクス)

system.disk.merged (メトリクス)とディメンション名

directionread と等しくし、次のディメンションの名称を変更: device から disk

disk_merged.write (メトリクス)

system.disk.merged (メトリクス)とディメンション名

directionwrite と等しくし、次のディメンションの名称を変更: device から disk

disk_octets.read (メトリクス)

system.disk.io (メトリクス)とディメンション名 direction

read と等しくし、次のディメンションの名称を変更: device から disk

disk_octets.write (メトリクス)

system.disk.io (メトリクス)とディメンション名 direction

write と等しくし、次のディメンションの名称を変更: device から disk

disk_ops.read (メトリクス)

system.disk.operations (メトリクス)とディメンション名

directionread と等しくし、次のディメンションの名称を変更: device から disk

disk_ops.write (メトリクス)

system.disk.operations (メトリクス)とディメンション名

directionwrite と等しくし、次のディメンションの名称を変更: device から disk

disk_time.read (メトリクス)

system.disk.time (メトリクス)とディメンション名 direction

read と等しくし、次のディメンションの名称を変更: device から disk

disk_time.write (メトリクス)

system.disk.time (メトリクス)とディメンション名 direction

write と等しくし、次のディメンションの名称を変更: device から disk

host (ディメンション)

host.name (ディメンション)

if_dropped.rx (メトリクス)

system.network.dropped (メトリクス)とディメンション名

directionreceive と等しくし、次のディメンションの名称を変更: device から interface

if_dropped.tx (メトリクス)

system.network.dropped (メトリクス)とディメンション名

directiontransmit と等しくし、次のディメンションの名称を変更: device から interface

if_errors.rx (メトリクス)

system.network.errors (メトリクス)とディメンション名

directionreceive と等しくし、次のディメンションの名称を変更: device から interface

if_errors.tx (メトリクス)

system.network.errors (メトリクス)とディメンション名

directiontransmit と等しくし、次のディメンションの名称を変更: device から interface

if_octets.rx (メトリクス)

system.network.io (メトリクス)とディメンション名 direction

receive と等しくし、次のディメンションの名称を変更: device から interface

if_octets.tx (メトリクス)

system.network.io (メトリクス)とディメンション名 direction

transmit と等しくし、次のディメンションの名称を変更: device から interface

if_packets.rx (メトリクス)

system.network.packets (メトリクス)とディメンション名

directionreceive と等しくし、次のディメンションの名称を変更: device から interface

if_packets.tx (メトリクス)

system.network.packets (メトリクス)とディメンション名

directiontransmit と等しくし、次のディメンションの名称を変更: device から interface

job_uid (プロパティ)

k8s.job.uid (プロパティ)

job (プロパティ)

k8s.job.name (プロパティ)

kubernetes.container_cpu_limit (メトリクス)

k8s.container.cpu_limit (メトリクス)

kubernetes.container_cpu_request (メトリクス)

k8s.container.cpu_request (メトリクス)

kubernetes.container_ephemeral_storage_limit (メトリクス)

k8s.container.ephemeral-storage_limit (メトリクス)

kubernetes.container_ephemeral_storage_request (メトリクス)

k8s.container.ephemeral-storage_request (メトリクス)

kubernetes.container_memory_limit (メトリクス)

k8s.container.memory_limit (メトリクス)

kubernetes.container_memory_request (メトリクス)

k8s.container.memory_request (メトリクス)

kubernetes.container_ready (メトリクス)

k8s.container.ready (メトリクス)

kubernetes.container_restart_count (メトリクス)

k8s.container.restarts (メトリクス)

kubernetes.cronjob.active (メトリクス)

k8s.cronjob.active_jobs (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.cronjob.name から kubernetes_namek8s.cronjob.uid から kubernetes_uid

kubernetes.daemon_set.current_scheduled (メトリクス)

k8s.daemonset.current_scheduled_nodes (メトリクス)および

ディメンションの名前が変更されました: k8s.daemonset.name から kubernetes_namek8s.daemonset.uid から kubernetes_uid

kubernetes.daemon_set.desired_scheduled (メトリクス)

k8s.daemonset.desired_scheduled_nodes (メトリクス)および

ディメンションの名前が変更されました: k8s.daemonset.name から kubernetes_namek8s.daemonset.uid から kubernetes_uid

kubernetes.daemon_set.misscheduled (メトリクス)

k8s.daemonset.misscheduled_nodes (メトリクス)および

ディメンションの名前が変更されました: k8s.daemonset.name から kubernetes_namek8s.daemonset.uid から kubernetes_uid

kubernetes.daemon_set.ready (メトリクス)

k8s.daemonset.ready_nodes (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.daemonset.name から kubernetes_namek8s.daemonset.uid から kubernetes_uid

kubernetes.deployment.available (メトリクス)

k8s.deployment.available (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.deployment.name から kubernetes_namek8s.deployment.uid から kubernetes_uid

kubernetes.deployment.desired (メトリクス)

k8s.deployment.desired (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.deployment.name から kubernetes_namek8s.deployment.uid から kubernetes_uid

kubernetes.hpa.spec.max_replicas (メトリクス)

k8s.hpa.max_replicas (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.hpa.name から kubernetes_namek8s.hpa.uid から kubernetes_uid

kubernetes.hpa.spec.min_replicas (メトリクス)

k8s.hpa.min_replicas (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.hpa.name から kubernetes_namek8s.hpa.uid から kubernetes_uid

kubernetes.hpa.status.current_replicas (メトリクス)

k8s.hpa.current_replicas (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.hpa.name から kubernetes_namek8s.hpa.uid から kubernetes_uid

kubernetes.hpa.status.desired_replicas (メトリクス)

k8s.hpa.desired_replicas (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.hpa.name から kubernetes_namek8s.hpa.uid から kubernetes_uid

kubernetes.job.active (メトリクス)

k8s.job.active_pods (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.job.name から kubernetes_namek8s.job.uid から kubernetes_uid

kubernetes.job.completions (メトリクス)

k8s.job.desired_successful_pods (メトリクス)および

ディメンションの名前が変更されました: k8s.job.name から kubernetes_namek8s.job.uid から kubernetes_uid

kubernetes.job.failed (メトリクス)

k8s.job.failed_pods (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.job.name から kubernetes_namek8s.job.uid から kubernetes_uid

kubernetes.job.parallelism (メトリクス)

k8s.job.max_parallel_pods (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.job.name から kubernetes_namek8s.job.uid から kubernetes_uid

kubernetes.job.succeeded (メトリクス)

k8s.job.successful_pods (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.job.name から kubernetes_namek8s.job.uid から kubernetes_uid

kubernetes.namespace_phase (メトリクス)

k8s.namespace.phase (メトリクス)

kubernetes.node_memory_pressure (メトリクス)

k8s.node.condition_memory_pressure (メトリクス)

kubernetes.node_network_unavailable (メトリクス)

k8s.node.condition_network_unavailable (メトリクス)

kubernetes.node_out_of_disk (メトリクス)

k8s.node.condition_out_of_disk (メトリクス)

kubernetes.node_p_i_d_pressure (メトリクス)

k8s.node.condition_p_i_d_pressure (メトリクス)

kubernetes.node_ready (メトリクス)

k8s.node.condition_ready (メトリクス)

kubernetes.pod_phase (メトリクス)

k8s.pod.phase (メトリクス)

kubernetes.replica_set.available (メトリクス)

k8s.replicaset.available (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.replicaset.name から kubernetes_namek8s.replicaset.uid から kubernetes_uid

kubernetes.replica_set.desired (メトリクス)

k8s.replicaset.desired (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.replicaset.name から kubernetes_namek8s.replicaset.uid から kubernetes_uid

kubernetes.replication_controller.available (メトリクス)

k8s.replication_controller.available (メトリクス)および

ディメンションの名前が変更されました: k8s.replicationcontroller.name から kubernetes_namek8s.replicationcontroller.uid から kubernetes_uid

kubernetes.replication_controller.desired (メトリクス)

k8s.replication_controller.desired (メトリクス)および

ディメンションの名前が変更されました: k8s.replicationcontroller.name から kubernetes_namek8s.replicationcontroller.uid から kubernetes_uid

kubernetes.resource_quota_hard (メトリクス)

k8s.resource_quota.hard_limit (メトリクス)および

ディメンションの名前が変更されました: k8s.resourcequota.uid から kubernetes_uid

kubernetes.resource_quota_used (メトリクス)

k8s.resource_quota.used (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.resourcequota.uid から kubernetes_uid

kubernetes.stateful_set.current (メトリクス)

k8s.statefulset.current_pods (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.statefulset.name から kubernetes_namek8s.statefulset.uid から kubernetes_uid

kubernetes.stateful_set.desired (メトリクス)

k8s.statefulset.desired_pods (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.statefulset.name から kubernetes_namek8s.statefulset.uid から kubernetes_uid

kubernetes.stateful_set.ready (メトリクス)

k8s.statefulset.ready_pods (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.statefulset.name から kubernetes_namek8s.statefulset.uid から kubernetes_uid

kubernetes.stateful_set.updated (メトリクス)

k8s.statefulset.updated_pods (メトリクス)および以下の

ディメンションの名前が変更されました: k8s.statefulset.name から kubernetes_namek8s.statefulset.uid から kubernetes_uid

kubernetes.volume_available_bytes (メトリクス)

k8s.volume.available (メトリクス)

kubernetes.volume_capacity_bytes (メトリクス)

k8s.volume.capacity (メトリクス)

kubernetes.volume_inodes_free (メトリクス)

k8s.volume.inodes.free (メトリクス)

kubernetes.volume_inodes_used (メトリクス)

k8s.volume.inodes.used (メトリクス)

kubernetes.volume_inodes (メトリクス)

k8s.volume.inodes (メトリクス)

kubernetes_cluster (ディメンション)

k8s.cluster.name (ディメンション)

kubernetes_namespace (ディメンション)

k8s.namespace.name (ディメンション)

kubernetes_node_uid (ディメンション)

k8s.node.uid (ディメンション)

kubernetes_node (ディメンション)

k8s.node.name (ディメンション)

kubernetes_pod_name (ディメンション)

k8s.pod.name (ディメンション)

kubernetes_pod_uid (ディメンション)

k8s.pod.uid (ディメンション)

kubernetes_workload_name (プロパティ)

k8s.workload.name (プロパティ)

kubernetes_workload (プロパティ)

k8s.workload.kind (プロパティ)

load.longterm (メトリクス)

system.cpu.load_average.15m (メトリクス)

load.midterm (メトリクス)

system.cpu.load_average.5m (メトリクス)

load.shortterm (メトリクス)

system.cpu.load_average.1m (メトリクス)

memory.buffered (メトリクス)

system.memory.usage (メトリクス)とディメンション名 state

buffered に等しい

memory.cached (メトリクス)

system.memory.usage (メトリクス)とディメンション名 state

cached に等しい

memory.free (メトリクス)

system.memory.usage (メトリクス)とディメンション名 state

free に等しい

memory.inactive (メトリクス)

system.memory.usage (メトリクス)とディメンション名 state

inactive に等しい

memory.slab_recl (メトリクス)

system.memory.usage (メトリクス)とディメンション名 state

slab_reclaimable に等しい

memory.slab_unrecl (メトリクス)

system.memory.usage (メトリクス)とディメンション名 state

slab_unreclaimable に等しい

memory.used (メトリクス)

system.memory.usage (メトリクス)とディメンション名 state

used に等しい

pod_network_receive_bytes_total (メトリクス)

k8s.pod.network.io (メトリクス)とディメンション名

directionreceive に等しい

pod_network_receive_errors_total (メトリクス)

k8s.pod.network.errors (メトリクス)とディメンション名

directionreceive に等しい

pod_network_transmit_bytes_total (メトリクス)

k8s.pod.network.io (メトリクス)とディメンション名

directiontransmit に等しい

pod_network_transmit_errors_total (メトリクス)

k8s.pod.network.errors (メトリクス)とディメンション名

directiontransmit に等しい

process.rss_memory_bytes (メトリクス)

process.memory.physical_usage (メトリクス)

quota_name (ディメンション)

k8s.resourcequota.name (ディメンション)

replicaSet_uid (プロパティ)

k8s.replicaset.uid (プロパティ)

replicaSet (プロパティ)

k8s.replicaset.name (プロパティ)

statefulSet_uid (プロパティ)

k8s.statefulset.uid (プロパティ)

statefulSet (プロパティ)

k8s.statefulset.name (プロパティ)

vmpage_faults.majflt (メトリクス)

system.paging.faults (メトリクス)とディメンション名 type

major に等しい

vmpage_faults.minflt (メトリクス)

system.paging.faults (メトリクス)とディメンション名 type

minor に等しい

GitHubのLegacy to OTel semantics mapping tableに、OpenTelemetryの値とレガシーな値の対応表があります。

This page was last updated on 2024年05月28日.