EKSにDatadog Agentインストール
セルフマネージド型ノード(EC2)のKubernetesをDatadogで監視する際に必要なAgentのインストール手順を記します。
Kubernetesあんまり分からない人向けです。
※kubectlの概要と使い方、Kubernetesのコンポーネントが各々どんな役割を持つかざっくり理解できている程度
インストールするサービス
- Datadog Agent(Datadog Node Agent)
- 必須です。DaemonSetとして全てのノードで稼働し、各ノードでメトリクスを収集します。
- Datadog Cluster Agent
- 下構成図のような形で負荷の軽減と権限の最小化が可能です。
-
kube-state-metrics
- Datadog Agentでは取得できないクラスター状態メトリクスを生成します。
- 必須です。DaemonSetとして全てのノードで稼働し、各ノードでメトリクスを収集します。
- 下構成図のような形で負荷の軽減と権限の最小化が可能です。
- Datadog Agentでは取得できないクラスター状態メトリクスを生成します。
インストール方法について
DaemonSet
kubectlを用いて必要なリソース一つ一つのマニフェストを適用します。
RBACのRole, シークレット, Datadog Node Agent, Datadog Cluster Agent, kube-state-metricsを個別に直接デプロイします。
Helm
KubernetesパッケージマネージャーのHelmを用います。
デフォルトのチャート設定で必要なリソースが一括デプロイされます。
こちらの方が非常に簡単にインストールできます。Datadog サイトに記載されているKubernetes へのインストール手順もこちらです。
本稿でもHelmを用います。
環境
操作端末とセルフマネージド型ワーカーノードのOSはAmazonLinux2です。
EKSのクラスター等はeksctlで作成したリソースを使用しました。
kubectlで必要な操作の為にkubeconfig設定やRBAC認可を受けた状態にしてください。(eksctlでクラスターを作成した端末と同じなら考慮不要)
$ uname -a
Linux ip-xxx-xxx-xxx-xxx.ap-northeast-1.compute.internal 4.14.231-173.361.amzn2.x86_64 #1 SMP Mon Apr 26 20:57:08 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
$ kubectl version --short --client
Client Version: v1.19.6-eks-49a6c0
手順
Helmをインストール
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
Downloading https://get.helm.sh/helm-v3.6.0-linux-amd64.tar.gz
Verifying checksum... Done.
Preparing to install helm into /usr/local/bin
helm installed into /usr/local/bin/helm
$ helm version
version.BuildInfo{Version:"v3.6.0", GitCommit:"7f2df6467771a75f5646b7f12afb408590ed1755", GitTreeState:"clean", GoVersion:"go1.16.3"}
設定ファイル作成
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
Downloading https://get.helm.sh/helm-v3.6.0-linux-amd64.tar.gz
Verifying checksum... Done.
Preparing to install helm into /usr/local/bin
helm installed into /usr/local/bin/helm
$ helm version
version.BuildInfo{Version:"v3.6.0", GitCommit:"7f2df6467771a75f5646b7f12afb408590ed1755", GitTreeState:"clean", GoVersion:"go1.16.3"}
Datadogが公開しているデフォルト設定が記載されたHelmのチャートファイルをダウンロードします。
$ curl -O https://raw.githubusercontent.com/DataDog/helm-charts/master/charts/datadog/values.yaml
Helmリポジトリ追加
Helm Datadog リポジトリおよび Helm 安定版リポジトリ (Kube State Metrics チャート用) を追加します。
$ helm repo add datadog https://helm.datadoghq.com
"datadog" has been added to your repositories
$ helm repo add stable https://charts.helm.sh/stable
"stable" has been added to your repositories
$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "datadog" chart repository
...Successfully got an update from the "stable" chart repository
Update Complete. ⎈Happy Helming!⎈
インストール実行
Datadog サイトでAPIキーを取得します。
(Datadog サイトのIntegrasions>Agent>kubernetesにもコピペできるインストールコマンドの記載があります。)
以下インストールコマンド内の
-
RELEASE_NAME
を適当な名前で置き換えます。(例えばdatadog
へ) -
DATADOG_API_KEY
を先程取得したAPIキーで置き換えます。 -
TARGET_SYSTEM
をワーカーノードのOSプラットフォーム名(linux
またはwindows
)で置き換えます。※デフォルトlinuxなので、linuxなら指定自体不要
helm install <RELEASE_NAME> -f values.yaml --set datadog.apiKey=<DATADOG_API_KEY> datadog/datadog --set targetSystem=<TARGET_SYSTEM>
インストールします。
$ helm install datadog -f values.yaml --set datadog.apiKey=abcdefghijklmnopqrstuvwxyz1234567890 datadog/datadog
WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /home/ec2-user/.kube/config
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /home/ec2-user/.kube/config
NAME: datadog
LAST DEPLOYED: Thu Jun 3 03:08:46 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Datadog agents are spinning up on each node in your cluster. After a few
minutes, you should see your agents starting in your event stream:
https://app.datadoghq.com/event/stream
確認
Datadog Cluster Agentとkube-state-metricsのPodが一つと、各ワーカーノード上でDatadog AgentのPodがDaemonSetとして1つづつ起動できていればOKです。
$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/datadog-cluster-agent-7cf7c4c9db-tcd4r 1/1 Running 0 75s
pod/datadog-fkmmn 2/2 Running 0 75s
pod/datadog-j259t 2/2 Running 0 75s
pod/datadog-kube-state-metrics-699964c777-g8ktf 1/1 Running 0 75s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/datadog-cluster-agent ClusterIP 10.100.215.13 <none> 5005/TCP 75s
service/datadog-kube-state-metrics ClusterIP 10.100.99.35 <none> 8080/TCP 75s
service/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 100m
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/datadog 2 2 2 2 2 kubernetes.io/os=linux 76s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/datadog-cluster-agent 1/1 1 1 76s
deployment.apps/datadog-kube-state-metrics 1/1 1 1 76s
NAME DESIRED CURRENT READY AGE
replicaset.apps/datadog-cluster-agent-7cf7c4c9db 1 1 1 76s
replicaset.apps/datadog-kube-state-metrics-699964c777 1 1 1 76s
Eventsから
- Datadog サイトへログイン
- 画面左ナビバーの「Events」をクリック
- 各ワーカーノードインスタンス分のDatadog Agent has startedイベントとDatadog Cluster Agentイベントが一つあればOK
Infrastructure Listから
- Datadog サイトへログイン
- 画面左ナビバーの「Infrastructure」>「Infrastructure List」をクリック
- ワーカーノードインスタンスのStatus列左部にDatadog Agentの骨のようなアイコンが表示されていればOK
アンインストール
インストールしたDatadog Agentをアンインストールしたい場合はRELEASE_NAME
を指定してhelm uninstall
コマンドを実行してください。
$ helm uninstall datadog
参考
Kubernetes クラスターで Datadog Agent を実行する
Author And Source
この問題について(EKSにDatadog Agentインストール), 我々は、より多くの情報をここで見つけました https://qiita.com/hiren/items/c75c9ec47bd81daefef9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .