用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以收集有关主机上容器的信息,以及每个主机收集一个节点导出器以收集有关主机的信息。