cAdvisor+Prometheus+Grafana
cAdvisor+Prometheus+Grafana 搞定Docker容器监控平台
1、先给虚拟机上传cadvisor
cAdvisor(Container Advisor)
是 Google
开源的一个容器监控工具,可用于对容器资源的使用情况和性能进行监控。用于收集、聚合、处理和导出正在运行容器的有关信息。具体来说,该组件对每个容器都会记录其资源隔离参数、历史资源使用情况、完整历史资源使用情况的直方图和网络统计信息。``cAdvisor 本身就对
Docker` 容器支持,并且还对其它类型的容器尽可能的提供支持,力求兼容与适配所有类型的容器。
[root@docker-1 ~]# mkdir /mointor
[root@docker-1 ~]# cd /mointor/
[root@docker-1 mointor]# ls
cadvisor.tar
[root@docker-1 mointor]#
[root@docker-1 mointor]# docker load -i cadvisor.tar
ace0eda3e3be: Loading layer 5.843MB/5.843MB
33bb68b99ee4: Loading layer 102.4MB/102.4MB
d3174d703c76: Loading layer 13.25MB/13.25MB
8b7599e512b6: Loading layer 44.19MB/44.19MB
Loaded image: gcr.io/cadvisor/cadvisor:latest
[root@docker-1 mointor]#
[root@docker-1 mointor]# docker images|grep cadvisor
gcr.io/cadvisor/cadvisor latest 68c29634fe49 3 years ago 163MB
google/cadvisor latest eb1210707573 5 years ago 69.6MB
[root@docker-1 mointor]#
2、What is Prometheus?
Prometheus
is an open-source systems
monitoring and alerting toolkit originally built at SoundCloud.
Prometheus joined the Cloud Native Computing Foundation
in 2016 as the second hosted project, after Kubernetes
.
Prometheus是一个开源系统监控和警报工具包,最初由SoundCloud构建。
Prometheus于2016年加入云原生计算基金会,成为继Kubernetes之后的第二个托管项目。
Cloud Native Computing Foundation --》云原生计算基金会:
Prometheus
、``kubernets、
ETCD`
2.1、架构图
普罗米修斯的核心组件
Prometheus server主程序
组件:
-
``TSDB
--->time series database 时序数据库 --》
hdd/ssdhdd机械磁盘 hard disk drive ssd 固态磁盘 -->
solid state drive`- promQL: select ,insert等 promQL是普罗米修斯内部的sql
-
http server web
服务- Retrieval 是拉取数据的组件:每间隔15s去拉一次数据
-
pushgateway
中间件(代理)—–》临时存放数据的软件 -
alertmanager
告警的软件 -
exporter
收集数据,采集数据 木马程序 : 安装到被监控的机器上 类似于agent代理
采集数据:exporter pushgateway 中间件(代理)
存储数据:tsdb
提供数据:http server
显示数据: grafana
告警、报警:alertmanager
获取数据的方式:
1.pull server --》pull —》client 主动的获取数据,避免大并发
2.push client —>push—》server client 主动送数据过来,数据会非常新,会出现大量的数据同时push过来
3、利用docker安装普罗米修斯
1、编写prometheus.yml文件
[root@docker-1 mointor]# vim prometheus.yml
scrape_configs:
- job_name: cadvisor
scrape_interval: 5s
static_configs:
- targets:
- cadvisor:8080
[root@docker-1 mointor]#
2、编写dockerfile文件
'先确定8080和9090,6379端口是否被占用'
[root@docker-1 ~]# lsof -i :9090
[root@docker-1 ~]# lsof -i :8080
[root@docker-1 ~]# lsof -i :6379
[root@docker-1 mointor]# 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
[root@docker-1 mointor]#
3、启动monitor
[root@docker-1 mointor]# docker compose up -d
[+] Running 3/3
✔ Container promredis Started 0.9s
✔ Container cadvisor Started 1.5s
✔ Container prometheus Started 1.7s
[root@docker-1 mointor]#
4、可以去访问8080和9090端口了
4、安装grafana
利用容器启动grafana
[root@docker-1 mointor]# docker run -d --name=grafana -p 3000:3000 grafana/grafana
Unable to find image 'grafana/grafana:latest' locally
latest: Pulling from grafana/grafana
97518928ae5f: Pull complete
5b58818b7f48: Pull complete
d9a64d9fd162: Pull complete
4e368e1b924c: Pull complete
867f7fdd92d9: Pull complete
387c55415012: Pull complete
07f94c8f51cd: Pull complete
ce8cf00ff6aa: Pull complete
e44858b5f948: Pull complete
4000fdbdd2a3: Pull complete
Digest: sha256:18d94ae734accd66bccf22daed7bdb20c6b99aa0f2c687eea3ce4275fe275062
Status: Downloaded newer image for grafana/grafana:latest
0ae83fc8b36d15bc54a757479748ab34c71b620826a887dcb22b2e42275b732a
[root@docker-1 mointor]#
账号:admin
密码:admin
更新密码:123456
- 在grafana里添加数据源是Prometheus的数据库
- 使用模板: 13946 模板编号