docker学习笔记:Prometheus+cAdvisor搭建容器监控

Prometheus+cAdvisor容器监控

简介

Prometheus

官网Prometheus - Monitoring system & time series database

CNCF云原生基金会的第二个项目

cAdvisor

cAdvisor (Container Advisor) 是 Google 开源的一个容器监控工具,可用于对容器资源的使用情况和性能进行监控。它以守护进程方式运行,用于收集、聚合、处理和导出正在运行容器的有关信息。具体来说,该组件对每个容器都会记录其资源隔离参数、历史资源使用情况、完整历史资源使用情况的直方图和网络统计信息。

cAdvisor 本身就对 Docker 容器支持,并且还对其它类型的容器尽可能的提供支持,力求兼容与适配所有类型的容器。

官方推荐的为Prometheus采集数据的软件,可以获取宿主机的资源使用和容器的资源使用

搭建思路

redis容器作为被监控容器,Cadvisor 进行收集,通过 Prometheus 作为数据源

docker学习笔记:Prometheus+cAdvisor搭建容器监控_第1张图片

搭建Prometheus+cAdvisor监控容器

1.拉取Prometheus镜像

[root@docker harbor]# docker pull prom/prometheus

2.启动prometheus容器

[root@docker harbor]# docker run -d -p9090:9090 --name myprom-1 prom/prometheus

3.网页访问

docker学习笔记:Prometheus+cAdvisor搭建容器监控_第2张图片

4.从容器里拷贝得到Prometheus的配置文件,放在/myprom/下,并且停止运行prometheus,防止后续启用Prometheus容器发生端口占用

[root@docker harbor]# mkdir /myprom
[root@docker harbor]# cd /myprom/
[root@docker myprom]# ls
[root@docker myprom]# docker cp myprom-1:/etc/prometheus/prometheus.yml .
Successfully copied 2.56kB to /myprom/.
[root@docker myprom]# ls
prometheus.yml
[root@docker myprom]# docker stop myprom-1

5.修改prometheus.yml配置文件,添加监控的容器cAdvisor为目标容器

[root@docker myprom]# vim prometheus.yml

global:
alerting:
  alertmanagers:
    - static_configs:
        - targets:
rule_files:
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
  - job_name: cadvisor
    scrape_interval: 5s
    static_configs:
      - targets:
        - cadvisor:8080

6.使用docker compose启动redis、Prometheus、cadvisor

[root@docker myprom]# vim docker-compose.yml

version: '3.2'
services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    ports:
    - 9090:9090
    command:
    - --config.file=/etc/prometheus/prometheus.yml
    volumes:
    - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
    depends_on:
    - cadvisor
  cadvisor:
    image: gcr.io/cadvisor/cadvisor:latest
    container_name: cadvisor
    ports:
    - 8080:8080
    volumes:
    - /:/rootfs:ro
    - /var/run:/var/run:rw
    - /sys:/sys:ro
    - /var/lib/docker/:/var/lib/docker:ro
    depends_on:
    - redis
  redis:
    image: redis:latest
    container_name: redis
    ports:
    - 6379:6379

由于cadvisor的镜像国内无法访问下载,需要自行准备

/var/lib/docker/:/var/lib/docker:ro docker的所有数据都挂载到了cadvisor下,所以cadvisor可以监控容器

7.上传准备的cadvisor镜像到linux的/myprom下,并导入镜像

[root@docker myprom]# ls
cadvisor.tar  docker-compose.yml  prometheus.yml
[root@docker myprom]# docker load -i cadvisor.tar 

8.启动docker compose

[root@docker myprom]# docker compose up -d
[root@docker myprom]# docker ps

docker学习笔记:Prometheus+cAdvisor搭建容器监控_第3张图片

Prometheus、cadvisor、redis都已经成功启动

如果报错,很可能是之前启动的Prometheus占用了9090端口,docker stop把之前的容器停止掉就行了

9.网页访问cadvisor,prometheus

docker学习笔记:Prometheus+cAdvisor搭建容器监控_第4张图片
docker学习笔记:Prometheus+cAdvisor搭建容器监控_第5张图片

docker学习笔记:Prometheus+cAdvisor搭建容器监控_第6张图片

搭建成功!

你可能感兴趣的:(docker,docker)