cadvisor 容器安装部署

tags: exporters

文章目录

  • cadvisor 容器安装部署
    • 1. 介绍
    • 2. 原理
    • 3. 部署
      • 3.1 容器部署
      • 3.2 docker-compose 部署
    • 4. 探索 cAdvisor Web UI
    • 5. promethues 配置 cadvisor
    • 6. cadvisor metrics

1. 介绍

cAdvisor 是谷歌公司用来分析运行中的Docker容器的资源占用以及性能特性的工具.

cAdvisor部署为一个运行中的daemon,它会收集、聚集、处理并导出运行中容器的信息。这些信息能够包含容器级别的资源隔离参数、资源的历史使用状况、反映资源使用和网络统计数据完整历史状况。对docker的监控能力非常强大。

cAdvior功能已经被集成到了kubelet组件中,也就是说,安装好kubernetes后,cAdvisor就已经安装到了每一个计算节点上。

2. 原理

使用Grafana、Prometheus 和 cAdvisor来建立仪表板监控系统。仪表板用于研究服务器实例、它们的正常运行时间、异常、错误和上下文场景等。

所有数据都显示在自定义 Grafana 仪表板上,从仪表板触发查询,该仪表板命中 Prometheus,该仪表板作为数据源插入 Grafana。

容器信息从 cAdvisor 流入 Prometheus。

下图显示了这些开源工具之间的数据流,一种基于 Grafana、Prometheus、cAdvisor 的仪表板监控架构流。有关如何部署 Grafana 的更多信息,请阅读此处。

3. 部署

3.1 容器部署

#存储对接influxdb

#存储对接influxdb
$ docker run -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker/:/var/lib/docker:ro -p 8083:8080 -p 8082:8082 --detach=true  --name cadvisor google/cadvisor:canary -storage_driver=influxdb -storage_driver_index="cadvisor" -storage_driver_host=influxsrv:8086$ 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=9101:8080 \
--detach=true \
--name=cadvisor \
--restart=always \
local.harbor.io/google-containers/cadvisor:latest

注意:
服务起不来如何解决?

$ mount -o remount,rw '/sys/fs/cgroup'
$ ln -s /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/cpuacct,cpu

它也可以与 Canary 一起运行。以下是详细信息。

此外,该工具是一个没有外部依赖的静态 Go 二进制文件。如果我们愿意,我们可以独立运行它。运行时行为可以通过一系列标志来控制。

cAdvisor 还定期执行一些内务管理。使用这些标志,我们可以控制工具执行任务的方式和时间。

3.2 docker-compose 部署

创建一个docker-compose.yml文件

version: '3.2'
services:prometheus:image: prom/prometheus:latestcontainer_name: prometheusports:- 9090:9090command:- --config.file=/etc/prometheus/prometheus.ymlvolumes:- ./prometheus.yml:/etc/prometheus/prometheus.yml:rodepends_on:- cadvisorcadvisor:image: gcr.io/cadvisor/cadvisor:latestcontainer_name: cadvisorports:- 8080:8080volumes:- /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:rodepends_on:- redisredis:image: redis:latestcontainer_name: redisports:- 6379:6379

此配置指示 Docker Compose 运行三个服务,每个服务对应一个Docker容器:

  • prometheus服务使用本地prometheus.yml配置文件(通过参数导入到容器中volumes)。
  • cadvisor服务公开端口 8080(cAdvisor 指标的默认端口)并依赖于各种本地卷(/、、/var/run等)。
  • redis服务是一个标准的 Redis 服务器。cAdvisor 将自动从该容器收集容器指标,即无需任何进一步配置。

运行安装:

$ docker-compose up#查看容器状态
$ docker-compose psName                 Command               State           Ports
----------------------------------------------------------------------------
cadvisor     /usr/bin/cadvisor -logtostderr   Up      8080/tcp
prometheus   /bin/prometheus --config.f ...   Up      0.0.0.0:9090->9090/tcp
redis        docker-entrypoint.sh redis ...   Up      0.0.0.0:6379->6379/tcp

4. 探索 cAdvisor Web UI

您可以访问 cAdvisor Web UI ,网址为http://localhost:8080。您可以在我们的安装中探索特定 Docker 容器的统计信息和图表http://localhost:8080/docker/<container>。例如,Redis 容器的指标可以在http://localhost:8080/docker/redis、Prometheus:http://localhost:8080/docker/prometheus等处访问。cAdvisor 收集的数据可以在其端口公开的基于 Web 的 UI的帮助下进行查看。

它还通过REST API公开其数据

通常,返回的容器信息是容器名称、子容器列表、容器规格、容器最近 N 秒的详细使用统计、资源使用直方图等。

