前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >自建 Prometheus 采集腾讯云容器服务监控数据最佳实践

自建 Prometheus 采集腾讯云容器服务监控数据最佳实践

原创
作者头像
imroc
修改于 2022-08-03 02:38:07
修改于 2022-08-03 02:38:07
3.2K0
举报

摘自 Kubernetes 实践指南

概述

Prometheus 采集腾讯云容器服务的监控数据时如何配置采集规则?主要需要注意的是 kubelet 与 cadvisor 的监控指标采集,本文分享为 Prometheus 配置 scrape_config 来采集腾讯云容器服务集群的监控数据的方法。

普通节点采集规则

代码语言:yaml
AI代码解释
复制
    - job_name: "tke-cadvisor"
      scheme: https
      metrics_path: /metrics/cadvisor # 采集容器 cadvisor 监控数据
      tls_config:
        insecure_skip_verify: true # tke 的 kubelet 使用自签证书,忽略证书校验
      authorization:
        credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
      - source_labels: [__meta_kubernetes_node_label_node_kubernetes_io_instance_type]
        regex: eklet # 排除超级节点
        action: drop
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
    - job_name: "tke-kubelet"
      scheme: https
      metrics_path: /metrics # 采集 kubelet 自身的监控数据
      tls_config:
        insecure_skip_verify: true
      authorization:
        credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
      - source_labels: [__meta_kubernetes_node_label_node_kubernetes_io_instance_type]
        regex: eklet
        action: drop
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
    - job_name: "tke-probes" # 采集容器健康检查健康数据
      scheme: https
      metrics_path: /metrics/probes
      tls_config:
        insecure_skip_verify: true
      authorization:
        credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
      - source_labels: [__meta_kubernetes_node_label_node_kubernetes_io_instance_type]
        regex: eklet
        action: drop
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
  • 使用节点服务发现 (kubernetes_sd_configs 的 role 为 node),抓取所有节点 kubelet:10250 暴露的几种监控数据。
  • 如果集群是普通节点与超级节点混用,排除超级节点 (relabel_configs 中将带 node.kubernetes.io/instance-type: eklet 这种 label 的 node 排除)。
  • TKE 节点上的 kubelet 证书是自签的,需要忽略证书校验,所以 insecure_skip_verify 要置为 true。
  • kubelet 通过 /metrics/cadvisor, /metrics/metrics/probes 路径分别暴露了容器 cadvisor 监控数据、kubelet 自身监控数据以及容器健康检查健康数据,为这三个不同路径分别配置采集 job 进行采集。

超级节点采集规则

