问题标签 [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.
docker - latest_usage.cpu 的单位是什么?
我想获得我的 docker-containers 的 cpu 使用率指标。因此我消费
响应看起来像
我的想法是使用latest_usage.cpu
. 但是这个领域的单位是什么?百分?
这个字段是监控 CPU 使用率的正确选择吗?
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?
日志示例:
kubernetes - 来自 cAdvisor 的 Kubernetes 配额限制输入
Kubernetes 使用 cAdvisor 来监控 CPU、内存等的 Pod 使用情况。在观察中,它出来了 cAdvisor 报告 RAM,这不仅仅是这里报告的热和冷 RAM:https ://github.com/google/cadvisor/issues/913 .
问题在于 kubernetes 使用相同的方法来实现配额的硬限制并带来我们的 POD,因为它超过了内存消耗。这是一个问题,因为 POD 内的 docker 实际上并没有消耗报告的内存。这可以使用 docker stats 进行验证。
有没有办法解决这个问题?我们希望我们的 pod 仅在它们实际消耗更多内存时才会关闭。
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:最新
问题:
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.py在https://stackoverflow.com/a/133444/6090676中提到。它检查/proc/$pid/statm
和/proc/$pid/smaps
。这里没有照明(再次,它似乎忽略了一些过程):
在Incorrect reporting of container memory usage by cadvisor 中还有另一个与此类似的问题(但信息较少)。谢谢!
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 命令。
提前致谢。
docker - AlertManager - 容器警报未返回其运行的主机名
我面临一个问题,当我收到警报时,我在 alert_rules.yml 中使用以下规则,它不返回容器运行的主机名。如何实现返回主机名而不是节点 ID?
我尝试使用 container_label_com_docker_swarm_node_name 而不是 container_label_com_docker_swarm_node_id 但不起作用。
有什么建议么 ?
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 部署中更改它。任何建议将不胜感激。
kubernetes - cgroup 中的 CPU 负载度量单位是什么(CPU 使用率和 CPU 负载之间的差异)?
在我的 Kubernetes 安装中,我可以看到 cAdvisor 为每个 pod/容器报告了一个名为“container_cpu_load_average_10s”的测量值。我得到诸如 232、6512 等值。
那么,这里 CPU 负载的度量单位是什么?对我来说,“CPU Load”和“CPU Usage”可以互换使用,所以我不明白为什么它不是 [0-100] 之间的值?
更新:
在这里,我将 cAdvisor 日志中的相关行:
monitoring - cAdvisor 显示的磁盘使用情况
按照本指南,我设置了 cadvisor 来监控本地 docker 容器。Prometheus 正在抓取 cAdvisor 以获取在 Grafana 中可视化的数据。
我正在尝试获取主机上运行的所有 docker 容器的磁盘使用情况。我想获得类似于运行后显示的输出
Grafana 用于可视化数据。为了获取磁盘使用情况,我正在运行以下查询以从 Prometheus 获取数据。
问题是我得到的值是覆盖文件系统的全部值(82GB)。
以下有关文件系统使用的行显示在 cAdvisor (127.0.0.1/metrics) 中
这是主机上df -h的输出
如何从 cAdvisor 在 Grafana 中获得与 docker system df返回的值相同的值 ?