

# OTel Container Insights (推奨)
<a name="container-insights-eks-otel"></a>

OTel Container Insights は、Amazon EKS クラスターで Container Insights を有効にする際の推奨アプローチです。OpenTelemetry 上に構築され、シンプルなデプロイモデルとアクティブに進行中の開発により、メトリクスとログ全体で包括的なオブザーバビリティを提供します。

OTel Container Insights と Enhanced Container Insights (Classic) はどちらも同じ `amazon-cloudwatch-observability` Amazon EKS アドオンを使用します。違いは、アドオンのバージョンと設定であり、製品が違うわけではありません。OTel Container Insights は、そのアドオンの新しいアクティブに開発された設定です。

このアプローチは、以下のユースケース用に設計されています。
+ クラスターオブザーバビリティへの最適なサポートパスを希望する新しい Amazon EKS のお客様
+ 単一で最新のテレメトリパイプラインに統合しようとしている既存のお客様
+ CloudWatch とのネイティブ統合を希望して OpenTelemetry の採用を進めているチーム

## 主な利点
<a name="container-insights-eks-otel-benefits"></a>

OTel Container Insights には次の利点があります。
+ **セットアップの簡素化** — コンソール、AWS CLI、または CloudFormation を使用して、数分で完全なオブザーバビリティが有効になります
+ **包括的なシグナル** — 単一のエージェントデプロイからメトリクスとログを収集します
+ **オブザーバビリティの向上** — 詳細な Kubernetes メトリクス、ポッドレベルのインサイト、相関シグナルにアクセスします
+ **アクティブな開発** — 新機能、パフォーマンスの向上、シグナルカバレッジの拡大が継続的に取り込まれます
+ **OpenTelemetry ネイティブ** — 業界標準のオブザーバビリティフレームワークに合わせて OpenTelemetry Collector 上に構築

## このアプローチが推奨される理由
<a name="container-insights-eks-otel-comparison"></a>

OTel Container Insights は、最もシンプルなデプロイモデルで最も広範なシグナルカバレッジ (メトリクスとログ) を提供するため、他の Container Insights アプローチよりも推奨されます。その他のアプローチはメンテナンス専用モードであるか、より複雑な手動設定が必要です。

次の表は、OTel Container Insights と Enhanced Container Insights (Classic) を比較したものです。


| 考慮事項 | OTel Container Insights | Enhanced Container Insights (Classic) | 
| --- | --- | --- | 
| シグナル | メトリクス、ログ | メトリクス、ログ | 
| オブザーバビリティの強化 | はい | はい | 
| メンテナンスステータス | アクティブな開発 | メンテナンス | 
| デプロイの複雑さ | 低 | 低 | 

## メトリクスのソースとレシーバー
<a name="container-insights-eks-otel-receivers"></a>

OTel Container Insights は、オープンソースのレシーバーからメトリクスを収集し、OpenTelemetry セマンティック規則で自動的に充実化します。独自のメトリクス名を使用する Enhanced Container Insights (Classic) とは異なり、OTel Container Insights は各ソースの元のメトリクス名を保持します。これにより、既存の PromQL ダッシュボードやコミュニティドキュメントと互換性があります。

OTel Container Insights は、OpenTelemetry Protocol (OTLP) を使用して 30 秒の精度で複数のレシーバーからオープンソースメトリクスを収集します。メトリクスは、CloudWatch 形式の名前ではなく、元のソース名 (cAdvisor からの `container_cpu_usage_seconds_total` など) を使用し、PromQL でクエリできます。

次の表に、使用可能なレシーバーとその前提条件を示します。


