docker 监控

一、数据收集器cAdvisor

cAdvisor是google开发的容器监控工具,在host中运行cAdvisor容器。

环境部署:

两台docker环境主机。
两台主机分别下载google/cadvisor镜像:

 docker pull google/cadvisor

docker-1主机通过google/cadvisor镜像启动一个容器在后台运行:

[root@docker-1 ~]# docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker:/var/lib/docker:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest

浏览器访问地址ip:8080访问cAdvisor数据收集器系统:

在这里插入图片描述
cAdvisor数据收集器系统会显示当前host的资源使用情况,包括CPU、内存、网络、文件系统等。

cAdvisor的主要功能主要为两点:
展示Host和容器两个层次的监控数据。
展示历史变化数据。

cAdvisor的一个亮点是可以将监控到的数据导出给第三方工具,由这些工具进一步加工处理。

可以把cAdvisor定位为一个监控数据收集器,收集和导出数据是它的强项,而非展示数据。

二、Prometheus架构

两台主机分别下载prom/node-exporter镜像:

#docker pull prom/node-exporter
两台主机分别通过prom/node-exporter镜像启动一个容器在后台运行:

#docker run -d -p 9100:9100 \
-v "/proc:/host/proc" \
	-v "/sys:/host/sys" \
-v "/:/rootfs" \
--net=host \
prom/node-exporter \
--path.procfs /host/proc \
--path.sysfs /host/sys \
--collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/devicemapper|rootfs/var/lib/docker/aufs)($$|/)"

注意,这里使用了–net=host,这样Prometheus Server可以直接与Node Exporter通信。Node Exporter启动后,将通过9100提供host的监控数据。

两台主机分别防火墙授权9100端口:

#firewall-cmd --add-port=9100/tcp --permanent

#firewall-cmd --add-port=9100/tcp

浏览器分别访问地址
http://192.168.3.100:9100/metrics和http://192.168.3.150:9100/metrics查看是否收集到数据:
在这里插入图片描述
在这里插入图片描述

将docker-1主机上通过google/cadvisor镜像启动的cadvisor容器删除掉,然后再通过google/cadvisor镜像启动一个host网络的容器在后台运行(在文档开始部分因已经启动了一个默认bridge网络的cadvisor容器,因为与Prometheus Server和Node Exporter不在一个网络,所以需要删除掉):

[root@docker-1 ~]# docker rm -f cadvisor 

[root@docker-1 ~]# docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
--net=host \
google/cadvisor:latest

docker-2主机通过google/cadvisor镜像也启动一个host网络的容器在后台运行:

[root@docker-2 ~]# docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
--net=host \
google/cadvisor:latest

注意,这里使用了–net=host,这样Prometheus Server可以直接与cAdvisor通信。cAdvisor启动后,将通过8080提供host的监控数据。

两台主机分别防火墙授权8080端口:

#firewall-cmd --add-port=8080/tcp --permanent

#firewall-cmd --add-port=8080/tcp

浏览器分别访问地址

在这里插入图片描述

在这里插入图片描述

docker-1主机下载prom/prometheus镜像:

[root@docker-1 ~]# docker pull prom/prometheus

docker-1主机编辑Prometheus Server的配置文件prometheus.yml:

[root@docker-1 ~]# vim /root/prometheus.yml
#my global config
global:
 scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

#Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

#Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

#A scrape configuration containing exactly one endpoint to 	scrape:
#Here it's Prometheus itself.
scrape_configs:
 # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  -	 job_name: 'prometheus'

   # metrics_path defaults to '/metrics'
   # scheme defaults to 'http'.

 static_configs:
 - targets: ['localhost:9090','localhost:8080','localhost:9100','192.168.2.150:8080','192.168.2.150:9100']
 - 

docker-1主机通过prom/prometheus镜像启动一个host网络的容器在后台运行:

[root@docker-1 ~]# docker run -d -p 9090:9090 \
-v /root/prometheus.yml:/etc/prometheus/prometheus.yml \
--name prometheus \
--net=host \
prom/prometheus

docker-1主机防火墙授权9090端口:

[root@docker-1 ~]# firewall-cmd --add-port=9090/tcp --permanent

[root@docker-1 ~]# firewall-cmd --add-port=9090/tcp

浏览器访问地址

在这里插入图片描述

docker-1主机下载grafana/grafana镜像:

[root@docker-1 ~]# docker pull grafana/grafana

docker-1主机通过grafana/grafana镜像启动一个host网络的容器在后台运行:

[root@docker-1 ~]# docker run -d -i -p 3000:3000 \
-e "GF_SERVER_ROOT_URL=http://grafana.server.name" \
-e "GF_SECURITY_ADMIN_PASSWORD=secret" (密码)\
--net=host \
grafana/grafana

docker-1主机防火墙授权3000端口:

[root@docker-1 ~]# firewall-cmd --add-port=3000/tcp --permanent

[root@docker-1 ~]# firewall-cmd --add-port=3000/tcp

浏览器访问地址http://192.168.2.100:3000访问Grafana:

账号默认是admin 密码是上面password

在这里插入图片描述

点进去
在这里插入图片描述
添加url http://ip:9090 其他默认

在这里插入图片描述

在这里插入图片描述
添加刚才创建的

在这里插入图片描述
浏览器访问地址
http://grafana.com/dashboards?dataSource=prometheus&search=docker,
来下载监控docker的Dashboard仪表板模板:

在这里插入图片描述
在这里插入图片描述

把这俩个添加到
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值