问题标签 [cadvisor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
40 浏览

docker - latest_usage.cpu 的单位是什么?

我想获得我的 docker-containers 的 cpu 使用率指标。因此我消费

响应看起来像

我的想法是使用latest_usage.cpu. 但是这个领域的单位是什么?百分?

这个字段是监控 CPU 使用率的正确选择吗?

0 投票
2 回答
1113 浏览

docker - Openshift 监控 - cAdvisor + Prometheus - Docker

我尝试实现基于 Prometheus + node-exporter + grafana + cAdvisor 的 Openshift 集群监控解决方案。

我对 cAdvisor 组件有很大的问题。我做了很多配置(更改总是与卷有关),但它们都不能很好地工作,容器每 2 分钟重新启动一次,或者不收集所有数据指标(进程)

配置示例(使用此配置容器不会每 2 分钟重新启动一次,但不会收集进程)我知道,我的卷中没有 /rootfs,但是使用此容器可以像 5s 一样工作并且出现故障:

我在我的操作系统项目中使用具有 scc 特权的服务帐户。

  • Openshift 版本 - 3.6
  • 码头工人版本 - 1.12
  • cAdvisor 版本 - 我尝试了从 v0.26.3 到最新的每一个

我发现一个帖子说问题可能是旧版本的 od docker,有人可以确认吗?

也许有人做了正确的配置并在 Openshift 上实施 cAdvisor?


日志示例:

0 投票
1 回答
76 浏览

kubernetes - 来自 cAdvisor 的 Kubernetes 配额限制输入

Kubernetes 使用 cAdvisor 来监控 CPU、内存等的 Pod 使用情况。在观察中,它出来了 cAdvisor 报告 RAM,这不仅仅是这里报告的热和冷 RAM:https ://github.com/google/cadvisor/issues/913 .

问题在于 kubernetes 使用相同的方法来实现配额的硬限制并带来我们的 POD,因为它超过了内存消耗。这是一个问题,因为 POD 内的 docker 实际上并没有消耗报告的内存。这可以使用 docker stats 进行验证。

有没有办法解决这个问题?我们希望我们的 pod 仅在它们实际消耗更多内存时才会关闭。

0 投票
2 回答
3544 浏览

linux - cAdvisor 不显示所有容器的正常运行时间(Prometheus+cAdvisor+Grafana)

环境:

  • Linux (Redhat7)
  • 部署的 docker(cAdvisor、Prometheus、Grafana)
  • cAdvisor 收集指标 > 传递给 Prometheus > 使用 Grafana 显示
  • Apache反向代理在环境中(因此没有直接连接特定端口)

问题:

  • cAdvisor 不显示所有容器的正常运行时间
  • Grafana 不显示 Prometheus 和 Grafana 容器的正常运行时间
  • 仅显示 cAdvisor 容器的正常运行时间

我有什么(问题): 在此处输入图像描述 在此处输入图像描述

我想拥有的: 在此处输入图像描述

普罗米修斯中的设置: 在此处输入图像描述 在此处输入图像描述

运行 cAdvisor 的命令:

sudo docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/var/lib/docker/:/var/lib/docker:ro --卷=/dev/disk/:/dev/disk:ro --publish=8080:8080 --name=cadvisor --detach=true --privileged=true --volume=/cgroup:/cgroup:ro --network =docker8443 --ip=172.28.5.201 google/cadvisor:最新

问题:

  • Prometheus 目标中是否缺少显示所有容器正常运行时间的内容?
  • cAdvisor 设置中是否缺少某些内容?
  • 图表查询不正确?(我试过关注,但它显示“无数据点”) 在此处输入图像描述
0 投票
2 回答
10432 浏览

docker - 内存使用差异:cgroup memory.usage_in_bytes 与 Docker 容器内的 RSS

“Kubernetes”(v1.10.2)说我的 pod(包含一个容器)正在使用大约 5GB 内存。在容器内部,RSS 更像是 681MiB。任何小马都可以用以下数据解释如何从 681MiB 到 5GB(或者描述如何用我省略的另一个命令来弥补差异,无论是来自容器还是来自在 kubernetes 中运行此容器的 docker 主机)?

kubectl top pods 说 5GB:

Cadvisor 报告了类似的数字(可能来自略有不同的时间,因此请忽略细微差异):

在容器内,此文件似乎是 cadvisor 获取其数据的位置:

容器内的驻留集大小 (RSS) 不匹配(小于 1GB):

完整的 ps aux 以防万一:

来自 docker 容器统计 API 的内存部分:

https://github.com/google/cadvisor/issues/638的评论断言:

总计 (memory.usage_in_bytes) = rss + 缓存

https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt说:

usage_in_bytes:为了效率,内存cgroup和其他内核组件一样,使用了一些优化来避免不必要的cacheline错误共享。usage_in_bytes 受该方法的影响,并且不显示内存(和交换)使用的“确切”值,它是用于有效访问的模糊值。(当然,必要时,它是同步的。)如果你想知道更准确的内存使用情况,你应该使用memory.stat中的RSS+CACHE(+SWAP)值(见5.2)。

https://docs.docker.com/engine/reference/commandline/stats/#parent-command说:

注意:在 Linux 上,Docker CLI 通过从总内存使用量中减去页面缓存使用量来报告内存使用量。API 不执行这样的计算,而是提供总内存使用量和页面缓存的数量,以便客户端可以根据需要使用数据。

实际上,容器中 /sys/fs/cgroup/memory/memory.stat 中的大部分内容都显示在上述 docker stats api 响应中(略有不同是因为在不同时间采集样本,抱歉):

内存信息来自kubectl describe pod <pod>

这是pmap容器内的内容。在这个单行中,我获取所有进程 ID,在它们上运行 pmap -x,然后从 pmap 结果中提取 Kbytes 列。总结果是 256 兆字节(比 ps 的 RSS 少得多,我认为部分原因是因为许多进程没有从 pmap -x 返回任何输出):

ps_mem.pyhttps://stackoverflow.com/a/133444/6090676中提到。它检查/proc/$pid/statm/proc/$pid/smaps。这里没有照明(再次,它似乎忽略了一些过程):

在Incorrect reporting of container memory usage by cadvisor 中还有另一个与此类似的问题(但信息较少)。谢谢!

0 投票
0 回答
667 浏览

docker - “cAdvisor”不允许删除其他容器

我已经安装了“cAdvisor”来监控主机上的容器,现在每当我尝试停止并删除任何其他容器时,cAdvisor 都不允许删除其他容器。

当我停止 cAdvisor 时,它允许我移除容器。

我参考了这个 github 问题,但没有帮助https://github.com/moby/moby/issues/34198。还对此进行了进一步搜索,是否有任何永久修复此问题的方法。

1) container/container-abc 正在使用以下命令生成。

