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 を使ったコンテナディスカバリ

De266761b955b2636e454a1bc7a99ed4?s=128

Masaya Aoyama (@amsy810)

December 21, 2017
Tweet

Transcript

  1. Containerの監視について CA Base 公式勉強会 Datadog 勉強会 Part 2 (2018/12/14) 青山

    真也 アドテク本部 Central Infrastructure Agency
  2. 青山 真也 (Masaya Aoyama) @amsy810 普段の主な仕事↓ 世界で 138 番目 https://adtech.cyberagent.io/techblog/

    archives/3086
  3. みなさん コンテナの監視 ってどうしていますか?

  4. まだコンテナ監視で疲弊してるの?

  5. None
  6. CNCF の Cloud Native Landscape をご存知ですか?

  7. None
  8. None
  9. None
  10. 本日お話すること Datadog によるコンテナの監視の基礎 ライブコンテナモニタリング Kubernetes クラスタレベルの監視 auto_conf によるサービスディスカバリ プロセス監視や死活監視

  11. 百聞は一見にしかず 一度画像を見てテンションを上げましょう。

  12. None
  13. ライブコンテナモニタリング コンテナ毎に 2 sec 周期でメトリクスが更新 柔軟な絞り込みを行なうことが可能 • Deployment に紐づくコンテナ •

    Service に紐づくコンテナ • Pod に紐づくコンテナ • Namespace 毎 • その他
  14. コンテナ監視 on Docker コンテナの監視を行なう方法は2種類 1. コンテナホスト上で datadog-agent プロセスを起動する ◦ /etc/dd-agent/conf.d/docker*.yaml

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

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

    • /sys/fs/cgroup/* • /var/run/docker.sock 環境変数として ServiceDiscovery の設定・タグ・API Key の設定を埋め込む
  17. コンテナ監視 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
  18. コンテナ監視 on Kubernetes Kubernetes の監視を行なう場合、上記の Docker 監視に + αで設定が必要…

  19. 実はたったの 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
  20. 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
  21. kube-state-metrics による Cluster Level メトリクス kubernetes_state.* のメトリクスは Cluster Level のメトリクス

    例えば Deployment の現在の Pod 数、要求 Pod 数、停止 Pod 数など Job の成功数、失敗数 Cluster Level のメトリクスは kubernetes add-on の kube-state-metrics が必要 Helm だと datadog と合わせて一発でインストール可能
  22. kube-state-metrics による Cluster Level メトリクス

  23. A/B テストの監視例

  24. ここまでの話はブログにも載っています 「Datadog のライブコンテナモニタリングとアラートを使って  賢く監視問題を解決する」  https://adtech.cyberagent.io/techblog/archives/3353

  25. 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
  26. 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 の監視をしたいとき サービスディスカバリによる自動判別!
  27. コンテナの世界に限って言えば、 プロセス監視しなきゃ! は必要ないと思います。

  28. プロセス監視については readiness / liveness prove を 使いましょう

  29. ちなみに 将来的には Service Mesh のグラフ化も欲しいなと思ったり auto_conf が Docker イメージ名以外で出来たら嬉しい

  30. 弊社のオンプレコンテナ基盤でも利用中! 「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