- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
Supported OS
注: このページでは、EKS Fargate インテグレーションについて説明します。ECS Fargate については、Datadog の ECS Fargate インテグレーションのドキュメントを参照してください。
AWS Fargate 上にデプロイされている Amazon EKS は、マネージド型の Kubernetes サービスで、標準の Kubernetes 環境で展開とメンテナンスの特定の側面を自動化します。Kubernetes ノードは AWS Fargate によって管理され、ユーザーから分離されるように抽象化されています。
以下の手順では、AWS Fargate 上にデプロイされている Amazon EKS 内にあるコンテナで Datadog Agent v7.17 以上をセットアップする方法を説明します。AWS Fargate を使用していない場合は、Datadog-Amazon EKS インテグレーションドキュメントを参照してください。
AWS Fargate ポッドは物理的なポッドではありません。つまり、CPU、メモリなどのホストベースのシステムチェックを除外します。AWS Fargate ポッドからデータを収集するには、次の機能を有効にするカスタム RBAC を使用して、Agent をアプリケーションポッドのサイドカーとして実行してください。
AWS Fargate プロファイルでポッドを fargate 上で実行するように指定しない場合、ポッドは従来の EC2 マシンを使用できます。その場合は、Datadog-Amazon EKS インテグレーションセットアップを参照して、インテグレーションからデータを収集してください。これを機能させるには、Agent を EC2 型のワークロードとして実行します。Agent のセットアップは、Kubernetes エージェントのセットアップと同じで、すべてのオプションが利用可能です。EC2 ノード上に Agent をデプロイするには、Datadog Agent の DaemonSet セットアップを使用します。
AWS EKS Fargate で可観測性が最も高いカバレッジ監視ワークロードを実現するには、次の Datadog インテグレーションをインストールします。
また、EKS を使用して実行している他の AWS サービス(ELBなど)のインテグレーションをセットアップします。
インストールするには、カスタム Agent イメージ datadog/agent
(バージョン 7.17 以降) をダウンロードします。
Agent がサイドカーとして実行されている場合、同じポッド上のコンテナとのみ通信できます。監視するすべてのポッドに対して Agent を実行します。
Fargate ノード上の AWS EKS Fargate で実行しているアプリケーションからデータを収集するには、次のセットアップ手順に従います。
Datadog Live Container View に EKS Fargate コンテナを表示するには、ポッド仕様で shareProcessNamespace
を有効にします。プロセス収集を参照してください。
AWS EKS Fargate で Agent をサイドカーとしてデプロイする場合は、次の Agent RBACを使用します。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: datadog-agent
rules:
- apiGroups:
- ""
resources:
- nodes
- namespaces
- endpoints
verbs:
- get
- list
- apiGroups:
- ""
resources:
- nodes/metrics
- nodes/spec
- nodes/stats
- nodes/proxy
- nodes/pods
- nodes/healthz
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: datadog-agent
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: datadog-agent
subjects:
- kind: ServiceAccount
name: datadog-agent
namespace: default
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: datadog-agent
namespace: default
Fargate 型のポッドからデータの収集を開始するには、Datadog Agent v7.17 以上をアプリケーションのサイドカーとしてデプロイします。これは、ポッドで実行されているアプリケーションからマトリクスを収集するために必要な最小コンフィギュレーションです。Datadog Agent のサイドカーをデプロイするため、マニフェストに DD_EKS_FARGATE=true
が追加されていることに注意してください。
apiVersion: apps/v1
kind: Deployment
metadata:
name: "<APPLICATION_NAME>"
namespace: default
spec:
selector:
matchLabels:
app: "<APPLICATION_NAME>"
replicas: 1
template:
metadata:
labels:
app: "<APPLICATION_NAME>"
name: "<POD_NAME>"
spec:
serviceAccountName: datadog-agent
containers:
- name: "<APPLICATION_NAME>"
image: "<APPLICATION_IMAGE>"
## Agent をサイドカーとして実行
- image: datadog/agent
name: datadog-agent
env:
- name: DD_API_KEY
value: "<YOUR_DATADOG_API_KEY>"
## DD_SITE を "datadoghq.eu" に設定して
## Agent データを Datadog EU サイトに送信
- name: DD_SITE
value: "datadoghq.com"
- name: DD_EKS_FARGATE
value: "true"
- name: DD_CLUSTER_NAME
value: "<CLUSTER_NAME>"
- name: DD_KUBERNETES_KUBELET_NODENAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
resources:
requests:
memory: "256Mi"
cpu: "200m"
limits:
memory: "256Mi"
cpu: "200m"
注: <YOUR_DATADOG_API_KEY>
を組織の Datadog API キーに置き換えることを忘れないでください。
注: メトリクスが目的のクラスターでタグ付けされるように、DD_TAGS
のリストに希望の kube_cluster_name:<CLUSTER_NAME>
を追加してください。ここで、スペースで区切られた <KEY>:<VALUE>
タグを追加することができます。Agent が 7.34+
と 6.34+
の場合は、これは必要ありません。代わりに、DD_CLUSTER_NAME
環境変数を設定します。
Datadog では、イベント収集、Kubernetes リソースビュー、クラスターチェックなどの機能を利用するために、Cluster Agent を実行することを推奨しています。
EKS Fargate を使用する場合、EKS クラスターが混合ワークロード (Fargate/非 Fargate) を実行しているかどうかによって、2 つのシナリオが考えられます。
EKS クラスターが Fargate と非 Fargate のワークロードを実行し、Node Agent DaemonSet を介して非 Fargate ワークロードを監視する場合は、このデプロイに Cluster Agent/Cluster Checks Runner を追加します。詳細については、Cluster Agent の設定を参照してください。
Cluster Agent トークンは、監視したい Fargate タスクから到達可能でなければなりません。Helm Chart や Datadog Operator を使用している場合、対象のネームスペースにシークレットが作成されるため、デフォルトでは到達不可能です。
これを正しく動作させるためには、2 つの選択肢があります。
clusterAgent.token
、Datadog Operator では credentials.token
) を使用する。便利だが、安全性は低い。clusterAgent.tokenExistingSecret
、Datadog Operator では利用不可) を使用し、Fargate タスクを監視する必要があるすべてのネームスペースに複製する。EKS クラスターが Fargate ワークロードのみを実行する場合、スタンドアロンの Cluster Agent のデプロイが必要です。そして、上記のように、トークンを到達可能にするための 2 つのオプションのうち 1 つを選択します。
以下の Helm の values.yaml
を使用します。
datadog:
apiKey: <YOUR_DATADOG_API_KEY>
clusterName: <CLUSTER_NAME>
agents:
enabled: false
clusterAgent:
enabled: true
replicas: 2
どちらの場合も、Cluster Agent との通信を可能にするために、Datadog Agent のサイドカーマニフェストを変更する必要があります。
env:
- name: DD_CLUSTER_AGENT_ENABLED
value: "true"
- name: DD_CLUSTER_AGENT_AUTH_TOKEN
value: <hardcoded token value> # シークレットを使用する場合は、valueFrom: を使用します
- name: DD_CLUSTER_AGENT_URL
value: https://<CLUSTER_AGENT_SERVICE_NAME>.<CLUSTER_AGENT_SERVICE_NAMESPACE>.svc.cluster.local:5005
- name: DD_ORCHESTRATOR_EXPLORER_ENABLED # Kubernetes リソースビューを取得するために必要です
value: "true"
- name: DD_CLUSTER_NAME
value: <CLUSTER_NAME>
EKS クラスターのパフォーマンスを把握するには、Cluster Check Runner を有効にして kube-state-metrics
サービスからメトリクスを収集します。
アプリケーションコンテナでオートディスカバリーラベルを使用して、サポートされている Agent インテグレーションのメトリクス収集を開始します。
apiVersion: apps/v1
kind: Deployment
metadata:
name: "<APPLICATION_NAME>"
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: "<APPLICATION_NAME>"
template:
metadata:
labels:
app: "<APPLICATION_NAME>"
name: "<POD_NAME>"
annotations:
ad.datadoghq.com/<CONTAINER_NAME>.check_names: '[<CHECK_NAME>]'
ad.datadoghq.com/<CONTAINER_IDENTIFIER>.init_configs: '[<INIT_CONFIG>]'
ad.datadoghq.com/<CONTAINER_IDENTIFIER>.instances: '[<INSTANCE_CONFIG>]'
spec:
serviceAccountName: datadog-agent
containers:
- name: "<APPLICATION_NAME>"
image: "<APPLICATION_IMAGE>"
## Agent をサイドカーとして実行
- image: datadog/agent
name: datadog-agent
env:
- name: DD_API_KEY
value: "<YOUR_DATADOG_API_KEY>"
## DD_SITE を "datadoghq.eu" に設定して
## Agent データを Datadog EU サイトに送信
- name: DD_SITE
value: "datadoghq.com"
- name: DD_EKS_FARGATE
value: "true"
- name: DD_KUBERNETES_KUBELET_NODENAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
resources:
requests:
memory: "256Mi"
cpu: "200m"
limits:
memory: "256Mi"
cpu: "200m"
注:
<YOUR_DATADOG_API_KEY>
を組織の Datadog API キーに置き換えることを忘れないでください。cgroups
ボリュームを Agent にマウントできないため、Fargate ではコンテナメトリクスを使用できません。Live Containers ビューは、CPU およびメモリに 0 を報告します。アプリケーションコンテナから DogStatsD メトリクスを Datadog に転送するように、Agent コンテナのコンテナポート 8125
を設定します。
apiVersion: apps/v1
kind: Deployment
metadata:
name: "<APPLICATION_NAME>"
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: "<APPLICATION_NAME>"
template:
metadata:
labels:
app: "<APPLICATION_NAME>"
name: "<POD_NAME>"
spec:
serviceAccountName: datadog-agent
containers:
- name: "<APPLICATION_NAME>"
image: "<APPLICATION_IMAGE>"
## Agent をサイドカーとして実行
- image: datadog/agent
name: datadog-agent
## DogStatsD メトリクスの収集にポート 8125 を有効化
ports:
- containerPort: 8125
name: dogstatsdport
protocol: UDP
env:
- name: DD_API_KEY
value: "<YOUR_DATADOG_API_KEY>"
## DD_SITE を "datadoghq.eu" に設定して
## Agent データを Datadog EU サイトに送信
- name: DD_SITE
value: "datadoghq.com"
- name: DD_EKS_FARGATE
value: "true"
- name: DD_KUBERNETES_KUBELET_NODENAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
resources:
requests:
memory: "256Mi"
cpu: "200m"
limits:
memory: "256Mi"
cpu: "200m"
注: <YOUR_DATADOG_API_KEY>
を組織の Datadog API キーに置き換えることを忘れないでください。
Datadog Agent v6.19+ は、EKS Fargate インテグレーションのライブコンテナをサポートします。ライブコンテナは、Containers ページに表示されます。
Datadog Agent v6.19+ は、EKS Fargate インテグレーションのライブプロセスをサポートします。ライブプロセスは、Processes ページに表示されます。ライブプロセスを有効にするには、ポッドの仕様で shareProcessNamespace を有効にします。
Kubernetes のリソースビューを収集するには、Cluster Agent の設定が必要です。
EKS のログを CloudWatch Logs にルーティングする Fluent Bit と Datadog にログをルーティングする Datadog Forwarder で EKS Fargate ログを監視することができます。
CloudWatch へログを送信するよう Fluent Bit を構成するには、 CloudWatch Logs を出力先として指定する Kubernetes ConfigMap を作成します。ConfigMap は、ロググループ、リージョン、プレフィックス、文字列、そしてロググループの自動作成の有無を指定します。
kind: ConfigMap
apiVersion: v1
metadata:
name: aws-logging
namespace: aws-observability
data:
output.conf: |
[OUTPUT]
Name cloudwatch_logs
Match *
region us-east-1
log_group_name awslogs-https
log_stream_prefix awslogs-firelens-example
auto_create_group true
Datadog Forwarder を使用して、Cloudwatch からログを収集し、Datadog に送信します。
Agent コンテナにコンテナポート 8126
をセットアップして、アプリケーションコンテナからトレースを収集します。トレーシングのセットアップ方法について、ご確認ください。
apiVersion: apps/v1
kind: Deployment
metadata:
name: "<APPLICATION_NAME>"
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: "<APPLICATION_NAME>"
template:
metadata:
labels:
app: "<APPLICATION_NAME>"
name: "<POD_NAME>"
spec:
serviceAccountName: datadog-agent
## cgroup v2 による発信点検出のため、Agent をアプリケーションと同じネームスペースに配置する
shareProcessNamespace: true
containers:
- name: "<APPLICATION_NAME>"
image: "<APPLICATION_IMAGE>"
## Agent をサイドカーとして実行
- image: datadog/agent
name: datadog-agent
## トレースの収集にポート 8126 を有効化
ports:
- containerPort: 8126
name: traceport
protocol: TCP
env:
- name: DD_API_KEY
value: "<YOUR_DATADOG_API_KEY>"
## DD_SITE を "datadoghq.eu" に設定して
## Agent データを Datadog EU サイトに送信
- name: DD_SITE
value: "datadoghq.com"
- name: DD_EKS_FARGATE
value: "true"
- name: DD_APM_ENABLED
value: "true"
- name: DD_KUBERNETES_KUBELET_NODENAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
resources:
requests:
memory: "256Mi"
cpu: "200m"
limits:
memory: "256Mi"
cpu: "200m"
注: <YOUR_DATADOG_API_KEY>
を組織の Datadog API キーに置き換えることを忘れないでください。
AWS EKS Fargate API サーバーからイベントを収集するには、EKS クラスター内の Datadog Cluster Agent を実行し、Cluster Agent のイベント収集を有効にします。
または、Datadog Cluster Agent をセットアップしてクラスターチェックを有効にするだけでなく、クラスターチェックランナーをデプロイすることもできます。
注: Fargate のポッドで Datadog Cluster Agent を実行する場合も、イベントを収集することができます。
Agent 6.19+/7.19+ の場合、プロセス収集を使用できます。ポッド仕様で shareProcessNamespace
を有効にして、Fargate ポッドで実行されているすべてのプロセスを収集します。例:
apiVersion: v1
kind: Pod
metadata:
name: <名前>
spec:
shareProcessNamespace: true
...
注: CPU とメモリのメトリクスは使用できません。
eks_fargate チェックは、pod_name
と virtual_node
でタグ付けされたハートビートメトリクス eks.fargate.pods.running
を提出するために、ユーザーは実行中のポッドの数を追跡できます。
eks_fargate にはサービスチェックが含まれていません。
eks_fargate にはイベントが含まれていません。
ご不明な点は、Datadog のサポートチームまでお問い合わせください。
お役に立つドキュメント、リンクや記事: