一、数据收集器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仪表板模板:
把这俩个添加到