首页 > 其他分享 >prometheus学习笔记之cAdvisor

prometheus学习笔记之cAdvisor

时间:2024-08-28 18:04:34浏览次数:11  
标签:container cadvisor sum 笔记 name prometheus total cpu cAdvisor

一、cAdvisor简介

监控Pod指标数据需要使⽤cadvisor, cadvisor由⾕歌开源, cadvisor不仅可以搜集⼀台机器上所有运⾏的容器信息,还提供基础查询界⾯和http接⼝,⽅便其他组件如Prometheus进⾏数据抓取
 cAdvisor可以对节点机器上的资源及容器进⾏实时监控和性能数据采集,包括CPU使⽤情况、内存使⽤情况、⽹络吞吐量及⽂件系统使⽤情况。

二、DaemonSet部署cAdvisor

1.准备清单文档

清单文件参考:https://github.com/google/cadvisor/tree/master/deploy/kubernetes/base

清单文件使用了kustomize配置,我这省略了,配置文件如下

apiVersion: v1
kind: Namespace
metadata:
  name: cadvisor #自定义了名称空间,按需修改
---
apiVersion: apps/v1 # for Kubernetes versions before 1.9.0 use apps/v1beta2
kind: DaemonSet
metadata:
  name: cadvisor
  namespace: cadvisor
  annotations:
      seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec:
  selector:
    matchLabels:
      name: cadvisor
  template:
    metadata:
      labels:
        name: cadvisor
    spec:
      tolerations:    #污点容忍,忽略master的NoSchedule,具体污点可以通过descript命令查看
        - effect: NoSchedule
          key: node-role.kubernetes.io/control-plane #你的污点未必和我一致,请确认
      hostNetwork: true
      containers:
      - name: cadvisor
        image: gcr.io/cadvisor/cadvisor:v0.39.3  #默认国内无法下载,需要自行解决
        resources:
          requests:
            memory: 400Mi
            cpu: 400m
          limits:
            memory: 2000Mi
            cpu: 800m
        securityContext:
          privileged: true #需要开启特权模式
        volumeMounts: #删除readOnly挂载选项
        - name: rootfs
          mountPath: /rootfs
        - name: var-run
          mountPath: /var/run
        - name: sys
          mountPath: /sys
        - name: docker
          mountPath: /var/lib/docker
        ports:
          - name: http
            containerPort: 8080
            hostPort: 8080 #如果不指定则和容器的port保持一致,看实际情况修改
            protocol: TCP
      volumes:
      - name: rootfs
        hostPath:
          path: /
      - name: var-run
        hostPath:
          path: /var/run
      - name: sys
        hostPath:
          path: /sys
      - name: docker
        hostPath:
          path: /var/lib/containerd/ #应为我的runc用的containerd,如果是docker,改成/var/lib/docker即可

2.应用清单配置

kubectl apply -f daemonset.yaml
kubectl get pods -n cadvisor
NAME             READY   STATUS    RESTARTS   AGE
cadvisor-5d2wq   1/1     Running   0          5m
cadvisor-lgb2b   1/1     Running   0          5m
cadvisor-wsvh7   1/1     Running   0          5m

netstat -tnlp|grep 8080 #与清单的hostPort保持一致

3.访问web界面验证

访问集群节点的8080端口

查看 metrics 接口

三、cadvisor常用指标数据及示例

常用示例

(1)获取容器CPU使用率
sum(irate(container_cpu_usage_seconds_total{image!=""}[1m])) without (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)

(7)容器网络接收的字节数(1分钟内),根据名称查询 name=~".+"
sum(rate(container_network_receive_bytes_total{name=~".+"}[1m])) by (name)

(8)容器网络传输的字节数(1分钟内),根据名称查询 name=~".+"
sum(rate(container_network_transmit_bytes_total{name=~".+"}[1m])) by (name)

(9)所用容器system cpu的累计使用时间(1min内)
sum(rate(container_cpu_system_seconds_total[1m]))

(10)每个容器system cpu的使用时间(1min内)
sum(irate(container_cpu_system_seconds_total{image!=""}[1m])) without (cpu)

(11)每个容器的cpu使用率
sum(rate(container_cpu_usage_seconds_total{name=~".+"}[1m])) by (name) * 100

(12)总容器的cpu使用率
sum(sum(rate(container_cpu_usage_seconds_total{name=~".+"}[1m])) by (name) * 100)

四、配置prometheus采集cadvisor

1.配置prometheus

vim /usr/local/prometheus/prometheus.yml #在文件最后添加一个job
  - job_name: "cadvisor"
    static_configs: #改成你集群的节点IP和cadvisor的端口
      - targets:  ["192.168.100.131:8080","192.168.100.132:8080","192.168.100.133:8080"]