返回的机器信息是可调度逻辑核心 CPU 的数量、内存容量(以字节为单位)、支持的最大 CPU 频率、可用文件系统、网络设备、机器拓扑 - 节点、核心、线程等。

5. promethues 配置 cadvisor

  - job_name: "cadvisor"static_configs:- targets:- '192.168.1.120:9101'

或者:

scrape_configs:
- job_name: cadvisorscrape_interval: 5sstatic_configs:- targets:- cadvisor:8080

6. cadvisor metrics

container_start_time_seconds指标开始,该指标记录容器的启动时间(以秒为单位)。name="<container_name>"您可以使用表达式按名称选择特定容器。容器名称对应container_name,Docker Compose 配置中的参数。container_start_time_seconds{name="redis"}例如,表达式显示容器的开始时间redis。

cadvisor metrics 列表:

process_virtual_memory_bytes 1.42579712e+09
process_start_time_seconds 1.66521371663e+09
process_resident_memory_bytes 6.3102976e+07
process_open_fds 14
process_max_fds 1.048576e+06
process_cpu_seconds_total 53.33
machine_memory_bytes 8.181809152e+09
machine_cpu_cores 4
go_threads 19
go_memstats_sys_bytes 7.2349944e+07
go_memstats_stack_sys_bytes 1.671168e+06
go_memstats_stack_inuse_bytes 1.671168e+06
go_memstats_other_sys_bytes 727622
go_memstats_next_gc_bytes 2.8742496e+07
go_memstats_mspan_sys_bytes 458752
go_memstats_mspan_inuse_bytes 423016
go_memstats_mcache_sys_bytes 16384
go_memstats_mcache_inuse_bytes 6912
go_memstats_mallocs_total 5.109018e+06
go_memstats_lookups_total 0
go_memstats_last_gc_time_seconds 1.6652145196693025e+09
go_memstats_heap_sys_bytes 6.5437696e+07
go_memstats_heap_released_bytes 0
go_memstats_heap_objects 182977
go_memstats_heap_inuse_bytes 2.0832256e+07
go_memstats_heap_idle_bytes 4.460544e+07
go_memstats_heap_alloc_bytes 1.5082544e+07
go_memstats_gc_sys_bytes 2.482176e+06
go_memstats_gc_cpu_fraction 0.0004565680065549785
go_memstats_frees_total 4.926041e+06
go_memstats_buck_hash_sys_bytes 1.556146e+06
go_memstats_alloc_bytes_total 9.62135304e+08
go_memstats_alloc_bytes 1.5082544e+07
go_goroutines 91
go_gc_duration_seconds_sum 0.097979934
go_gc_duration_seconds_count 115
go_gc_duration_seconds
container_tasks_state
container_start_time_seconds
container_spec_memory_swap_limit_bytes
container_spec_memory_reservation_limit_bytes
container_spec_memory_limit_bytes
container_spec_cpu_shares
container_spec_cpu_period
container_scrape_error 0
container_network_transmit_packets_total
container_network_transmit_packets_dropped_total
container_network_transmit_errors_total
container_network_transmit_bytes_total
container_network_receive_packets_total
container_network_receive_packets_dropped_total
container_network_receive_errors_total
container_network_receive_bytes_total
container_memory_working_set_bytes
container_memory_usage_bytes
container_memory_swap
container_memory_rss
container_memory_max_usage_bytes
container_memory_mapped_file
container_memory_failures_total
container_memory_failcnt
container_memory_cache
container_last_seen
container_fs_writes_total
container_fs_writes_merged_total
container_fs_write_seconds_total
container_fs_writes_bytes_total
container_fs_usage_bytes
container_fs_sector_writes_total
container_fs_sector_reads_total
container_fs_reads_total
container_fs_reads_merged_total
container_fs_read_seconds_total
container_fs_reads_bytes_total
container_fs_limit_bytes
container_fs_io_time_weighted_seconds_total
container_fs_io_time_seconds_total
container_fs_io_current
container_fs_inodes_total
container_fs_inodes_free
container_cpu_user_seconds_total
container_cpu_usage_seconds_total
container_cpu_system_seconds_total
container_cpu_load_average_10s
cadvisor_version_info

promSQL表达式

Expression Description For
rate(container_cpu_usage_seconds_total{name=“redis”}[1m]) cgroup在最后一分钟的 CPU使用率 redis容器_
container_memory_usage_bytes{name=“redis”} cgroup 的总内存使用量(以字节为单位) redis容器_
rate(container_network_transmit_bytes_total[1m]) 容器在最后一分钟每秒通过网络传输的字节数 所有容器
rate(container_network_receive_bytes_total[1m]) 容器在最后一分钟每秒通过网络接收的字节数 所有容器

