コンテナモニタ方式cAdvisor+Elasticsearch

4861 ワード

コンテナモニタ方式cAdvisor+Elasticsearch
要旨:本文はオリジナルに属して、転載を歓迎して、転載して出典を保留してください:https://github.com/jasonGeng88/blog
現在の環境
  • docker 1.12.1
  • centos 7

  • 前言
    マイクロサービスとは?マイクロサービスがもたらすメリットは?さぞ皆さんはよく知っていると思います.しかし、本当の実践では、いろいろな挑戦があります.今日は、サービスコンテナ化シーンにおけるサービスモニタリングの問題についてお話ししたいと思います.
    従来のサービスモニタリングは、一般的にホストに対して行われており、CPU、メモリ、プロセス数、IOなどのモニタリングがある.これらの指標は非常に全面的で、ホストの健康状況にもよく反応することができます.しかし、サービスコンテナ化の場面では、力不足になっているようだ.1台のホストにn個のコンテナがあり、各コンテナにはCPU、メモリなどのリソースが独立して割り当てられます.ホストのみを監視する場合は、あまり効果的ではない可能性があります.
    コンテナ化された導入はdockerテクノロジーを採用しているので、dockerに対して一連のサービスモニタリングを行い、モニタリングされたデータを既存のログセンター(ELK)に統合します.
    ログセンターの構築について、興味のあるのは私が前に書いた「ELK+Filebeatに基づいてログセンターを構築する」という記事を見ることができます.
    dockerコンテナモニタ
    cAdvisorの紹介
    dockerのモニタリングについては、GoogleがオープンソースのモニタリングツールcAdvisorを採用しています.主な理由は次のとおりです.
  • はdocker容器に原生のサポートを提供した.
  • 開梱即用の特性は、導入コストを削減した.
  • は、自身が簡単な可視化インタフェースを提供するほか、ES(Elasticsearch)、kafka、InfluxDBなどの外部記憶の拡張を提供する.

  • GoogleのcAdvisor(Container Advisor)「実行時のコンテナリソースの使用とパフォーマンスの特徴をコンテナユーザーに理解する方法を提供した」.cAdvisorのコンテナ抽象はGoogleのlmctfyコンテナスタックに基づいているため、Dockerコンテナをオリジナルでサポートし、他のコンテナタイプを「開梱即用」にサポートすることができる.cAdvisorは、実行中のコンテナの情報を収集、集約、処理、エクスポートする実行中のdaemonとして配備されます.これらの情報は、コンテナレベルのリソース分離パラメータ、リソースの履歴使用状況、リソース使用およびネットワーク統計データの完全な履歴状況を反映する柱状図を含むことができる.
    cAdvisorの導入
    cAdvisor自体もコンテナ化されているため、導入は極めて簡単です.docker-daemonが実行されているホストで、次のコマンドを実行するだけです.
      docker run \
    --volume=/:/rootfs:ro \
    --volume=/var/run:/var/run:rw \
    --volume=/sys:/sys:ro \
    --volume=/var/lib/docker/:/var/lib/docker:ro \
    --publish=8080:8080 \
    --detach=true \
    --name=cadvisor \
    google/cadvisor:latest

    cAdvisor

    , , , CPU、 、 IO、 IO 。

    cAdvisor

    , 。 cAdvisor, ( ):

    -allow_dynamic_housekeeping true , 。 false, , 。
    -global_housekeeping_interval 1m0s cAdvisor , 。
    -housekeeping_interval 1s
    -machine_id_file /etc/machine-id,/var/lib/dbus/machine-id ID , , , ,
    -storage_duration 2m0s
    -storage_driver Empty(none) , : , bigquery, ES, influxdb, kafka, redis, statsd, stdout。

    cAdvisor

    ,cAdvisor , , 。 , , 。 , 。

    ,cAdvisor docker , 。 , ELK 。

    (ELK)

    , ES , cAdvisor ELK 。 , , 。

    ,cAdvisor , docker , ,push ES 。 Machine ID , 。

    cAdvisor ES 5

    ES , 。 ES 5.0+, 。 cAdvisor ES 2 。 Github : https://github.com/google/cadvisor/pull/1597。

    。 , ES 5 , , ES 2, 。 , , ES 5 , build cadvisor 。 , cadvisor , ES 5 ( ES 5 , )。

    , build cadvisor , : https://github.com/jasonGeng88/cadvisor/releases/download/es5/cadvisor

      docker run \
    --volume=/:/rootfs:ro \
    --volume=/var/run:/var/run:rw \
    --volume=/sys:/sys:ro \
    --volume=/var/lib/docker/:/var/lib/docker:ro \
    --volume=$YOUR_PATH/cadvisor:/usr/bin/cadvisor \
    --publish=8080:8080 \
    --detach=true \
    --name=cadvisor \
    google/cadvisor:latest \
    -storage_driver=elasticsearch.v5 \
    -storage_driver_es_index="cadvisor" \
    -storage_driver_es_host="http://$ELASTICSEARCH_IP:9200"

    Demo

    , “ ” cAdvisor , 。 , 、 。 , , cAdvisor ELK , , 。