Prometheus 和 Grafana 是啥就不多说了,这里就提一嘴 CAdvisor。
CAdvisor 是 Google 开源的一款用于展示和分析容器运行状态的可视化工具。通过在主机上运行 CAdvisor 用户可以轻松的获取到当前主机上容器的运行统计信息,并以图表的形式向用户展示。
同时,CAdvisor 还提供了兼容 Prometheus 的 exporter 的接口,Prometheus 可以无缝(不需要做任何修改)集成 CAdvisor 来完成采集 metrics 的动作。
下面就来演示一下如何通过 CAdvisor + Prometheus + Grafana 完成宿主机上容器信息数据的采集与绘图展示。
CAdvisor
CAdvisor 需要部署在被监控的宿主机上,这里既然已经使用容器了那我们就直接使用 Docker 启动一个 Cadvisor 容器就行了,CAdvisor 不需要任何配置,仅需要将宿主机中几个存在容器状态数据的目录映射到 Cadvisor 容器即可。
执行下面命令在被监控的宿主机上运行一个 CAdvisor 容器:
$ docker run -d \
-v /:/rootfs:ro \
-v /var/run:/var/run:ro \
-v /sys:/sys:ro \
-v /var/lib/docker:/var/lib/docker:ro \
-v /dev/disk:/dev/disk:ro \
-p 8080:8080 \
--detach=true \
--name cadvisor google/cadvisor:latest
运行成功后可使用浏览器访问 <宿主机 IP>:8080
的方式查看到 CAdvisor 提供的监控状态 Web 页,如:
Prometheus
上面可以看到其实 Cadvisor 本身就可以完成容器数据的采集与展示了,那为啥我们还需要 Prometheus 呢?
因为在实际的实践中,我们要监控的数据通常不仅仅只有容器相关数据,所以我们还需要其它的监控工具如 Zabbix、Prometheus 来完成其它数据的采集。
在完成数据采集之后,为方便运维人员的查看与管理,我们通常将采集的数据统一到一个平台下进行展示,这里就是我们待会儿要使用的 Grafana 了。
好了,那现在就部署一下 Prometheus。
先编辑一下 Prometheus 的配置文件待会儿直接映射到容器里,内容如下:
$ vim /tmp/prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
rule_files:
scrape_configs:
- job_name: 'prometheus'
static_configs:
# 这里的地址为部署有 CAdvisor 服务宿主机 IP + CAdvisor 暴露的端口
- targets: ['10.0.1.202:8080']
启动 Prometheus 容器:
docker run -d \
--name=prometheus \
-p 9090:9090 \
-v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
启动完成后可以访问 http://<Prometheus 服务所在宿主机的 IP>:9090/targets
查看当前是否可正常采集 CAdvisor 的数据:
Grafana
就剩最后一步了,数据已经被 Prometheus 从 CAdvisor 采集并持久化了,现在就是要使用 Grafana 来展示采集到的监控项。
启动 Grafana 容器,不需要任何配置:
$ docker run -d \
--name=grafana \
-p 3000:3000 \
grafana/grafana
使用浏览器访问 http://<Grafana 服务所在宿主机的 IP>:3000
会出现一个登录页,默认用户名密码为 admin/admin
,修改密码后可进入管理页。
先添加一个 Promethues 数据源:
Grafana 的官网为我们提供了容器监控的 Dashboard,所以这里不需要我们手动编写 PromQL 进行绘图,其 ID 为 193,所以这里我们直接导入就行了:
然后就可以在监控面板中查看到如下 Dashboard 了:
评论区