参考:

  • https://github.com/google/cadvisor
  • What is cAdvisor? How Does it Work? Explained…
  • MONITORING DOCKER CONTAINER METRICS USING CADVISOR

cadvisor 容器安装部署相关推荐

  1. docker安装部署jdk1.8

    dokcer下jdk环境配置 先下载centos7 创建容器jdk1.8 退出容器 进入容器后的查看命令 启动容器和进入容器 安装部署完成 先下载centos7 先下载Linux版本的jdk1.8 再 ...

  2. centos 7 中安装 docker和创建 tomcat容器并部署web应用

    在 CentOS 7 中安装 Docker 和创建 Tomcat 容器并部署Web应用 一般部署Web应用都需要安装数据库,比如 MySQL 和 Redis,MySQL 和 Redis 属于多个Web ...

  3. Docker 容器安装监控软件 cAdvisor

    介绍 Docker 容器的监控方案有很多,除了 Docker 自带的docker stats命令,还有很多开源的解决方案, 例如 sysdig.cAdvisor.Prometheus 等,都是非常优秀 ...

  4. Docker(容器) 部署安装

    一.Docker 部署安装 1.Docker 的概念 Docker 是一个开源的应用容器引擎,让开发这可以打包他们的应用以及依赖包到一个可以移植的境相当中,然后发布到任何流行 的Linux或者Wind ...

  5. Docker 容器监控原理及 cAdvisor 的安装与使用

    生产环境中监控容器的运行状况十分重要,通过监控我们可以随时掌握容器的运行状态,做到线上隐患和问题早发现,早解决.所以今天我就和你分享关于容器监控的知识(原理及工具 cAdvisor). 虽然传统的物理 ...

  6. 2021年最新 k8s安装部署步骤 kubernetes从入门到实践 K8S实战容器化迁移实战教程 K8S存储之Ceph分布式存储系统 K8S架构师实战指南

    2021年最新 k8s安装部署步骤 kubernetes从入门到实践 K8S实战容器化迁移实战教程 K8S存储之Ceph分布式存储系统 K8S架构师实战指南

  7. ERPnext:容器化安装部署步骤

    ERPnext(一) 前言 ERPnext是GitHub上开源的最热门的ERP项目之一,它的开源协议是GPL-3.0,因此自由度高,无需担心版权问题.ERPnext项目设计简单且使用PYTHON语言实 ...

  8. 二进制安装部署 4 kubernetes集群---超详细教程

    二进制安装部署kubernetes集群---超详细教程 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建完成后整理的个人心得,分享给大家~~~ 本文所需的安装包,都上传在我的网盘中,需要的可以 ...

  9. 『中级篇』docker容器安装wordpress(37)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker容器安装wordpress(37) 第一节的时候我就部署过wordpress,可能很多老铁一头雾水不知道 ...

  10. Docker概述和安装部署

    概述 Docker产生的背景 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后 ...

最新文章

  1. php 类示例,PHP类实例教程(二十二):类型提示
  2. 阿里巴巴开源容器镜像加速技术
  3. JavaFX动画工具
  4. 引用管理器没有程序集_程序员必背英语单词不会,就别说你是程序员!
  5. matplotlib基本使用
  6. 19.Linux系统管理
  7. STM32F072在8M下的软件延时
  8. 统计数字会撒谎-读书笔记
  9. 神经网络和深度学习(一)——初识神经网络
  10. 关于killer网卡与win10 擦出火花 内存爆炸的原因
  11. 记参加Microsoft Ignite 大会和北京CSDN创作者之夜
  12. 天池AI学习全面升级,所有学习资源都给你你汇总好啦!
  13. RabbitMQ的mandatory参数测试
  14. buu(ssti模板注入、ssrf服务器请求伪造)
  15. 谷歌最新多模态模型CoCa,多项任务取得SOTA效果,ImageNet达到91.0%
  16. SpringBoot配置Consul及健康检测
  17. 谈谈最近很火热的VR
  18. 和数集团着重发力 区块链发展潜力再获认可
  19. Scratch软件编程等级考试二级——20200620
  20. cmake/make基础知识、bashrc/profile基础知识、安装opencv与版本切换

热门文章

  1. 原生js实现多语言切换
  2. 古今中外数学思想__读书笔记
  3. layui中表格绑定数据_使用LAYUI操作数据表格
  4. 计算机文化基础心得体会1500字,《计算机文化基础教学改革与实践》工作总结报告.docx...
  5. C语言谭浩强试题,c语言试题谭浩强Word版
  6. iframe透明解决方案
  7. MDM主数据管理平台开发精要
  8. 基于java的户籍管理系统的设计与实现
  9. 机械制图之三棱锥的三视图
  10. 如何在php中添加音乐播放器,音乐播放器的制作实例(html5)-