• cadvisor的安装代码
  • sudo 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=8082:8080 \
  • –detach=true \
  • –name=cadvisor \
  • google/cadvisor:v0.24.1
    • 备注:–publish=8082:8080 \ 8082指的是暴露在公网上的端口号,8080指的是容器内服务暴露在容器内的端口号
    • docker中安装cadvisor并启动成功后,在网页上输入ip:8082(暴露在公网上的这个端口号)即可访问cadvisor的网页管理页面
    • (172.16.31.55主机安装的promethues)/opt/module/prometheus-2.34.0.linux-amd64
      • 修改prometheus的配置文件prometheus.yml
        • 不关闭prometheus进程的情况下,重载 prometheus的配置文件(kill -1 pid)
  • 3.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 容器网络累积传输数据总量(单位:字节)
  • 4.当能够正常采集到cAdvisor的样本数据后,可以通过以下表达式计算容器的CPU使用率:
  • (1)sum(irate(container_cpu_usage_seconds_total{image!=””}[1m])) without (cpu)
  • 容器CPU使用率
  • (2)container_memory_usage_bytes{image!=””}
  • 查询容器内存使用量(单位:字节):
  • (3)sum(rate(container_network_receive_bytes_total{image!=””}[1m])) without (interface)
  • 查询容器网络接收量(速率)(单位:字节/秒):
  • (4)sum(rate(container_network_transmit_bytes_total{image!=””}[1m])) without (interface)
  • 容器网络传输量 字节/秒
  • (5)sum(rate(container_fs_reads_bytes_total{image!=””}[1m])) without (device)
  • 容器文件系统读取速率 字节/秒
  • (6)sum(rate(container_fs_writes_bytes_total{image!=””}[1m])) without (device)
  • 容器文件系统写入速率 字节/秒
  • 5.cadvisor 常用容器监控指标
  • (1)网络流量
  • sum(rate(container_network_receive_bytes_total{name=~”.+”}[1m])) by (name)
  • ##容器网络接收的字节数(1分钟内),根据名称查询 name=~”.+”
  • sum(rate(container_network_transmit_bytes_total{name=~”.+”}[1m])) by (name)
  • ##容器网络传输的字节数(1分钟内),根据名称查询 name=~”.+”
  • (2)容器 CPU相关
  • sum(rate(container_cpu_system_seconds_total[1m]))
  • ###所用容器system cpu的累计使用时间(1min钟内)
  • sum(irate(container_cpu_system_seconds_total{image!=””}[1m])) without (cpu)
  • ###每个容器system cpu的使用时间(1min钟内)
  • sum(rate(container_cpu_usage_seconds_total{name=~”.+”}[1m])) by (name) * 100
  • #每个容器的cpu使用率
  • sum(sum(rate(container_cpu_usage_seconds_total{name=~”.+”}[1m])) by (name) * 100)
  • #总容器的cpu使用率
  • increase(v range-vector)函数是PromQL中提供的众多内置函数之一。其中参数v是一个区间向量,increase函数获取区间向量中的第一个后最后一个样本并返回其增长量。因此,可以通过以下表达式Counter类型指标的增长率:
  • 1
  • increase(node_cpu[2m]) / 120
  • Copied!
  • 这里通过node_cpu[2m]获取时间序列最近两分钟的所有样本,increase计算出最近两分钟的增长量,最后除以时间120秒得到node_cpu样本在最近两分钟的平均增长率。并且这个值也近似于主机节点最近两分钟内的平均CPU使用率。
  • 除了使用increase函数以外,PromQL中还直接内置了rate(v range-vector)函数,rate函数可以直接计算区间向量v在时间窗口内平均增长速率。因此,通过以下表达式可以得到与increase函数相同的结果:
  • 1
  • rate(node_cpu[2m])
  • Copied!
  • 需要注意的是使用rate或者increase函数去计算样本的平均增长速率,容易陷入“长尾问题”当中,其无法反应在时间窗口内样本数据的突发变化。 例如,对于主机而言在2分钟的时间窗口内,可能在某一个由于访问量或者其它问题导致CPU占用100%的情况,但是通过计算在时间窗口内的平均增长率却无法反应出该问题。
  • 为了解决该问题,PromQL提供了另外一个灵敏度更高的函数irate(v range-vector)。irate同样用于计算区间向量的计算率,但是其反应出的是瞬时增长率。irate函数是通过区间向量中最后两个样本数据来计算区间向量的增长速率。这种方式可以避免在时间窗口范围内的“长尾问题”,并且体现出更好的灵敏度,通过irate函数绘制的图标能够更好的反应样本数据的瞬时变化状态。
  • 1
  • irate(node_cpu[2m])
  • Copied!
  • irate函数相比于rate函数提供了更高的灵敏度,不过当需要分析长期趋势或者在告警规则中,irate的这种灵敏度反而容易造成干扰。因此在长期趋势分析或者告警中更推荐使用rate函数。
  • 监控界面
    • grafana常用监控模板大全
    • H_appiness关注
    • 0.8162019.12.13 13:10:21字数 191阅读 20,990
    • 前言:
    • 本篇文章分三部分来介绍常用的grafana模板,数据来源均为prometheus。数据来源为zabbix或其他的请绕行!
    • 第一部分
    • 监控容器
    • 推荐ID
    • 3146(弃)
      • k8s资源监控精简版
    • 8685 k8s资源监控(可以考虑是否需要监控k8s)(数据不齐,考虑舍弃)
    • 10000
    • k8s监控(数据齐全)
    • 8588(舍弃)
    • 315(数据齐全,比10000更详细 )
    • 第二部分
    • 监控物理机/虚拟机(linux)
    • 推荐ID
    • 8919
    • 9276
    • 监控物理机/虚拟机(windows)
    • 推荐ID
    • 10467
    • 10171
    • 2129
    • 第三部分
    • 监控协议http/icmp/tcp/dns/
      • http监控某个网站
      • icmp监控某台机器
      • tcp监控某个端口
      • dns监控dns
      • 推荐ID
    • 9965

作者 admin

张宴银,大数据开发工程师

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注