部署cadvisor采集容器运行数据.md ¶
cAdvisor 简介 ¶
一、cAdvisor 的重要性 ¶
在容器化环境中,cAdvisor 扮演着至关重要的角色。随着容器技术的广泛应用,对容器资源的有效监控和管理成为关键需求。cAdvisor 满足了这一需求,它不仅提供了对单个机器上所有运行容器的全面信息收集,还为其他监控工具如 Prometheus 提供了数据抓取的接口,从而实现了更广泛的监控体系集成。
二、功能特点详解 ¶
多维度监控: CPU 使用情况:准确监测容器对 CPU 的占用情况,帮助用户了解容器在不同时间段的计算资源需求,以便进行资源分配和优化。 内存使用情况:实时跟踪容器的内存使用量,防止内存泄漏和过度占用,确保系统的稳定性。 网络吞吐量:监控容器的网络流量,对于网络密集型应用,能够及时发现网络瓶颈,进行网络配置调整。 文件系统使用情况:了解容器对文件系统的读写操作和空间占用,有助于管理存储资源。 数据保存与导出: 对于每个容器,cAdvisor 会保存丰富的信息,包括资源隔离参数,这对于理解容器的运行环境和限制非常重要。历史资源使用情况的记录可以帮助用户分析容器的资源消耗趋势,而完整历史资源使用情况的直方图则提供了更详细的资源分布信息。网络统计信息的保存有助于排查网络问题。这些数据可以按容器和机器范围导出,方便与其他系统进行集成和分析。
三、使用场景和优势 ¶
故障排查:当容器出现性能问题或故障时,cAdvisor 收集的数据可以提供关键线索,帮助开发人员和运维人员快速定位问题所在,例如确定是 CPU 过载、内存不足还是网络问题导致的故障。 资源优化:通过分析 cAdvisor 提供的资源使用数据,用户可以对容器进行优化配置,合理分配资源,提高系统的整体效率和性能。 多容器管理:在大规模容器化环境中,cAdvisor 能够同时监控多个容器和机器,为管理员提供全局视角,便于进行集中管理和资源调度。
四、与其他工具的集成 ¶
cAdvisor 与 Prometheus 的集成是其一个重要应用场景。Prometheus 作为强大的监控和告警工具,通过抓取 cAdvisor 提供的 HTTP 接口数据,可以实现对容器资源的全面监控和告警设置。这种集成使得用户可以构建更加完善的监控体系,及时发现潜在问题并采取相应措施。 总之,cAdvisor 作为一款强大的容器监控工具,为容器化环境提供了全面的资源监控和性能分析功能,对于确保容器化应用的稳定运行和高效管理具有重要意义。
部署 cadvisor ¶
Docker Compose 部署 cadvisor ¶
mkdir -p /opt/K8s/cadvisor && cd /opt/K8s/cadvisor
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
docker-compose up
K8s
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: cadvisor
namespace: monitoring
spec:
selector:
matchLabels:
app: cAdvisor
template:
metadata:
labels:
app: cAdvisor
spec:
tolerations: # 污点容忍,忽略 master 的 NoSchedule
- effect: NoSchedule
key: node-role.kubernetes.io/master
hostNetwork: true # 使用宿主机网络,注意防止端口冲突
restartPolicy: Always # 重启策略
containers:
- name: cadvisor
image: harbor.magedu.local/pub-images/cadvisor:v0.39.3
imagePullPolicy: IfNotPresent # 镜像策略
ports:
- containerPort: 8080 #指定监听端口为8080
volumeMounts:
- name: root
mountPath: /rootfs
- name: run
mountPath: /var/run
- name: sys
mountPath: /sys
- name: docker
mountPath: /var/lib/docker
volumes:
- name: root
hostPath:
path: /
- name: run
hostPath:
path: /var/run
- name: sys
hostPath:
path: /sys
- name: docker
hostPath:
path: /var/lib/docker
访问 ¶
http://127.0.0.1:8080/metrics
修改 prometheus 配置,收集 cadvisor 数据 ¶
scrape_configs:
- job_name: "cAdvisor"
scrape_interval: 5s
static_configs:
- targets: ["192.168.1.99:8080","192.168.3.111:8080"]
- cadvisor:8080