将cAdvisor的度量指标存储到Prometheus中,并在Grafana中进行确认
cAdvisor是什么?
cAdvisor(容器顾问)是一个能够告诉运行中容器资源和性能状况的工具。
Kubernetes 对于成本高昂、难以引入的情况来说似乎非常有帮助。
在 Kubernetes 中,cAdvisor 已集成到 Kubelet 二进制文件中。也就是说,cAdvisor 作为 Kubelet 的一部分运行,收集 CPU、内存、文件系统和网络使用情况的统计信息。
cAdvisor安装
只需输入以下命令。
# docker run --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor:latest
Unable to find image 'google/cadvisor:latest' locally
latest: Pulling from google/cadvisor
ff3a5c916c92: Pull complete
44a45bb65cdf: Pull complete
0bbe1a2fe2a6: Pull complete
Digest: sha256:815386ebbe9a3490f38785ab11bda34ec8dacf4634af77b8912832d4f85dca04
Status: Downloaded newer image for google/cadvisor:latest
2bce8b923942a90d8114649d9067abd3daf476b0cec6e6bf4eb6512ade014ca7
让我们确认一下。
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2bce8b923942 google/cadvisor:latest "/usr/bin/cadvisor -…" 11 seconds ago Up 6 seconds 0.0.0.0:8080->8080/tcp
登录cAdvisor
连接到 http://[ip]:8080/containers/。
这个图形界面已经做得很好,甚至只用这一个选项就足够了。

以下是关于CPU的内容。

除此之外,您还可以查看内存和网络的使用率等信息。


与Prometheus进行合作
编辑设置文件
请在cAdvisor中添加以下部分:
[cAdvisor IP]是指cAdvisor所在服务器的IP地址。
如果进行了端口转发的修改,请同时修改端口。
# vi /etc/prometheus/prometheus.yml
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
- job_name: cadvisor
scrape_interval: 5s
static_configs:
- targets: ['<cAdvisor IP>:8080']
那么,让我们重新启动Prometheus去查看吧。
# systemctl restart prometheus
# systemctl status prometheus
普罗米修斯图形用户界面
选择执行execute,在确定cAdvisor的版本信息被输出的情况下进行确认。

由于这个解释还不够明确,所以我会接下来验证以下内容:容器内存使用字节数。

感觉这样子变得像样了。
Grafana 是一个可视化监控和分析平台。
在这里,让我们最后尝试使用Grafana来创建仪表盘。
从左侧的按钮中选择“仪表板”。

然后选择”添加查询”。
我要尝试使用之前使用的 `container_memory_usage_bytes` 指标。

让我给它加个标题吧。

我们重复这个步骤,并且展示各种不同的图表。
除了这些,还可以使用以下类似的指标。
-
- container_memory_usage_bytes
-
- container_memory_usage_bytes{name=”container name”}
-
- container_memory_working_set_bytes
-
- container_memory_rss
-
- container_memory_cache
-
- rate(container_cpu_usage_seconds_total{name=”container name”}[1m])
-
- rate(container_network_transmit_bytes_total[1m])
- rate(container_network_receive_bytes_total[1m])
因为还有很多,所以请尝试寻找能够获得自己想要的东西的衡量标准。