curl -X POST http://127.0.0.1:9090/-/reload  #如果没有配置热更新则需要重启

2.prometheus验证cadvisor数据

五、grafana配置 模板监控pod

1.创建新的dashboard

2.导入对应的模板,这来使用的模板ID为14282

3.查看dashboard数据

 

 

标签:container,cadvisor,sum,笔记,name,prometheus,total,cpu,cAdvisor
From: https://www.cnblogs.com/panwenbin-logs/p/18385045

相关文章

  • CSS (border-radius应用) 笔记 08
      border-radius: n1 n2 n3n4 /a1 a2 a3 a4  【n1-a1,n2-a2,n3-a3,n4-a4 分别表示上右下左顺序边角的椭圆边角,其中n代表水平,a代表垂直】e.g有趣的小水滴动画(应用)<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname=&qu......
  • CSS(样式-定位) 笔记 06
    position:;定位1.static代表静态模式,常态模式2.fixed 代表固定模式特点:不随浏览器的滚动而滚动,释放掉自己原来的空间,参照物是整个浏览器3.absolute代表绝对模式特点:随浏览器的滚动而滚动,释放掉自己原来的空间,参照物是整个浏览器4.relative代表相对位置特点:随浏......
  • 四边形不等式学习笔记
    1.定义1.1四边形不等式四边形不等式指的是二元函数\(w(l,r)\)对于\(l_1\lel_2\ler_1\ler_2\)满足:\[w(l_1,r_1)+w(l_2,r_2)\lew(l_2,r_1)+w(l_1,r_1)\]也就是交叉优于包含。四边形不等式的等价形式是:\[w(l,r-1)+w(l+1,r)\lew(l,r)+w(l+1......
  • Netty 学习笔记
    Java网络编程早期的JavaAPI只支持由本地系统套接字库提供的所谓的阻塞函数,下面的代码展示了一个使用传统JavaAPI的服务器代码的普通示例//创建一个ServerSocket用以监听指定端口上的连接请求ServerSocketserverSocket=newServerSocket(5000);//对accept方法......
  • Java基础-学习笔记15
    15泛型1.泛型泛型的好处编译时,检查添加元素的类型,提高了安全性减少了类型转换的次数,提高效率比如:ArrayListarr=newArrayList();在放入时,如果添加Dog类到arr里,编译器发现添加的类型不满足要求,就会报错;在取出时,直接取出Person类,就不用再转型使用。泛型的......
  • MybatisPlus学习笔记
    MyBatisPlus从入门到精通1.概述MybatisPlus是一款Mybatis增强工具,用于简化开发,提高效率。它在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。官网:https://baomidou.com/2.快速入门2.0准备工作①准备数据CREATETABLE`user`(`id`bigint(20)NOTNULL......
  • 系统架构师考试学习笔记第二篇——架构设计专业知识(6)系统工程基础知识
    本章节考点分析:        第6课时主要学习系统工程和系统性能等内容。根据考试大纲,本课时知识点会涉及单项选择题,约占2~5分。本课时内容侧重于概念知识也会有计算题。根据以往全国计算机技术与软件专业技术资格(水平)考试的出题规律,考查的知识点多来源于教材,扩展内容较......
  • Spring超硬核笔记———全是干货
    为什么用spring?Spring的核心功能IOC(控制反转,依赖注入),AOP(面向切面的编程)IOC:我们在使用过程中不用关注于对象是怎么创建的,只用应用过去,sping自动帮我们完成注入,对象的创建,spring默认创建对象是单例,这样减少了频繁创建对象,让对象重复利用,所有的对象都是放在BeanFactory工厂......
  • Effective Java理解笔记系列-第1条-何时考虑用静态工厂方法替代构造器?
    为什么写这系列博客?在阅读《EffectiveJava》这本书时,我发现有许多地方需要仔细认真地慢慢阅读并且在必要时查阅相关资料才能彻底搞懂,相信有些读者在阅读此书时也有类似感受;同时,在解决疑惑的过程中,还存在着有些内容不容易查找、查找到的解答质量不高等问题,于是我决定把我阅读此书......
  • 【学习笔记】SSL证书之文件格式
    SSL证书及密钥以文件的形式存在于我们的电脑上,这些文件一般为以下4种格式:DERPEMPFX/PKCS#12PKCS#71、DERDistinguishedEncodingRules(可辨别编码规则)是在线证书的格式二进制编码,如果用TXT进行查看会呈现出乱码。在SSL证书领域,我们一般不用DER格式的文件来交换证书(因为DER......