首页 文章

使用prometheus监控docker - 不同容器的cpu使用情况看起来相同

提问于
浏览
0

我的设置:

  • Prometheus服务器

  • 2个节点 - 导出器

  • 格拉法纳

docker-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']

在将Prometheus数据源添加到Grafana后,我添加了一个带有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峰值,如this

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

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

enter image description here

我认为使用命令的容器的CPU使用率要高得多 . 这里出了什么问题?有什么建议?

1 回答

  • 2

    我假设您在同一台主机上运行所有容器 . 节点导出器将导出主机信息 - 因此两个节点导出器将显示有关该主机的相同信息 .

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

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

相关问题