$30 off During Our Annual Pro Sale. View Details »

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. Containerの監視について
    CA Base 公式勉強会
    Datadog 勉強会 Part 2 (2018/12/14)
    青山 真也
    アドテク本部 Central Infrastructure Agency

    View Slide

  2. 青山 真也 (Masaya Aoyama)
    @amsy810
    普段の主な仕事↓
    世界で 138 番目
    https://adtech.cyberagent.io/techblog/
    archives/3086

    View Slide

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

    View Slide

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

    View Slide

  5. View Slide

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

    View Slide

  7. View Slide

  8. View Slide

  9. View Slide

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

    View Slide

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

    View Slide

  12. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. コンテナ監視 on Docker
    コンテナからホスト上の proc, cgroupsや docker からメトリクスを収集
    ● /proc/*
    ● /sys/fs/cgroup/*
    ● /var/run/docker.sock
    環境変数として ServiceDiscovery の設定・タグ・API Key の設定を埋め込む

    View Slide

  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

    View Slide

  18. コンテナ監視 on Kubernetes
    Kubernetes の監視を行なう場合、上記の Docker 監視に + αで設定が必要…

    View Slide

  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

    View Slide

  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

    View Slide

  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 と合わせて一発でインストール可能

    View Slide

  22. kube-state-metrics による Cluster Level メトリクス

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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 の監視をしたいとき
    サービスディスカバリによる自動判別!

    View Slide

  27. コンテナの世界に限って言えば、
    プロセス監視しなきゃ!
    は必要ないと思います。

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide