---
title: "Datadog Cluster Agent のご紹介"
description: "Cluster Agent は、コンテナクラスターの監視データを効率的に収集し、新しい強力な自動スケーリング機能を実現します。"
author: "Charly Fontaine"
date: 2018-10-18
tags: ["infrastructure monitoring", "kubernetes", "containers"]
blog_type_id: the-monitor
locale: ja
---

コンテナーとオーケストレーターの人気が急上昇するにつれ、ワークロードが急速に変化する非常に動的な環境が生まれることになりました。これらの動的なワークロードは同じように動的な方法で監視する必要があります。Kubernetes、DC / OS、Swarm などのオーケストレーションテクノロジーは、ノードレベルとクラスターレベルの両方でコンテナーワークロードを管理しており、インフラストラクチャーの状態を完全に把握するには、各レイヤーから有用な情報を収集する必要があります。 Datadog Cluster Agent は、このような環境でオーケストレーションされるクラスター全体から監視データを効率的に収集できるように構築されました。

## Datadog Cluster Agent を利用できなかった時代のクラスターの監視

Datadog Cluster Agent の使用方法を説明するためには、Datadog ユーザーが Kubernetes クラスターからメトリクスを収集して集計していたこれまでの方法を確認しましょう。以前は、クラスター内のすべてのワーカーノードで Datadog Agent が実行されており、次の 2 つのソースからデータを収集していました。

- kubelet : ノード上にワークロードを作成するローカルデーモン
- クラスターのコントロールプレーン（マスターノード上） : API サーバー、スケジューラ、コントローラーマネージャー、および etcd から構成されます。

これらのコンポーネントの詳細は、 [公式の Kubernetes ドキュメント](https://kubernetes.io/docs/concepts/overview/components/)で、ご確認ください。

### kubelet からノードレベルのデータを収集する

各ワーカーノードの kubelet を監視することによって、Datadog Agent はコンテナーの動作に関する有用な情報を提供します。これは、スケジューリングに関連する問題を追跡する場合にも役立ちます。Agent はシステムレベルのデータも取得し、ノード上で実行されているアプリケーションを自動的に検出および監視します。

### API サーバーからクラスターレベルのデータを収集する

これらのノードレベルのメトリクスを収集することに加えて、各 Datadog Agent はマスターノードの API サーバーへ個別にクエリーを行い、特定の Kubernetes コンポーネントの動作に関するデータを収集し、クラスター全体に関する重要なメタデータを収集します

各 Agent は、その特定のノードでスケジュールされたポッドをターゲットとするサービスのリストも取得し、このデータを使用して関連するアプリケーションメトリクスをサービスにマッピングして、各メトリクスに適切なポッド名とサービスをタグ付けします。Agent は、Kubernetes イベントを収集するために API サーバーへ定期的にクエリを行い、リーダーを選出するように構成することもできます。この設定ではクラスターのすべてのレイヤーを可視化できますが、クラスタのサイズが大きくなるにつれて API サーバーと etcd の負荷が増大します。

## Datadog Cluster Agent を活用する

Datadog Cluster Agent は、クラスターレベルの監視データを収集する合理的で集中型のアプローチを実現するために開発されました。これは、数百から数千のノードを持つ大規模な Kubernetes クラスタでは特に有益です。これにより、API サーバーの負荷が大幅に軽減されると同時に、非常に有用な情報を得ることができます。

Cluster Agent は、API サーバーとノードベースの Agent 間のプロキシとして機能します。これにより、API サーバーへの直接の負荷が軽減されるだけでなく、ノードベースの Agent はノードレベルのデータの収集に集中できます。一方、Cluster Agent はマスターノードからクラスターレベルのデータを収集します。Cluster Agent は、クラスターレベルのメタデータをノードベースの Agent に送り返すため、ローカルで収集されたメトリクスを、クラスター全体で一貫したタグを設定して強化できます。また、ノードベースの Agent は API サーバーからこのデータのクエリする必要がなくなりましたので、RBAC ルールを減らしてメトリクスとメタデータのみを kubelet から読み取ることもがきます。

## External Metrics Provider

また、[Cluster Agent には External Metrics Provider インタフェースも実装]されました。このインタフェースでは、Datadog アカウントから Kubernetes にメトリクスを公開できます。これにより、クラスターからでも AWS ELB などの外部サービスからでも、Datadog で収集しているリアルタイムのヘルスとパフォーマンスデータに基づいて、Kubernetes の [Horizontal Pod Autoscaling 機能](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/)を完全に自動化した方法で利用できます。たとえば、1 秒あたりの要求率がしきい値を超えたときに、Web サーバーのレプリカ数をオートスケールするマニフェストを作成できます。この機能の詳細については、[こちらのブログ](https://www.datadoghq.com/blog/autoscale-kubernetes-datadog.md)でご確認ください。

## Datadog 環境での新しい Cluster Agent の検証

このプロジェクトは当初、お客様のニーズによって推進されていましたが、Datadog も独自の Kubernetes インフラストラクチャーで Datadog Cluster Agent をテストしています。Datadog Cluster Agent を、数百のノードと 20,000 以上のポッドとエンドポイントを持つクラスターに展開したところ、API サーバーの負荷が大幅に減少することが確認されました。

## Datadog Cluster Agent を使ってみる

Datadog Cluster Agent は一般に公開されており、[Datadog のドキュメント](https://github.com/DataDog/datadog-agent/tree/master/Dockerfiles/cluster-agent#deploying-the-datadog-cluster-agent)のガイドラインに従って展開できます。Datadog Agent を使用して Kubernetes クラスターを監視している場合は、この[移行計画](https://github.com/DataDog/datadog-agent/tree/master/Dockerfiles/cluster-agent#migration-path)に従って操作すると、新しいバージョンのノードベースの Agent を展開して、Cluster Agent を活用できます。

ご質問やご意見がございましたら、 [サポートチーム](mailto:support@datadoghq.com)にご連絡ください。Cluster Agent のコードはオープンソースなので、ご自由にお使いいただけます。構築の手順はドキュメントの[このセクション](https://github.com/DataDog/datadog-agent/tree/master/Dockerfiles/cluster-agent#containerized-agent)にあります。

Datadog 製品をご利用されたことがない場合は、<!-- Sign-up trigger (すべての機能をご利用いただける 2 週間のトライアル) omitted -->をぜひご利用ください。