代码语言:yaml
AI代码解释
复制
    - job_name: eks # 采集超级节点监控数据
      honor_timestamps: true
      metrics_path: '/metrics' # 所有健康数据都在这个路径
      params: # 通常需要加参数过滤掉 ipvs 相关的指标,因为可能数据量较大,打高 Pod 负载。
        collect[]:
        - 'ipvs'
        # - 'cpu'
        # - 'meminfo'
        # - 'diskstats'
        # - 'filesystem'
        # - 'load0vg'
        # - 'netdev'
        # - 'filefd'
        # - 'pressure'
        # - 'vmstat'
      scheme: http
      kubernetes_sd_configs:
      - role: pod # 超级节点 Pod 的监控数据暴露在 Pod 自身 IP 的 9100 端口,所以使用 Pod 服务发现
      relabel_configs:
      - source_labels: [__meta_kubernetes_pod_annotation_tke_cloud_tencent_com_pod_type]
        regex: eklet # 只采集超级节点的 Pod
        action: keep
      - source_labels: [__meta_kubernetes_pod_phase]
        regex: Running # 非 Running 状态的 Pod 机器资源已释放,不需要采集
        action: keep
      - source_labels: [__meta_kubernetes_pod_ip]
        separator: ;
        regex: (.*)
        target_label: __address__
        replacement: ${1}:9100 # 监控指标暴露在 Pod 的 9100 端口
        action: replace
      - source_labels: [__meta_kubernetes_pod_name]
        separator: ;
        regex: (.*)
        target_label: pod # 将 Pod 名字写到 "pod" label
        replacement: ${1}
        action: replace
      metric_relabel_configs:
      - source_labels: [__name__]
        separator: ;
        regex: (container_.*|pod_.*|kubelet_.*)
        replacement: $1
        action: keep
  • 超级节点的监控数据暴露在每个 Pod 的 9100 端口的 /metrics 这个 HTTP API 路径(非 HTTPS),使用 Pod 服务发现(kubernetes_sd_configs 的 role 为 pod),用一个 job 就可以采集完。
  • 超级节点的 Pod 支持通过 collect[] 这个查询参数来过滤掉不希望采集的指标,这样可以避免指标数据量过大,导致 Pod 负载升高,通常要过滤掉 ipvs 的指标。
  • 如果集群是普通节点与超级节点混用,确保只采集超级节点的 Pod (relabel_configs 中只保留有 tke.cloud.tencent.com/pod-type:eklet 这个注解的 Pod)。
  • 如果 Pod 的 phase 不是 Running 也无法采集,可以排除。
  • container_ 开头的指标是 cadvisor 监控数据,pod_ 前缀指标是超级节点 Pod 所在子机的监控数据(相当于将 node_exporternode_ 前缀指标替换成了 pod_),kubelet_ 前缀指标是超级节点 Pod 子机内兼容 kubelet 的指标(主要是 pvc 存储监控)。

kube-prometheus-stack 配置

如今都流行使用 kube-prometheus-stack 这个 helm chart 来自建 Prometheus,在 values.yaml 中进行自定义配置然后安装到集群,其中可以配置 Prometheus 原生的 scrape_config (非 CRD),配置方法是将自定义的 scrape_config 写到 prometheus.prometheusSpec.additionalScrapeConfigs 字段下,下面是示例:

代码语言:yaml
AI代码解释
复制
prometheus:
  prometheusSpec:
    additionalScrapeConfigs:
    - job_name: "tke-cadvisor"
      scheme: https
      metrics_path: /metrics/cadvisor
      tls_config:
        insecure_skip_verify: true
      authorization:
        credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
      - source_labels: [__meta_kubernetes_node_label_node_kubernetes_io_instance_type]
        regex: eklet
        action: drop
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
    - job_name: "tke-kubelet"
      scheme: https
      metrics_path: /metrics
      tls_config:
        insecure_skip_verify: true
      authorization:
        credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
      - source_labels: [__meta_kubernetes_node_label_node_kubernetes_io_instance_type]
        regex: eklet
        action: drop
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
    - job_name: "tke-probes"
      scheme: https
      metrics_path: /metrics/probes
      tls_config:
        insecure_skip_verify: true
      authorization:
        credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
      - source_labels: [__meta_kubernetes_node_label_node_kubernetes_io_instance_type]
        regex: eklet
        action: drop
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
    - job_name: eks
      honor_timestamps: true
      metrics_path: '/metrics'
      params:
        collect[]: ['ipvs']
        # - 'cpu'
        # - 'meminfo'
        # - 'diskstats'
        # - 'filesystem'
        # - 'load0vg'
        # - 'netdev'
        # - 'filefd'
        # - 'pressure'
        # - 'vmstat'
      scheme: http
      kubernetes_sd_configs:
      - role: pod
      relabel_configs:
      - source_labels: [__meta_kubernetes_pod_annotation_tke_cloud_tencent_com_pod_type]
        regex: eklet
        action: keep
      - source_labels: [__meta_kubernetes_pod_phase]
        regex: Running
        action: keep
      - source_labels: [__meta_kubernetes_pod_ip]
        separator: ;
        regex: (.*)
        target_label: __address__
        replacement: ${1}:9100
        action: replace
      - source_labels: [__meta_kubernetes_pod_name]
        separator: ;
        regex: (.*)
        target_label: pod
        replacement: ${1}
        action: replace
      metric_relabel_configs:
      - source_labels: [__name__]
        separator: ;
        regex: (container_.*|pod_.*|kubelet_.*)
        replacement: $1
        action: keep
    storageSpec:
     volumeClaimTemplate:
       spec:
         accessModes: ["ReadWriteOnce"]
         resources:
           requests:
             storage: 100Gi

