问题标签 [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 投票
0 回答
116 浏览

kubernetes - 对于 prometheus 操作员中的所有 pod,container_fs_ 指标都将归零

我正在使用 stable/prometheus-operator 来监控 kubernetes 集群。但是所有 pod 的磁盘指标都显示为零。有什么办法可以解决这个问题。cadvisor 端点在 prometheus 中处于活动状态

普罗米修斯截图的图像

服务监视器配置

0 投票
1 回答
111 浏览

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 路径变得不可能。

那么在这种情况下,最佳实践是什么?

我有一些想法,但我不确定哪个是最好的。

  1. 按 nvml 路径划分服务器,一个集群中的所有服务器使用相同的 nvml 库版本。

2.在每台服务器上创建一个软链接,将 /usr/lib/nvidia-418/* 链接到 /usr/lib/nvmlpath 。

3.在 cadvisor 启动之前添加一个 init 作业,在作业中创建软链接。但我不确定它是否会起作用。

4.添加一个cadvisor的sidecar创建软链接,但不能保证在cadvisor得到nvml路径之前sidecar完成。

  1. 基于cadvisor搭建docker镜像,在CMD中添加软链接进程。
0 投票
1 回答
1667 浏览

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 关闭验证

但是在文档或谷歌的任何地方都没有关于这些必填字段的信息:(

0 投票
2 回答
404 浏览

cadvisor - cadvisor - 如何减少日志数量

我们喜欢“顾问”进行监控。

如何提高日志记录级别以便记录更少的数据?

我阅读了有关“-v=0”命令参数的信息,但找不到进一步的文档。

0 投票
2 回答
2080 浏览

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 的百分比值。如果这是预期的差异,这种差异代表什么?

0 投票
1 回答
811 浏览

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. enter image description here

0 投票
1 回答
1336 浏览

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 被刮掉了。有什么建议么?

0 投票
1 回答
459 浏览

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 配置:

0 投票
0 回答
689 浏览

monitoring - Prometheus CPU 使用率直方图指标

我的目标是在服务器及其运行的 docker 容器上使用 Prometheus 观察指标(如 CPU、内存使用情况等)。在发送警报之前,我想将这些指标的某些值与例如 0.95 分位数进行比较。然而,经过数周的互联网搜索,我仍然难以为某些分位数创建指标。因此,我在此线程中向您寻求帮助/建议,如何为某些指标创建分位数。

背景

代码库是docprom存储库的一个分支。此代码依赖 Prometheus 进行监控。cAdvisorPrometheus 从正在运行的容器中检索其数据。提供的 cAdvisor for Prometheus 指标可以在下一页看到。但是,它仅提供GaugeCounter度量类型。在我的研究过程中,我无法找到可以修改/扩展那些提供的指标的参数。

问题

根据我目前的理解,度量类型应该是aHistogramSummary为了观察分位数。histogram_quantile对 cAdvisor 提供的指标使用查询的最佳方法是什么?

我目前的想法是

  1. 创建自定义服务器
  2. 从 Prometheus 获取所需的数据
  3. 计算所需数据
  4. 将其作为服务器的指标提供,以便 Prometheus 可以抓取它
  5. 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

创建所需分位数的最佳方法是什么?我是在正确的道路上还是我在这里错过了一些简单的东西?因为它看起来对我来说太难了,无法获得一个带有分位数的简单查询。

我感谢所有帮助和信息。

0 投票
2 回答
2373 浏览

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_usageorcontainer_memory_usage时,没有数据。
  • 我在普罗米修斯中的 cadvisor 刮作业配置

抄自 prometheus/docs/examples。

我在路径和抓取配置上尝试了一大堆不同的变体,但没有运气。基于我可以使用kubectl get(它们存在)查询指标的事实,在我看来问题是普罗米修斯与 cadvisor 目标进行通信。

如果有人有配置此配置的经验,我肯定会感谢一些调试帮助。

干杯