用prometheus监控docker – cpu使用情况对于不同的容器看起来是一样的

我的设置:

  • 普罗米修斯服务器
  • 2节点出口商
  • Grafana

泊坞窗,compose.yml

version: '2' services: prometheus_srv: build: ./prom_serv image: prom/prometheus container_name: prometheus_server hostname: prometheus_server prometheus_node: image: prom/node-exporter container_name: prom_node_exporter hostname: prom_node_exporter depends_on: - prometheus_srv prometheus_node2: image: prom/node-exporter container_name: prom_node_exporter2 hostname: prom_node_exporter2 depends_on: - prometheus_node grafana: image: grafana/grafana container_name: grafana_server hostname: grafana_server depends_on: - prometheus_node2 

Prometheus服务器的Dockerfile:

 FROM prom/prometheus ADD prometheus.yml /etc/prometheus/ 

prometheus.yml

 # Load and evaluate rules in this file eve scrape_configs: # Scrape Prometheus itself - job_name: 'prometheus' scrape_interval: 10s scrape_timeout: 10s static_configs: - targets: ['localhost:9090'] # Scrape the Node Exporter - job_name: 'node' scrape_interval: 10s static_configs: - targets: ['prom_node_exporter:9100'] # Scrape the Node Exporter2 - job_name: 'node2' scrape_interval: 10s static_configs: - targets: ['prom_node_exporter2:9100'] 

在Grafana中添加Prometheus数据源之后,我添加了一个带有2个CPU使用率图的新仪表板,每个节点导出器一个:

 100 - (avg by (instance) (irate(node_cpu{job="node",mode="idle"}[5m])) * 100) 100 - (avg by (instance) (irate(node_cpu{job="node2",mode="idle"}[5m])) * 100) 

并尝试生成一个CPU秒杀的第一个节点出口这样的:

 docker container exec -it prom_node_exporter sh / # dd if=/dev/zero of=/dev/null 

我最终看到的是这两张图看起来非常相似:

在这里输入图像说明

我猜想CPU使用率应该比使用该命令的容器高得多。 这里出了什么问题? 有什么build议么?

我假设你正在同一个主机上运行所有的容器。 节点导出器将导出主机信息 – 因此两个节点导出器将显示关于一个主机的相同信息。

要收集有关容器CPU使用情况的信息,请使用cAdvisor :它将允许您收集每个容器的CPU使用情况。

您应该为每个主机运行一个cAdvisor以收集有关主机上容器的信息,以及每个主机收集一个节点导出器以收集有关主机的信息。

Interesting Posts