FAQ

为什么使用 collect[] 这种奇怪的参数过滤指标?

超级节点的 Pod 监控指标使用 collect[] 查询参数来过滤不需要的监控指标:

代码语言:shell
AI代码解释
复制
curl ${IP}:9100/metrics?collect[]=ipvs&collect[]=vmstat

为什么要使用这么奇怪的参数名?这是因为 node_exporter 就是用的这个参数,超级节点的 Pod 内部引用了 node_exporter 的逻辑,这里node_exportercollect[] 参数用法说明。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
H3C : S6550XE-56HF-HI 25G+100G光口交换机配置动静态端口聚合
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135429.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/05
9150
H3C三层交换机之IRF虚拟化技术详解及配置
一、IRF是什么? 目前,网络中主要存在两种结构的通信设备,固定盒式设备和模块框式分布式设备。固定盒式设备成本低廉,但没有高可用性支持;模块框式分布式设备具有高可用性、高性能、高端口密度的优点,但投入成本高。针对盒式设备和模块框式分布式设备的这些特点,一种结合了两种设备优点的IRF虚拟化技术应运而生。 . IRF称之为智能弹性架构,是H3C自主研发的硬件虚拟化技术,它的核心思想是将多台设备通过IRF物理端口连接在一起,进行必要的配置后,虚拟化成一台“分布式设备”。使用这种虚拟换技术可以集合多台设备的硬件资源和软件处理能力,实现多台设备的协同工作、统一管理和不间断维护(简单说,IRF技术就是“硬件虚拟化技术”,将多个硬件设备虚拟化出一台更大的硬件设备)。 二、IRF技术的优点 1、简化管理
小手冰凉
2019/11/05
2K1
不一定必须精通,但你的懂,学总没有坏处!华为、H3C、锐捷三家交换机配置命令详解
一直以来,对于华为、H3C、锐捷交换机的命令配置,三家交换机的配置命令容易弄混,经常在实际项目配置中出错,因此,本期我们将来介绍这三家交换机的基础配置命令,大家可以分别来看下他们的命令有什么不同。为了让大家更加清楚,每行代码都有解释。
网络工程师笔记
2021/05/17
1.9K0
不一定必须精通,但你的懂,学总没有坏处!华为、H3C、锐捷三家交换机配置命令详解
H3C交换机配置常用命令「建议收藏」
转载自:https://blog.csdn.net/EbowTang/article/details/79964980
全栈程序员站长
2022/09/06
3.1K0
中小型网络思路规划配置分享,H3C HCL模拟器
采用三层网络结构,核心、汇聚三层互联,堆叠采用40G网络,汇聚10G,接入1G,网关下放到汇聚,交换机采用独立管理VLAN,模拟某工厂真实网络情况。
王忘杰
2022/09/22
8340
中小型网络思路规划配置分享,H3C HCL模拟器
H3C学习 | 配置命令 | IRF用LACP MAD检测配置
A和B做IRF C为中间设备,C和AB相连的端口分别是4/0/1 4/0/2 ,AB和C相连的端口分别是 1/4/0/1 2/4/0/2
网络技术联盟站
2019/08/19
2.6K0
H3C学习 | 配置命令 | IRF用LACP MAD检测配置
Cisco H3C 端口汇聚互联
端口汇聚 –手工汇聚 端口汇聚分为手工汇聚、动态LACP汇聚和静态LACP汇聚。 在端口汇聚中,H3C这些端口汇聚方式都可以与思科的port-channel进行对接。 手工汇聚: H3C交换机中的配置: link-aggregation group 10 mode manual interface GigabitEthernet1/0/1 port link-aggregation group 10 interface GigabitEthernet1/0/2 port link-aggregation group 10 Cisco交换机中的配置: interface GigabitEthernet1/0/1 channel-group 1 mode 1 mode on interface GigabitEthernet1/0/2 channel-group 1 mode 1 mode on Interface port-channel 1 端口汇聚 –LACP汇聚 静态LACP汇聚: H3C交换机中的配置: link-aggregation group 10 mode static interface GigabitEthernet1/0/1 port link-aggregation group 10 interface GigabitEthernet1/0/2 port link-aggregation group 10 Cisco交换机中的配置: interface GigabitEthernet1/0/1 channel-group 1 mode active interface GigabitEthernet1/0/2 channel-group 1 mode active Interface port-channel 1
py3study
2020/01/10
1.9K0
H3C基础配置
一、基本配置 1、视图 <quidway>system-view //用户视图 [quidway]interface ethernet 0/1 //系统视图 [quidway-ethernet0/1] //接口视图 2、密码及基本参数配置 (1) console口登录配置 <quidway>system-view [quidway]user-interface aux 0 [quidway-aux0]authentication-mode {none|password|scheme} //设置登录的验证方法。none是不要验证,password是密码验证,scheme是服务器验证。 [quidway-aux0]set authentication password {cipher|simple} 123456 //当上面的模式为 paaword时,设置验证的密码。simple是明文密码。 [quidway-aux0]user privilege level 2 //设置从AUX登录后可以访问的命令级别为2级,默认是1级。 [quidway-aux0]speed 19200 //设置console口使用的传输速率 [quidway-aux0]screen-length 30 //设置一屏显示30行命令 [quidway-aux0]history-command max-size 20 //设置历史命令缓冲区最多存放20条命令 [quidway-aux0]idle-timeout 6 //设置超时时间为6分钟 (2)telnet 登录 <quidway>system-view [quidway]user-interface vty 0 4 [quidway-aux0]authentication-mode {none|password|scheme} //设置登录的验证方法。none是不要验证,password是密码验证,scheme是服务器验证。 [quidway-aux0]set authentication password {cipher|simple} 123456 //当上面的模式为 paaword时,设置验证的密码。simple是明文密码。 [quidway-aux0]user privilege level 2 //设置从AUX登录后可以访问的命令级别为2级,默认是1级。 [quidway-aux0]protocol inbund {all |ssh|telnet} //设置交换机支持的协议 [quidway-aux0]screen-length 30 //设置一屏显示30行命令 [quidway-aux0]history-command max-size 20 //设置历史命令缓冲区最多存放20条命令 [quidway-aux0]idle-timeout 6 //设置超时时间为6分钟 <quidway>super 3 //将普通用户通过TELNET登录到交换机,将用户级别切换到3级。 (3)超级用户密码(用户级别) [quidway]super password level 3 {cipher|simper} 123456 //设置低级别用户到高级别用户切换的密码 <quidway>super 3 注意:命令行级别分为:0,1,2,3 共四级。 访问级(0级):用于网络诊断等功能的命令。包括ping ,tracert,telnet等。 监控级(1级):用于系统维护、业务故障诊断等功能命令。包括debugging\terminal等命令。执和地该级别的命令结果不能被保存到配置文件中。 系统级(2级):用于业务配置的命令。包括路由等网络层次的命令,用于向用户提供网络服务。 管理级(3级):关系到系统的基本运行、系统支撑模块功能的命令,这些命令对业务的支持,最后级别。 默认:console口的命令登录级别为3, telnet 方式的级别为0。 二、VLAN的基本配置 (一)VLAN 的链路类型 1、trunk link:作为干线,传输多个VLAN的报文。同时trunk端口也可以划给一个vlan。 2、hybrid link:作为干线,传输多个vlan的报文。同时hybrid 端口也可以划给多个vlan。 3、access link:只能属于一个vlan。 (二) GARP 同一个交换网内的成员之间提供了分发、传播、注册某种信息的手段。GARP是一种协议规范,现在主要有GVRP和GMRP这两种GARP协议的应用。 1、GVRP GVRP只是遵循GARP协议的一种应用。类似于VTP协议,以把交换机的配置信息动态的迅速的传播到整个交换网,以
py3study
2020/01/07
1.4K0
H3C交换机常用配置命令大全
[H3C]localuser bigheap 123456 1 Web网管用户设置,1(缺省)为管理级用户,缺省admin,admin
全栈程序员站长
2022/09/06
1.8K0
H3C基本命令大全
3、display current-configuration 当前配置情况   
py3study
2020/01/14
6K0
H3C路由交换 链路聚合篇
用户删除静态聚合端口时,系统会自动删除对应的聚合组,且该聚合组中的所有成员端口将全部离开该聚合组。
张旭博客
2022/12/27
3.4K0
H3C路由交换 链路聚合篇
H3CNE实验(Vlan/Ftp/DHC
2、SW1的Ethernet1/0/1和 Ethernet1/0/5分别属于Vlan1 和Vlan2
py3study
2020/01/06
6210
H3CNE实验(Vlan/Ftp/DHC
思科、华为、H3C命令对照表
下面将列出思科、华为、h3c命令的对照表,命令顺序也是思科、华为、h3c哦!!!!!
网络技术联盟站
2023/03/05
8560
思科、华为、H3C命令对照表
H3C综合配置
 6.在RTB上配置NAT以及各路由器的静态路由实现H公司局域网用户通过NAT 转换访问SWC及PCB:
py3study
2020/01/07
1K0
H3C交换机、路由器、防火墙常用指令,详细分类,一篇整理!
ICT系统集成阿祥
2025/05/27
3970
H3C交换机、路由器、防火墙常用指令,详细分类,一篇整理!
H3C 链路聚合
[SW-Ethernet1/0/1]port link-aggregation group 1
py3study
2020/01/07
1K0
华为交换机配置命令集
在添加MAC地址表项时,命令中interface参数指定的端口必须属于 vlan参数指定的VLAN,否则将添加失败。
网络技术联盟站
2021/07/22
1.1K0
H3C交换机配置命令
  本文简要的介绍了H3C交换机的基本配置命令(原文参考《H3C交换机操作手册》)。
py3study
2020/01/07
1.7K0
H3C=交换命令
display saved-configuration   显示Flash中的配置文件内容 ]save   保存当前配置文件到flash中 ]reset  saved-configuration   擦除flash中的配置文件 一般在以下几种情况使用:     1.设备软件升级之后,flash中的配置文件可能与新版本不匹配     2.设备放入新环境中,需要重新配置的时候 ]reboot  重启
py3study
2020/01/14
6830
华三(h3c)交换机操作命令详解vlan切换
程序员都很懒,你懂的! 十年生死两茫茫,写程序,到天亮。   千行代码,Bug何处藏。    纵使上线又怎样,朝令改,夕断肠。    领导每天新想法,天天改,日日忙。   相顾无言,惟有泪千行。   每晚灯火阑珊处,夜难寐,又加班。 闲话少说,直接上代码: 华三交换机操作命令 输入用户名回车,输入密码后回车。再输入sys进入系统模式。 或者输入登录后,输入system-view进入系统模式。 显示/查看vlan display brief interface 显示vlan列表后,进入
业余草
2019/01/21
5.3K0
推荐阅读
相关推荐
H3C : S6550XE-56HF-HI 25G+100G光口交换机配置动静态端口聚合
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档