乐趣区

关于docker:云原生-•-DockercAdvisorPrometheusGrafana-10分钟搞定Docker容器监控平台

10 分钟搞定 Docker 容器监控平台

cAdvisor(Container Advisor) 是 Google 开源的一个容器监控工具,可用于对容器资源的应用状况和性能进行监控。用于收集、聚合、解决和导出正在运行容器的无关信息。具体来说,该组件对每个容器都会记录其资源隔离参数、历史资源应用状况、残缺历史资源应用状况的直方图和网络统计信息。cAdvisor 自身就对 Docker 容器反对,并且还对其它类型的容器尽可能的提供反对,力求兼容与适配所有类型的容器。
由以上介绍咱们能够晓得,cAdvisor 是用于监控容器引擎的,因为其监控的实用性,Kubernetes 曾经默认将其与 Kubelet 交融作为容器监控指标的默认工具,所以,对于云原生集群间接应用 Kubelet 组件提供的指标采集地址即可。

cAdvisor 部署

1、应用以下命令装置启动 cAdvisor 组件:
docker run \  –volume=/:/rootfs:ro \  –volume=/var/run:/var/run:ro \  –volume=/sys:/sys:ro \  –volume=/var/lib/docker/:/var/lib/docker:ro \  –volume=/dev/disk/:/dev/disk:ro \  –publish=8080:8080 \  –detach=true \  –name=cadvisor \  –privileged \  –device=/dev/kmsg \  google/cadvisor:latest
2、此时,cAdvisor 组件曾经启动,咱们能够应用浏览器拜访 http:// 本人 IP 地址:8080 拜访到 cAdvisor 组件的 Web UI:

3、而在多主机的状况下,在所有节点上运行一个 cAdvisor 再通过各自的 Web UI 查看监控信息显然不太不便,同时 cAdvisor 默认只保留 2 分钟的监控数据。好消息是 cAdvisor 曾经内置了对 Prometheus 的反对。拜访 http:// 本人的 IP 地址:8080/metrics 即可获取到规范的 Prometheus 监控样本输入:

4、上面表格中列举了一些 cAdvisor 中获取到的典型监控指标:

指标名称
类型
含意

container_cpu_load_average_10s
gauge
过来 10 秒容器 CPU 的均匀负载

container_cpu_usage_seconds_total
counter
容器在每个 CPU 内核上的累积占用工夫 (单位:秒)

container_cpu_system_seconds_total
counter
System CPU 累积占用工夫(单位:秒)

container_cpu_user_seconds_total
counter
User CPU 累积占用工夫(单位:秒)

container_fs_usage_bytes
gauge
容器中文件系统的使用量(单位:字节)

container_fs_limit_bytes
gauge
容器能够应用的文件系统总量(单位:字节)

container_fs_reads_bytes_total
counter
容器累积读取数据的总量(单位:字节)

container_fs_writes_bytes_total
counter
容器累积写入数据的总量(单位:字节)

container_memory_max_usage_bytes
gauge
容器的最大内存使用量(单位:字节)

container_memory_usage_bytes
gauge
容器以后的内存使用量(单位:字节

container_spec_memory_limit_bytes
gauge
容器的内存使用量限度

machine_memory_bytes
gauge
以后主机的内存总量

container_network_receive_bytes_total
counter
容器网络累积接收数据总量(单位:字节)

container_network_transmit_bytes_total
counter
容器网络累积传输数据总量(单位:字节)

Prometheus 部署

1、创立 prometheus 存储数据外挂目录,防止容器重启失落:
mkdir -p /disk/docker-monitor/prometheus/datachmod 777 /disk/docker-monitor/prometheus/data
2、prometheus 配置文件外挂进去,不便批改,vi /disk/docker-monitor/prometheus/prometheus.yml:
global:  scrape_interval: 15s  evaluation_interval: 15s alerting:  alertmanagers:    – static_configs:        – targets:          # – alertmanager:9093rule_files:  – rule/record/*.ymlscrape_configs:  – job_name: “prometheus”    static_configs:      – targets: [“localhost:9090”]  – job_name: “cadvisor”    static_configs:      – targets: [“124.222.45.207:8080”]

job_name: “prometheus” 配置抓取 Prometheus 本身相干指标;
job_name: “cadvisor” 配置抓取之前配置的 cAdvisor 组件指标。

3、Docker 部署 Prometheus:
docker run -d -p 9090:9090 –name prometheus \    -v /disk/docker-monitor/prometheus/conf:/opt/bitnami/prometheus/conf \    -v /disk/docker-monitor/prometheus/data:/opt/bitnami/prometheus/data \    bitnami/prometheus:2.42.0 \    –web.enable-lifecycle –web.enable-admin-api\    –config.file=/opt/bitnami/prometheus/conf/prometheus.yml\    –storage.tsdb.path=/opt/bitnami/prometheus/data

–web.enable-lifecycle –web.enable-admin-api 提供 rest api 接口方式治理 prometheus,比方配置热加载:curl -XPOST http://localhost:9090/-/reload。
留神:这里将 prometheus 配置文件和存储目录外挂进去,防止容器重启后数据失落。

4、Prometheus 启动实现后,浏览器拜访:

拜访 Status -> Targets 页面,发现配置的两个抓取 Job 曾经显示,并且 State 是绿色 UP,则接入胜利。
5、当可能失常采集到 cAdvisor 的样本数据后,能够通过以下表达式计算容器的 CPU 使用率:sum(irate(container_cpu_usage_seconds_total{image!=””}[1m])) without (cpu)

Grafana 部署

1、部署 Grafana:
docker run -d –name=grafana -p 3000:3000 -v grafana:/var/lib/grafana grafana/grafana

/var/lib/grafana 门路外挂进去,该目录存储 Grafana 插件、数据信息,防止 Docker 容器重启数据失落。

2、拜访:http:// 本人的 IP:3000/login,输出账号 admin/admin:

3、创立 Prometheus 类型数据源,指向方才搭建的 Prometheus:

4、导入 Docker 容器监控面板,这里应用 11277:

5、监控面板就能够看到 Docker 容器运行状况,如下图,以后运行中容器有 4 个,总占用内存 319MB,总 CPU 使用率大略 1.84%,并以曲线形式展现每个容器的 CPU 使用率、内存使用率、网络 IO 和磁盘 IO 等。

[更多云原生监控运维,请关注微信公众号:Reactor2020]

退出移动版