コンテナモニタ方式cAdvisor+Elasticsearch
要旨:本文はオリジナルに属して、転載を歓迎して、転載して出典を保留してください:https://github.com/jasonGeng88/blog
現在の環境
前言
マイクロサービスとは?マイクロサービスがもたらすメリットは?さぞ皆さんはよく知っていると思います.しかし、本当の実践では、いろいろな挑戦があります.今日は、サービスコンテナ化シーンにおけるサービスモニタリングの問題についてお話ししたいと思います.
従来のサービスモニタリングは、一般的にホストに対して行われており、CPU、メモリ、プロセス数、IOなどのモニタリングがある.これらの指標は非常に全面的で、ホストの健康状況にもよく反応することができます.しかし、サービスコンテナ化の場面では、力不足になっているようだ.1台のホストにn個のコンテナがあり、各コンテナにはCPU、メモリなどのリソースが独立して割り当てられます.ホストのみを監視する場合は、あまり効果的ではない可能性があります.
コンテナ化された導入はdockerテクノロジーを採用しているので、dockerに対して一連のサービスモニタリングを行い、モニタリングされたデータを既存のログセンター(ELK)に統合します.
ログセンターの構築について、興味のあるのは私が前に書いた「ELK+Filebeatに基づいてログセンターを構築する」という記事を見ることができます.
dockerコンテナモニタ
cAdvisorの紹介
dockerのモニタリングについては、GoogleがオープンソースのモニタリングツールcAdvisorを採用しています.主な理由は次のとおりです.
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 , , 。