Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Datadog による Container の監視について

Datadog による Container の監視について

社内で行った Datadog 勉強会の資料になります。
下記の内容について簡単に説明してあります。

・Datadog でコンテナ監視を行なう場合の基礎知識
・Datadog で Kubernetes 監視を行なう方法
・Kubernetes add-on の kube-stete-metrics を使ったクラスタレベルメトリクスの監視
・helm を使った datadog の all-in-one 1 コマンドデプロイ
・2 sec 間隔で行われるライブコンテナモニタリング
・auto_conf を使ったコンテナディスカバリ

Masaya Aoyama (@amsy810)

December 21, 2017
Tweet

More Decks by Masaya Aoyama (@amsy810)

Other Decks in Technology

Transcript

  1. コンテナ監視 on Docker コンテナの監視を行なう方法は2種類 1. コンテナホスト上で datadog-agent プロセスを起動する ◦ /etc/dd-agent/conf.d/docker*.yaml

    を設定する必要がある 2. コンテナホスト上に datadog/docker-dd-agent コンテナを起動する ◦ docker コンテナに特定のディレクトリ以下を ReadOnly で渡す必要がある
  2. コンテナ監視 on Docker コンテナの監視を行なう方法は2種類 1. コンテナホスト上で datadog-agent プロセスを起動する ◦ /etc/dd-agent/conf.d/docker*.yaml

    を設定する必要がある 2. コンテナホスト上に datadog/docker-dd-agent コンテナを起動する ◦ docker コンテナに特定のディレクトリ以下を ReadOnly で渡す必要がある
  3. コンテナ監視 on Docker コンテナからホスト上の proc, cgroupsや docker からメトリクスを収集 • /proc/*

    • /sys/fs/cgroup/* • /var/run/docker.sock 環境変数として ServiceDiscovery の設定・タグ・API Key の設定を埋め込む
  4. コンテナ監視 on Docker 各コンテナ毎に基本的なメトリクス(docker.*)   CPU、Memory、Disk I/O、Network I/O 各メトリクスにはデフォルトで様々なタグが付与される   #container_name:sample-container   #container_id:57786a376934

      #host:dockerhost01   #docker_version:17.06.0.ce Swarm mode だと更に追加タグ   #docker_swarm:active(active ノードのみモニタリング等も可能)   #swarm_service:sample-service
  5. 実はたったの 1 コマンドで展開 +α の設定例 • Kubernetes 用 Service Discovery

    の有効化 • 必要に応じて RBAC の設定 • Kubernetes add-on の kube-state-metrics の有効化 • auto_conf の設定 コンテナ監視 on Kubernetes $ helm init (クラスタ構築以降 1 度だけ実行すれば OK) $ helm install --name dd-aoyama stable/datadog
  6. Kubernetes のメトリクス kubernetes.* または kubernetes_state.* で登録される                 豊富なタグも付与される Deployment名、Service名、etc #kube_service:service-sample #kube_deployment:dep-sample

    #kube_replica_set:dep-sample-2627731247 #kube_namespace:default #kube_pod:dep-sample-2627731247-79414 #kube_pod_ip:10.100.76.12 #kube_master_version:1.7.8 #kubelet_version:1.7.8
  7. kube-state-metrics による Cluster Level メトリクス kubernetes_state.* のメトリクスは Cluster Level のメトリクス

    例えば Deployment の現在の Pod 数、要求 Pod 数、停止 Pod 数など Job の成功数、失敗数 Cluster Level のメトリクスは kubernetes add-on の kube-state-metrics が必要 Helm だと datadog と合わせて一発でインストール可能
  8. auto_conf を使った Service Discovery Datadog Pod から Nginx Pod の監視をしたいとき

    いちいち Pod の IP を設定するの…?                 コンテナのライフサイクルは短いけど… /etc/dd-agent/conf.d/nginx.conf init_config: instances: - nginx_status_url: http://10.0.0.1:80/nginx_status - nginx_status_url: http://10.0.0.2:80/nginx_status - nginx_status_url: http://10.0.0.3:80/nginx_status
  9. auto_conf を使った Service Discovery /etc/dd-agent/conf.d/auto_conf/nginx.conf docker_images: - nginx init_config: instances:

    - nginx_status_url: http://%%host%%:%%port%%/nginx_status Datadog Pod から Nginx Pod の監視をしたいとき サービスディスカバリによる自動判別!
  10. 弊社のオンプレコンテナ基盤でも利用中! 「GKE 互換のオンプレコンテナ基盤 AKE (Adtech Container Engine)」 https://developers.cyberagent.co.jp/blog/archives/12058/ 「Kubernetes をいじって

    Hardware LoadBalancer で “type LoadBalancer” を実装」 https://adtech.cyberagent.io/techblog/archives/3127 「オンプレでも GKE Like な Ingress を使うために 自作 Ingress Controller を実装」 https://adtech.cyberagent.io/techblog/archives/3758