2)我正在使用docker-compose for cadvisor,下面是docker compose的内容。

3) 下面是 docker info 命令。

提前致谢。

0 投票
2 回答
1206 浏览

docker - AlertManager - 容器警报未返回其运行的主机名

我面临一个问题,当我收到警报时,我在 alert_rules.yml 中使用以下规则,它不返回容器运行的主机名。如何实现返回主机名而不是节点 ID?

我尝试使用 container_label_com_docker_swarm_node_name 而不是 container_label_com_docker_swarm_node_id 但不起作用。

有什么建议么 ?

0 投票
2 回答
285 浏览

performance - 如何在 cAdvisor 中将 CPU 负载聚合减少到 1 秒而不是 10 秒?

我正在使用 Kubernetes 最新版本(多节点集群上的裸机),我可以使用 Kubernetes 指标 API 获取 cAdivsor 指标。我可以看到 cAdvisor 提供container_cpu_load_average_10s的度量标准,从它的名字看,它是 10 秒内 CPU 负载的聚合。

有什么办法可以将这个aggregation/granularity时间减少到1s?(有类似的东西container_cpu_load_average_1s

PS:我正在使用的 API Endpoint 是https://<my_k8s_ip>:6443/api/v1/nodes/kubernetes3/proxy/metrics/cadvisor

更新:我只是发现有一个--housekeeping_interval参数,但需要确定它是否是要走的路,如果是,那么我该如何在我当前的 Kubernetes 部署中更改它。任何建议将不胜感激。

0 投票
1 回答
414 浏览

kubernetes - cgroup 中的 CPU 负载度量单位是什么(CPU 使用率和 CPU 负载之间的差异)?

在我的 Kubernetes 安装中,我可以看到 cAdvisor 为每个 pod/容器报告了一个名为“container_cpu_load_average_10s”的测量值。我得到诸如 232、6512 等值。

那么,这里 CPU 负载的度量单位是什么?对我来说,“CPU Load”和“CPU Usage”可以互换使用,所以我不明白为什么它不是 [0-100] 之间的值?

更新

在这里,我将 cAdvisor 日志中的相关行:

0 投票
1 回答
4325 浏览

monitoring - cAdvisor 显示的磁盘使用情况

按照指南,我设置了 cadvisor 来监控本地 docker 容器。Prometheus 正在抓取 cAdvisor 以获取在 Grafana 中可视化的数据。

我正在尝试获取主机上运行的所有 docker 容器的磁盘使用情况。我想获得类似于运行后显示的输出

Grafana 用于可视化数据。为了获取磁盘使用情况,我正在运行以下查询以从 Prometheus 获取数据。

格拉法纳截图

问题是我得到的值是覆盖文件系统的全部值(82GB)。

以下有关文件系统使用的行显示在 cAdvisor (127.0.0.1/metrics) 中

这是主机上df -h的输出

如何从 cAdvisor 在 Grafana 中获得与 docker system df返回的值相同的值 ?