| レシーバー | 収集する内容 | 前提条件 | 
| --- | --- | --- | 
| cAdvisor | コンテナ CPU、メモリ、ネットワーク、ディスク/ファイルシステムのメトリクス | kubelet に組み込みで、追加セットアップなし | 
| Prometheus Node Exporter | ノードレベルの CPU、メモリ、ディスク、ファイルシステム、ネットワーク、システム、VMStat、netstat/socket のメトリクス | アドオンに含まれる | 
| Kube State メトリクス | ポッド、ノード、デプロイ、DaemonSet、StatefulSet、ReplicaSet、ジョブ、CronJob、サービス、名前空間、PersistentVolume、PersistentVolumeClaim のメトリクス | アドオンに含まれる | 
| Kubernetes API サーバー | API サーバーと etcd メトリクス | コントロールプレーンで入手可能 | 
| NVIDIA DCGM | GPU 使用率、メモリ、電力/熱、スロットリング、エラー/信頼性、NVLink のメトリクス | NVIDIA デバイスプラグインとコンテナツールキットが必要 | 
| AWS Neuron モニター | NeuronCore、NeuronDevice、Neuron システムのメトリクス | Neuron ドライバーとデバイスプラグインが必要 | 
| AWS Elastic Fabric Adapter | EFA ネットワークのメトリクス | EFA デバイスプラグインが必要 | 
| NVMe | NVMe SMART ヘルスのメトリクス | 追加セットアップなし | 

各メトリクスは、次の 3 つのソースから最大 150 個のラベルで充実化されます。

1. **テレメトリソースのネイティブラベル** — 元のレシーバーから (例:cAdvisor からの `pod`、`namespace`、`container`)

1. **OpenTelemetry リソース属性** — Kubernetes、ホスト、クラウドの OTel セマンティック規則に従う

1. **Kubernetes ポッドとノードのラベル** — プレフィックスが `k8s.pod.label.*` と `k8s.node.label.*` の Kubernetes API からのすべてのラベル

## デュアル発行と移行
<a name="container-insights-eks-otel-dual-publishing"></a>

OTel Container Insights はデフォルトで無効になっています。有効にするには、アドオン設定で `otelContainerInsights.enabled` を `true` に設定します。

アドオンバージョン v6.2.0 以降、アドオンは Enhanced Container Insights (Classic) と OTel Container Insights の両方を同時に経由したメトリクスの発行をサポートしています。これにより、完全に移行する前に新しいメトリクスパイプラインを検証できます。

Enhanced Container Insights (Classic) とともに OTel Container Insights を有効にするには、次のコマンドを実行します。

```
aws eks update-addon \
  --cluster-name {{cluster-name}} \
  --addon-name amazon-cloudwatch-observability \
  --configuration-values '{"containerInsights":{"enabled":true},"otelContainerInsights":{"enabled":true}}'
```

OTel Container Insights を無効にし、Enhanced Container Insights (Classic) のみを保持するには、次のコマンドを実行します。

```
aws eks update-addon \
  --cluster-name {{cluster-name}} \
  --addon-name amazon-cloudwatch-observability \
  --configuration-values '{"otelContainerInsights":{"enabled":false}}'
```

Enhanced Container Insights (Classic) を無効にし、OTel Container Insights のみを保持するには、次のコマンドを実行します。

```
aws eks update-addon \
  --cluster-name {{cluster-name}} \
  --addon-name amazon-cloudwatch-observability \
  --configuration-values '{"containerInsights":{"enabled":false},"otelContainerInsights":{"enabled":true}}'
```

## 開始方法
<a name="container-insights-eks-otel-topics"></a>

次のトピックを使用して、Amazon EKS クラスターで OTel Container Insights をセットアップおよび設定します。

**Topics**
+ [クイックスタート: Amazon EKS での OTel Container Insights](container-insights-eks-otel-quickstart.md) — 最速のセットアップパスを使用して OTel Container Insights の使用を開始します。
+ [コンソールから OTel Container Insights を有効にする](container-insights-eks-otel-console.md) — AWS マネジメントコンソールを使用して OTel Container Insights を有効にします。
+ [Helm を使用して OTel Container Insights をデプロイする](container-insights-eks-otel-helm.md) — Helm チャートを使用して OTel Container Insights をデプロイし、柔軟で GitOps に最適な管理を実現します。
+ [CloudFormation を使用して OTel Container Insights をデプロイする](container-insights-eks-otel-cfn.md) — CloudFormation テンプレートを使用して OTel Container Insights をデプロイします。
+ [Amazon CloudWatch へのログの送信](container-insights-eks-otel-logs.md) — Amazon EKS クラスターのログ収集を設定します。
+ [Amazon EKS での OTel Container Insights の詳細設定](container-insights-eks-otel-advanced.md) — 環境に合わせて OTel Container Insights をカスタマイズおよびファインチューニングします。