问题标签 [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.
kubernetes - 对于 prometheus 操作员中的所有 pod,container_fs_ 指标都将归零
我正在使用 stable/prometheus-operator 来监控 kubernetes 集群。但是所有 pod 的磁盘指标都显示为零。有什么办法可以解决这个问题。cadvisor 端点在 prometheus 中处于活动状态
服务监视器配置
kubernetes - 使用 cadvisor 监视具有不同 gpu 驱动程序的服务器的最佳实践是什么
为了使用 cadvisor 监控 pod gpu 使用情况,我们需要将 NVML 库路径(例如 /usr/lib/nvidia-418)的访问权限挂载到 cadvisor。
目前,我在 k8s 集群上创建了一个 daemonset 来在每个节点上部署 cadvisor。
但是,我需要支持多个版本的 NVML 库路径。例如,一些服务器使用 /usr/lib/nvidia-418,而其他服务器使用 /usr/lib/nvidia-410。直接指定 nvml 路径变得不可能。
那么在这种情况下,最佳实践是什么?
我有一些想法,但我不确定哪个是最好的。
- 按 nvml 路径划分服务器,一个集群中的所有服务器使用相同的 nvml 库版本。
2.在每台服务器上创建一个软链接,将 /usr/lib/nvidia-418/* 链接到 /usr/lib/nvmlpath 。
3.在 cadvisor 启动之前添加一个 init 作业,在作业中创建软链接。但我不确定它是否会起作用。
4.添加一个cadvisor的sidecar创建软链接,但不能保证在cadvisor得到nvml路径之前sidecar完成。
- 基于cadvisor搭建docker镜像,在CMD中添加软链接进程。
kubernetes - DaemonSet 中缺少必填字段
我正在尝试遵循此文档https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/在 Kubernetes 集群上运行 Cadvisor
yaml文件内容如下:
但是当我尝试部署它时:
我得到输出+错误:
错误:验证“cadvisor.daemonset.yaml”时出错:验证数据时出错:[ValidationError(DaemonSet.status):io.k8s.api.apps.v1.DaemonSetStatus 中缺少必填字段“currentNumberScheduled”,ValidationError(DaemonSet.status):在 io.k8s.api.apps.v1.DaemonSetStatus 中缺少必填字段“numberMisscheduled”,ValidationError(DaemonSet.status):在 io.k8s.api.apps.v1.DaemonSetStatus 中缺少必填字段“desiredNumberScheduled”,ValidationError(DaemonSet.status ): io.k8s.api.apps.v1.DaemonSetStatus 中缺少必填字段“numberReady”];如果您选择忽略这些错误,请使用 --validate=false 关闭验证
但是在文档或谷歌的任何地方都没有关于这些必填字段的信息:(
cadvisor - cadvisor - 如何减少日志数量
我们喜欢“顾问”进行监控。
如何提高日志记录级别以便记录更少的数据?
我阅读了有关“-v=0”命令参数的信息,但找不到进一步的文档。
prometheus - PromQL 正确获取 CPU 使用百分比
我正在努力理解有关 cAdvisor 指标(被 Prometheus 抓取时)的一些概念,特别是 cpu 使用指标。
它提供了以下三种有关 CPU 使用率的指标类型:
- container_cpu_system_seconds_total:累计系统cpu时间
- 消耗的container_cpu_user_seconds_total:累计用户cpu时间
- 消耗的container_cpu_usage:累计使用cpu时间消耗
当我计算它们的速率时,我想得到相应 CPU 的百分比(* 100)。例如,使用以下 PromQL:
sum by (pod) (container_cpu_usage_seconds_total)
但是,cpu_user 和 cpu_system 百分比值的总和不等于 cpu_usage 的百分比值。如果这是预期的差异,这种差异代表什么?
kubernetes - cAdvisor Prometheus container_cpu_load_average_10s has two values
I have a kubernetes cluster running on digital ocean that I want to monitor. When querying the exposed cAdvisor metrics on <apiserver>/api/v1/nodes/<nodename>/proxy/metrics/cadvisor
I get the following results for the container_cpu_load_average_10s
The metrics value is actually two values, the first is always 0 and then something in the area of 1579564906312.
I'm new to prometheus and I thought a metric can only have one value, but apparently cadvisor exposes two values. Is this a bug or something I don't know yet about prometheus? If it's not a bug how should I treat it, because the prometheus browser only shows the first value which is 0.
windows - 无法在 Windows Kubernetes 节点上获取 cAdvisor 容器指标
我已经配置了一个混合节点 Kubernetes 集群。两个工作节点是 Unbuntu Server 18.04.4,两个工作节点是 Windows Server 2019 Standard。我已经将几个 Docker 容器作为部署/pod 部署到每组工作节点(Ubuntu 上的 .NET Core 应用程序和 Windows 上的旧 WCF 应用程序)。一切似乎都像宣传的那样工作。
我现在正处于要监视 pod/容器的资源的地步。我已经部署了 Prometheus、kube-state-metrics、metrics-server。我有普罗米修斯刮节点。对于容器指标,kubelet/cAdvisor 正在从 Ubunutu 节点返回我需要的所有内容,例如“container_cpu_usage_seconds_total、container_cpu_cfs_throttled_seconds_total 等”。但是 Windows 节点的 kubelet/cAdvisor 只给了我一些基本信息:
因此,虽然 Ubuntu 节点上的 cAdvisor 为我提供了我想要的关于容器的一切以及更多,但 Windows 节点上的 cAdvisor 只给了我上述内容。
我已经检查了在 Windows 节点上安装/配置 kubelet 的 Powershell 脚本,但是如果我缺少一个可以使容器指标在kubelet/cAdvisor 被刮掉了。有什么建议么?
docker - 如何启用默认的主 kubelet cadvisor 也可以收集所有系统服务性能指标..?
我有一个部署了 k8s v1.16.2 的虚拟机,并且在它之上运行了 prometheus 和 grafana 服务。在 grafana 仪表板上,我能够看到所有容器和 Pod 的性能指标,但对于系统服务只有 docker 和 kubelet,为什么它不显示直接在机器上运行的其他服务指标。
默认情况下,kubelet 是否有任何配置设置为 cadvisor 来限制收集系统服务指标..? 因为使用 kubelet v1.13.1 版本,我能够看到系统服务指标。
如何通过 kubelet 的 cadvisor 获取在 system.slice 下运行的所有服务指标..?
通过验证:
- 直接命中 Prometheus 端点。
- 直接尝试了cadvisor端点(k8s暴露端点):/api/v1/nodes/HOSTNAME/proxy/metrics/cadvisor
在两个端点结果上,除了 docker 和 kubelet 之外,我没有看到任何系统服务指标
版本:
- 码头工人:18.09.6,
- Kubelet:v1.16.2,
- CGroup 驱动程序:systemd
下面是 Prometheus 配置:
monitoring - Prometheus CPU 使用率直方图指标
我的目标是在服务器及其运行的 docker 容器上使用 Prometheus 观察指标(如 CPU、内存使用情况等)。在发送警报之前,我想将这些指标的某些值与例如 0.95 分位数进行比较。然而,经过数周的互联网搜索,我仍然难以为某些分位数创建指标。因此,我在此线程中向您寻求帮助/建议,如何为某些指标创建分位数。
背景
代码库是docprom存储库的一个分支。此代码依赖 Prometheus 进行监控。cAdvisor
Prometheus 从正在运行的容器中检索其数据。提供的 cAdvisor for Prometheus 指标可以在下一页看到。但是,它仅提供Gauge
和Counter
度量类型。在我的研究过程中,我无法找到可以修改/扩展那些提供的指标的参数。
问题
根据我目前的理解,度量类型应该是aHistogram
或Summary
为了观察分位数。histogram_quantile
对 cAdvisor 提供的指标使用查询的最佳方法是什么?
我目前的想法是
- 创建自定义服务器
- 从 Prometheus 获取所需的数据
- 计算所需数据
- 将其作为服务器的指标提供,以便 Prometheus 可以抓取它
histogram_quantile
在自定义指标上运行
为了创建可与分位数一起使用的指标,这是正确的方法吗?
例如,如果某个容器的 CPU 使用率超过 0,95 分位数,我想发出警报。CPU 使用率的代码示例如下:
sum(rate(container_cpu_usage_seconds_total{name="CONTAINER_NAME"}[10m]))) / count(node_cpu_seconds_total{mode="system"}) * 100
创建所需分位数的最佳方法是什么?我是在正确的道路上还是我在这里错过了一些简单的东西?因为它看起来对我来说太难了,无法获得一个带有分位数的简单查询。
我感谢所有帮助和信息。
kubernetes - Prometheus 未从 GKE 中的 cadvisor 接收指标
嘿嘿,
我在 GKE v1.16.x 中使用 kubernetes 部署了 prometheus、grafana、kube-state-metrics、alertmanager 等设置。我使用https://github.com/do-community/doks-monitoring作为 yaml 文件的起点。
几天来,我一直在尝试调试情况,非常感谢您的帮助。我的普罗米修斯节点没有从 cadvisor 获得指标。
- 部署中的所有服务和 Pod 都在运行。prometheus、kube-state-metrics、node-exporter,都在运行——没有错误。
- prometheus UI 中的 cadvisor 目标显示为“向上”。
- Prometheus 能够从集群中收集其他指标,但没有 pod/容器级别的使用指标。
- 我查询时可以看到 cadvisor 指标
kubectl get --raw "/api/v1/nodes/<your_node>/proxy/metrics/cadvisor"
,但是当我在 prometheus 中查找container_cpu_usage
orcontainer_memory_usage
时,没有数据。 - 我在普罗米修斯中的 cadvisor 刮作业配置
抄自 prometheus/docs/examples。
我在路径和抓取配置上尝试了一大堆不同的变体,但没有运气。基于我可以使用kubectl get
(它们存在)查询指标的事实,在我看来问题是普罗米修斯与 cadvisor 目标进行通信。
如果有人有配置此配置的经验,我肯定会感谢一些调试帮助。
干杯