使用prometheus抓取k8s的metrics作监控时,cAdvisor和kubelet配置有何差别?
按网上说法:
目前cAdvisor集成到了kubelet组件内,可以在kubernetes集群中每个启动了kubelet的节点使用cAdvisor提供的metrics接口获取该节点所有容器相关的性能指标数据。1.7.3版本以前,cadvisor的metrics数据集成在kubelet的metrics中,在1.7.3以后版本中cadvisor的metrics被从kubelet的metrics独立出来了,在prometheus采集的时候变成两个scrape的job。
按新版本的标准配置,kubelet中的cadvisor是没有对外开放4194端口的。所以,我们只能通过apiserver提供的api做代理获取监控指标。
重要知识点来了。
cAdvisor的metrics地址: /api/v1/nodes/[节点名称]/proxy/metrics/cadvisor
kubelnet的metrics地址:/api/v1/nodes/[节点名称]/proxy/metrics
所以,prometheus配置cadvisor时,内容如下:
- job_name: 'cadvisor' # 通过https访问apiserver,通过apiserver的api获取数据 scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token #以k8s的角色(role)来定义收集,比如node,service,pod,endpoints,ingress等等 kubernetes_sd_configs: # 从k8s的node对象获取数据 - role: node relabel_configs: # 用新的前缀代替原label name前缀,没有replacement的话功能就是去掉label name前缀 # 例如:以下两句的功能就是将__meta_kubernetes_node_label_kubernetes_io_hostname # 变为kubernetes_io_hostname - action: labelmap regex: __meta_kubernetes_node_label_(.+) # replacement中的值将会覆盖target_label中指定的label name的值, # 即__address__的值会被替换为kubernetes.default.svc:443 - target_label: __address__ replacement: kubernetes.default.svc:443 # 获取__meta_kubernetes_node_name的值 - source_labels: [__meta_kubernetes_node_name] #匹配一个或多个任意字符,将上述source_labels的值生成变量 regex: (.+) # replacement中的值将会覆盖target_label中指定的label name的值, # 即__metrics_path__的值会被替换为/api/v1/nodes/${1}/proxy/metrics, # 其中${1}的值会被替换为__meta_kubernetes_node_name的值 target_label: __metrics_path__ replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor metric_relabel_configs: - action: replace source_labels: [id] regex: '^/machine\.slice/machine-rkt\\x2d([^\\]+)\\.+/([^/]+)\.service$' target_label: rkt_container_name replacement: '${2}-${1}' - action: replace source_labels: [id] regex: '^/system\.slice/(.+)\.service$' target_label: systemd_service_name replacement: '${1}'
配置kubelet时,内容如下:
- job_name: 'kubelet' # 通过https访问apiserver,通过apiserver的api获取数据 scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token #以k8s的角色(role)来定义收集,比如node,service,pod,endpoints,ingress等等 kubernetes_sd_configs: # 从k8s的node对象获取数据 - role: node relabel_configs: # 用新的前缀代替原label name前缀,没有replacement的话功能就是去掉label_name前缀 # 例如:以下两句的功能就是将__meta_kubernetes_node_label_kubernetes_io_hostname # 变为kubernetes_io_hostname - action: labelmap regex: __meta_kubernetes_node_label_(.+) # replacement中的值将会覆盖target_label中指定的label name的值, # 即__address__的值会被替换为kubernetes.default.svc:443 - target_label: __address__ replacement: kubernetes.default.svc:443 #replacement: 10.142.21.21:6443 # 获取__meta_kubernetes_node_name的值 - source_labels: [__meta_kubernetes_node_name] #匹配一个或多个任意字符,将上述source_labels的值生成变量 regex: (.+) # 将# replacement中的值将会覆盖target_label中指定的label name的值, # 即__metrics_path__的值会被替换为/api/v1/nodes/${1}/proxy/metrics, # 其中${1}的值会被替换为__meta_kubernetes_node_name的值 target_label: __metrics_path__ replacement: /api/v1/nodes/${1}/proxy/metrics #or: #- source_labels: [__address__] # regex: '(.*):10250' # replacement: '${1}:4194' # target_label: __address__ #- source_labels: [__meta_kubernetes_node_label_role] # action: replace # target_label: role
看到没有,内容几乎一样,除了代理地址不一样。
使用prometheus抓取k8s的metrics作监控时,cAdvisor和kubelet配置有何差别?的更多相关文章
- 巧用Grafana和Arthas自动抓取K8S中异常Java进程的线程堆栈
前言 近期发现业务高峰期时刻会出现CPU繁忙导致的timeout异常,通过监控来看是因为Node上面的一些Pod突发抢占了大量CPU导致的. 问: 没有限制CPU吗?是不是限制的CPU使用值就可以解决 ...
- 【prometheus 抓取源】
配置prometheus从prometheus爬取数据 prometheus提供了下面这个端口来让其他prometheus来抓取(scrape)自己的时序数据: http://prometheus_i ...
- 【prometheus抓取间隔】scrape_interval
prometheus如何设置比较合理: https://www.robustperception.io/keep-it-simple-scrape_interval-id 总结:一般设置在10s-60 ...
- 解决Scrapy抓取中文结果保存为文件时的编码问题
import json import codecs # Define your item pipelines here # # Don't forget to add your pipeline to ...
- SpringCloud微服务实战——搭建企业级开发框架(四十五):【微服务监控告警实现方式二】使用Actuator(Micrometer)+Prometheus+Grafana实现完整的微服务监控
无论是使用SpringBootAdmin还是使用Prometheus+Grafana都离不开SpringBoot提供的核心组件Actuator.提到Actuator,又不得不提Micrometer ...
- prometheus的平台侧和应用侧结合,实现应用的metrics的抓取
这个细节,迷惑了我一段时间,前面也写过一篇blog,描述过这个问题. 今天看到一种更好的解决方法. 记录一下. prometheus在k8s集群里,抓取应用的metrics. 是需要平台侧和应用侧相互 ...
- 微信朋友圈转疯了(golang写小爬虫抓取朋友圈文章)
很多人在朋友圈里转发一些文章,标题都是什么转疯啦之类,虽然大多都也是广告啦,我觉得还蛮无聊的,但是的确是有一些文章是非常值得收藏的,比如老婆经常就会收藏一些养生和美容的文章在微信里看. 今天就突发奇想 ...
- git 常用命令--抓取分支-为自己记录(二)
二:抓取分支: 多人协作时,大家都会往master分支上推送各自的修改.现在我们可以模拟另外一个同事,可以在另一台电脑上(注意要把SSH key添加到github上)或者同一台电脑上另外一个目录克隆, ...
- Hawk: 20分钟无编程抓取大众点评17万数据
1. 主角出场:Hawk介绍 Hawk是沙漠之鹰开发的一款数据抓取和清洗工具,目前已经在Github开源.详细介绍可参考:http://www.cnblogs.com/buptzym/p/545419 ...
随机推荐
- 【大数据】SparkSql学习笔记
第1章 Spark SQL概述 1.1 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了2个编程抽象:DataFrame和 DataSet,并且作为分布式 ...
- Hello 2019 自闭记
A:8min才过??? #include<iostream> #include<cstdio> #include<cmath> #include<cstdli ...
- 【题解】 [ZJOI2007]矩阵游戏 (二分图匹配)
原题目戳我 Solution: 这个二分图藏还是挺深的,重点在哪里呢?首先我们分析下,交换影响的会是哪里. 每一次交换只会影响某一行上的排列或者某一列上的排列,如果有矩阵是下面这样,就一定不会互相影响 ...
- Javascript实现倒计时和根据某时间开始计算时间
JavaScript 代码 <script type="text/javascript"> var time_start = new Date('2018','7',' ...
- 学习Spring Boot:(十七)Spring Boot 中使用 Redis
前言 Redis 1 是一个由Salvatore Sanfilippo写的key-value存储系统. edis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日 ...
- 【洛谷P2114】起床困难综合征 位运算+贪心
题目大意:给定 N 个操作,每个操作为按位与.或.异或一个固定的数字,现在要求从 0 到 M 中任选一个数字,使得依次经过 N 个操作后的值最大. 题解:位运算有一个重要的性质是:位运算时,无进位产生 ...
- Oracle表字段类型更改的一个经验
先前表中ID字段类型是用序列,由于安全问题,需要处理水平权限的漏洞,虽然使用加密也可以处理,为了更方便,需要将字段类型改为Guid,如果表中已经有数据,更改起来不是很方便,对于基础数据表,这里提供一个 ...
- bzoj千题计划279:bzoj4591: [Shoi2015]超能粒子炮·改
http://www.lydsy.com/JudgeOnline/problem.php?id=4591 最后的式子合并同类项 #include<cstdio> #include<i ...
- JMS学习(五)--ActiveMQ中的消息的持久化和非持久化 以及 持久订阅者 和 非持久订阅者之间的区别与联系
一,消息的持久化和非持久化 ①DeliveryMode 这是传输模式.ActiveMQ支持两种传输模式:持久传输和非持久传输(persistent and non-persistent deliver ...
- argunlar 1.0.0 【hello,world】
<!DOCTYPE html><html lang="en" ng-app><head> <meta charset="U ...