Cadvisorによるコンテナの監視
10025 ワード
CAdvisorを使用した監視は、ホスト上で実行されている個々のDockerコンテナに関する情報を収集することができます.
cAdvisor (“Container Advisor”)は、コンテナのリソース使用量とパフォーマンスに関するデータを収集するデーモンです.
コンテナ使用量測定に加えて、CAdvisorはまた、アプリケーションからメトリクスを収集することができます.アプリケーションが既にメトリクスを生成している場合は、エンドポイントをscrapeするためにcadviserを設定し、どのメトリックを抽出したいかを指定できます.
CAdvisorも内蔵UIを備え、また、別のストレージドライバプラグインに収集されたデータをエクスポートすることができます.
たとえば、収集したデータをエクスポートできます. Prometheus StatsD ElasticSearch BigQuery InfluxDB Kafka または標準的に 最も簡単な方法は、収集されるデータを参照してください.
場合は、すべてのそれらのボリュームを疑問に思っている.CedAdsorがそれらからすべてのデータを分析することができるように、これらはCedvisorイメージの中にマウントする必要があるフォルダです.
CAdvisorが実行されると、同じホスト上で動作するすべてのコンテナに関するデータが収集されます.注意options you can set コンテナの監視を制限する.
CAdvisorはKubeletバイナリと統合され、それは上でメトリックを公開します
したがって、我々はKerbernetesクラスタにCedAdsorを明示的にインストールする必要はありません.
以下に例を示します
を作成しましょう
デフォルトでは、Prometheus メトリック
使いましょうPrometheus Operator プロメテウスをKubernetesにインストールする.PromeTheus、Grafana、Alert Managerを含む完全な監視バンドルをインストールします.
クローニングによって
Grafanaは、
ダッシュボードは、Kubernetesリソースに関する情報を表示します-メモリ使用量、CPUの使用量、クォータなど.これらのメトリックはnode-exporter コンポーネント.
Caddenerがコンテナに関するメトリックを集めている間、ノード輸出者はPrometheusにハードウェアとOSメトリクスを輸出します.
CavipsorメトリクスをGrafanaに取り込むには、Kubernetes cluster monitoring (via Prometheus) Grafanaからのダッシュボード.
ダッシュボードのインストールは簡単です. Grafanaで、サイドバーの「+」ボタンに行きなさい. 「インポート」をクリックします. IDテキストフィールドにダッシュボードIDを貼り付けます Loadボタンをクリックします. プロメテウスドロップダウンリストから「prometheus」を選択します. インポートボタンをクリックします.
Grafanaがダッシュボードをインポートすると、自動的に開きます.ダッシュボードは、CPUとメモリ使用量と各特定のコンテナについての詳細なメトリクスについての高レベルのメトリクスを備えています.
次のステップとして、Grafanaで表示されているグラフとデータをよく理解し、それらを読む方法を学びます.どのメトリックとダッシュボードがあなたとあなたのシステムにとって価値があるかについて突き止めてください.
したら、それを決定した場合は、警告を設定することがあります.プロメテウス演算子はAlert manager . アラートマネージャを使用することができますし、特定のメトリックが定義された閾値内にないときに警告を送信するように構成します.たとえば、通知を送信するシステムを設定できますPagerDuty クラスタメモリまたはCPU使用がある閾値以上であるときはいつでも.
cAdvisor Prometheus operator Node exporter Alert manager Grafana PagerDuty
cAdvisor (“Container Advisor”)は、コンテナのリソース使用量とパフォーマンスに関するデータを収集するデーモンです.
コンテナ使用量測定に加えて、CAdvisorはまた、アプリケーションからメトリクスを収集することができます.アプリケーションが既にメトリクスを生成している場合は、エンドポイントをscrapeするためにcadviserを設定し、どのメトリックを抽出したいかを指定できます.
CAdvisorも内蔵UIを備え、また、別のストレージドライバプラグインに収集されたデータをエクスポートすることができます.
たとえば、収集したデータをエクスポートできます.
sudo docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
--privileged \
--device=/dev/kmsg \
gcr.io/cadvisor/cadvisor:v0.37.5
The latest version of cAdvisor at the time of writing this was v0.37.5. Make sure you're always using the latest bits.
場合は、すべてのそれらのボリュームを疑問に思っている.CedAdsorがそれらからすべてのデータを分析することができるように、これらはCedvisorイメージの中にマウントする必要があるフォルダです.
CAdvisorが実行されると、同じホスト上で動作するすべてのコンテナに関するデータが収集されます.注意options you can set コンテナの監視を制限する.
KerbernetesにおけるCadvisorの実行
CAdvisorはKubeletバイナリと統合され、それは上でメトリックを公開します
/metrics/cadvisor
エンドポイント.したがって、我々はKerbernetesクラスタにCedAdsorを明示的にインストールする必要はありません.
以下に例を示します
kubectl
クラスタノードのメトリクスとpodメトリックを取得するには、次の手順に従います.$ kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes/[node-name]
{
"kind": "NodeMetrics",
"apiVersion": "metrics.k8s.io/v1beta1",
"metadata": {
"name": "[node-name]",
"selfLink": "/apis/metrics.k8s.io/v1beta1/nodes/[node-name]]",
"creationTimestamp": "2021-08-26T22:12:26Z"
},
"timestamp": "2021-08-26T22:11:53Z",
"window": "30s",
"usage": {
"cpu": "39840075n",
"memory": "487200Ki"
}
}
同様に、次のURLを使用できます/apis/metrics.k8s.io/v1beta1/namespaces/<NAMESPACE>/pods/<POD_NAME>
特定のポッドに関するメトリクスを取得するには.を作成しましょう
httpbin
展開:kubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/httpbin/httpbin.yaml
HttpBine podからメトリックを取得するには、以下のコマンドを実行します( POD名をクラスタで実行しているpodの名前に置き換えてください)$ kubectl get --raw /apis/metrics.k8s.io/v1beta1/namespaces/default/pods/httpbin-74fb669cc6-xs74p
{
"kind": "PodMetrics",
"apiVersion": "metrics.k8s.io/v1beta1",
"metadata": {
"name": "httpbin-74fb669cc6-xs74p",
"namespace": "default",
"selfLink": "/apis/metrics.k8s.io/v1beta1/namespaces/default/pods/httpbin-74fb669cc6-xs74p",
"creationTimestamp": "2021-08-26T22:15:40Z"
},
"timestamp": "2021-08-26T22:15:16Z",
"window": "30s",
"containers": [
{
"name": "httpbin",
"usage": {
"cpu": "316267n",
"memory": "38496Ki"
}
}
]
}
プロヴァテウスとグラファナへのCivisorの接続
デフォルトでは、Prometheus メトリック
/metrics
エンドポイント.# HELP cadvisor_version_info A metric with a constant '1' value labeled by kernel version, OS version, docker version, cadvisor version & cadvisor revision.
# TYPE cadvisor_version_info gauge
cadvisor_version_info{cadvisorRevision="de117632",cadvisorVersion="v0.39.0",dockerVersion="20.10.3",kernelVersion="5.4.104+",osVersion="Alpine Linux v3.12"} 1
# HELP container_blkio_device_usage_total Blkio Device bytes usage
# TYPE container_blkio_device_usage_total counter
container_blkio_device_usage_total{container_env_ARG1="",container_env_ARG2="",container_env_CADVISOR_HEALTHCHECK_URL="",container_env_DEFAULT_HTTP_BACKEND_PORT="",container_env_DEFAULT_HTTP_BACKEND_PORT_80_TCP="",container_env_DEFAULT_HTTP_BACKEND_PORT_80_TCP_ADDR="",container_env_DEFAULT_HTTP_BACKEND_PORT_80_TCP_PORT="",container_env_DEFAULT_HTTP_BACKEND_PORT_80_TCP_PROTO="",
...
メトリックは既にprometheus形式であり、cAdvisorはよく知られているエンドポイントで自動的にエクスポートしますので、既存のCadisor展開を変更する必要はありません.代わりに、プロメテウスをインストールして設定することができます/metrics
エンドポイント.プロメテウスのKubernetesへのインストール
使いましょうPrometheus Operator プロメテウスをKubernetesにインストールする.PromeTheus、Grafana、Alert Managerを含む完全な監視バンドルをインストールします.
クローニングによって
kube-prometheus
リポジトリgit clone https://github.com/prometheus-operator/kube-prometheus.git
では、kube-prometheus
フォルダを作成し、最初にcrdsを展開します.kubectl apply -f manifests/setup
crdsが適用されるのを待ち、配備を作成します.kubectl apply -f manifests/
一旦すべてを展開したらkubectl get pod -A
すべてのポッドを確認して実行するには、Prometheus UIを開くことができます.kubectl port-forward svc/prometheus-k8s 9090 -n monitoring
あなたが開くならばhttp://localhost:9090
, これで、任意のメトリックのcAdvisorによって収集されたクエリをすることができますcontainer_*
下記の図に示すように.グラファナダッシュボード
Grafanaは、
kube-prometheus
演算子.ポートフォワーディングでGrafana UIをポート3000に開くことができます.kubectl port-forward svc/grafana 5000:3000 -n monitoring
あなたがグラファナを開くならばhttp://localhost:5000
あなたは、すでに作成されたダッシュボードのセットがすでにあることに気がつきますkube-prometheus
演算子.ダッシュボードは、Kubernetesリソースに関する情報を表示します-メモリ使用量、CPUの使用量、クォータなど.これらのメトリックはnode-exporter コンポーネント.
Caddenerがコンテナに関するメトリックを集めている間、ノード輸出者はPrometheusにハードウェアとOSメトリクスを輸出します.
CavipsorメトリクスをGrafanaに取り込むには、Kubernetes cluster monitoring (via Prometheus) Grafanaからのダッシュボード.
ダッシュボードのインストールは簡単です.
Grafanaがダッシュボードをインポートすると、自動的に開きます.ダッシュボードは、CPUとメモリ使用量と各特定のコンテナについての詳細なメトリクスについての高レベルのメトリクスを備えています.
次は何ですか。
次のステップとして、Grafanaで表示されているグラフとデータをよく理解し、それらを読む方法を学びます.どのメトリックとダッシュボードがあなたとあなたのシステムにとって価値があるかについて突き止めてください.
したら、それを決定した場合は、警告を設定することがあります.プロメテウス演算子はAlert manager . アラートマネージャを使用することができますし、特定のメトリックが定義された閾値内にないときに警告を送信するように構成します.たとえば、通知を送信するシステムを設定できますPagerDuty クラスタメモリまたはCPU使用がある閾値以上であるときはいつでも.
資源
Reference
この問題について(Cadvisorによるコンテナの監視), 我々は、より多くの情報をここで見つけました https://dev.to/peterj/monitoring-containers-with-cadvisor-50bdテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol