作者陈凯烨,腾讯云前端开发工程师。负责 TKE 集群,弹性集群和云原生监控等模块控制台开发。

概述

Prometheus 是一套开源的系统监控报警框架。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。

2020年11月20日,腾讯云云原生 Prometheus 服务正式开始免费公测。针对容器集群监控场景,提供了一整套包括监控、采集、存储、告警、图表等能力的监控服务。通过独立部署与被监控对象解耦合,使得不受监控对象性能、稳定性、可靠性等因素的影响,托管模式使得用户无需部署运维 Prometheus 监控实例,解放了运维人力,而新推出的模板功能可以解决在多个集群之间粘贴复制配置的重复性工作问题,实现一键同步多个集群配置,使得整个流程更专业、更可靠。本文会详细介绍云原生监控服务的基本功能以及使用方式。

腾讯云容器团队的云原生监控服务,产品目前已正式公测,欢迎读者试用(传送门:https://console.cloud.tencent.com/tke2/prometheus )。

基本功能

实例管理

创建实例

  1. 登录容器服务控制台,选择左侧导航栏中的【云原⽣监控】
  2. 点击⻚⾯上⽅的【新建】按钮,进⼊【创建监控实例】⻚⾯。如下图所示:

  3. 在【创建监控实例⻚⾯】,根据提示设置集群信息。如下图所示:

  • 地域: 选择您希望部署该实例的地域,实例创建后 地域⽆法修改,建议您根据所在地理位置选择靠近业务的地域,可降低访问延迟,提高数据上报速度。

  • ⽹络:需选择当前地域下已有的私有网络和子网,创建后不可修改。若在该地域下没有 vpc 资源可跳转到私有⽹络控制台新建 vpc。实例默认情况下只能监控本 vpc 网络的集群,若您希望监控其他 vpc 集群,您需要使⽤云联⽹等服务进⾏ vpc ⽹络打通。

  • 数据存储时间:选择数据存储时间,可选 15天/ 3个⽉/ 6个⽉/⼀年。实例创建成功后将⾃动为您创建对象存储 COS 存储桶并按照实际资源使⽤情况计费。详情请参见对象存储计费概述。

  • Grafana组件:此处需要设置登录用户名和密码用于 Grafana 登陆。Grafana 默认只支持 vpc 内访问,实例创建后,您可以根据业务需要开通 Grafana 外网访问。

  • AlertManger:您可通过添加⾃定义的 AlertManger 地址,将实例产⽣的告警发往自建的 AlertManger。

基础信息

实例创建完成后,将处于运行中状态,您可点击实例查看其基本信息。除了创建时指定的⼀些信息外,还包含⼀些创建完成后提供的信息:

  • 对象存储桶:云原⽣监控使⽤对象存储在进⾏数据持久化存储,实例将在您账号下创建⼀个对象存储的桶⽤于存储数据。

  • Prometheus 数据查询地址:该接⼝⽤于提供数据查询,targets 查询,rules 查询等。您可以使⽤该地址对接⾃建的 Grafana

  • Grafana:默认为您提供了内⽹地址,您可以选择性开启外⽹访问,开启后将⽣成固定的外⽹域名。

Prometheus数据查询接口

Prometheus 数据查询地址目前可支持以下几个 path。

  • /api/v1/query:查询最近⼀次抓取的数据。

  • /api/v1/query_range:查询⼀段时间的数据。

  • /api/v1/targets:查询监控目标的信息。

由于实例可能关联了多个集群,您需要添加 cluster=[集群类型]-[集群id]参数,用于指定目标集群:

TKE 集群:/api/v1/targets?cluster=tke-cls-xxx

弹性集群:/api/v1/targets?cluster=eks-cls-xxx

边缘集群:/api/v1/targets?cluster=tkeedge-cls-xxx

  • /api/v1/alerts:查询告警状态。

  • /api/v1/rules:查询聚合和告警规则。

默认监控面板

实例创建的 Grafana 会提供⼀些常用的监控面板,包含了集群综合信息,节点,工作负载,Pod 等。当您后续进行了集群关联后,被关联集群的数据就可以在默认监控面板中查看。

多集群管理

关联集群

实例创建完成后,您需要需要监控的集群进行关联。关联之后,您就可以在集群中通过创建 SerivceMonitor,PodMonitor 等进行采集配置。

TKE 的标准集群以及弹性集群需要与该实例 Prometheus 所属同一个 VPC 网络,边缘集群则不受这个限制。

采集配置

Prometheus Operator

云原生监控为用户提供了与 Prometheus Operator 兼容的能力,您可以修改 Prometheus Operator 所定义的采集相关的 CRD,例如 Prometheus CRD,ServiceMonitor,PodMonitor 等。具体可以参考【prometheus operator】

修改采集周期和额外 labels

当成功关联集群后,会在被关联集群的 prom-xxx 命名空间下创建⼀个名如【tke-cls-xxx】的 Prometheus CRD 资源。可以通过修改此资源来修改全局采集配置,额外的 labels 等等。

ServiceMonitor

云原⽣监控⽀持创建【ServiceMonitor】,您可以通过控制台创建,也可以直接在集群⾥创建 ServiceMonitor。





选择该集群中的任意 service 自动聚和成 Yaml。

PodMonitor

云原监控支持创建【PodMonitor】,您可以通过控制台创建,也可以直接在集群⾥创建 PodMonitor。



Rawjob

云原⽣监控⽀持直接创建 Prometheus 原⽣的 job,您可以通过控制台创建,也可以通过修改集群中 prom-xxx 命名空间下的 promtheus-config secret 来达到同样效果

最终配置

您可以在控制台的集群数据采集配置右上⻆看到最终⽣成的 Prometheus 配置⽂件



您也可以在被关联集群的 prom-xxx 命名空间下,通过查看 prometheus-tke-cls-xxx 的 secret 来查看最终配置

挂载⽂件到采集器

在配置采集项的时候,您可能需要为配置提供⼀些⽂件,例如证书,您可以通过以下⽅式向采集器挂载⽂件,⽂件的更新会实时同步到采集器内:

  • prom-xxx 命名空间下的 configmap 打上以下的 label:prometheus.tke.tencent.cloud.com/scrape-mount = "true"

    其中所有的 key 就会被挂载到采集器的路径 /etc/prometheus/configmaps/[configmap-name]/

  • prom-xxx 命名空间下的 secret 打上以下的 label:prometheus.tke.tencent.cloud.com/scrape-mount = "true"

    其中所有的 key 就会被挂载到采集器的路径 /etc/prometheus/secret/[secret-name]/

默认采集配置

集群被关联后,云原⽣监控会在被关联集群内创建默认的采集配置。将安装以下两个组件

  • kube-state-metrics:在 kube-system 下将安装【kube-state-metrics】组件。

  • node exporter: 在 kube-system 下将安装【node exporter】组件。

将添加以下采集项:

将添加以下聚合规则:

查看 targets

您可以通过控制台【查看 targets ⽬标】来查看当前所有被监控的对象的状态。

聚合规则

简介

聚合规则⽤于使⽤ PromQL 来⽣成新的指标,聚合规则将以 30 秒为周期进⾏计算。

创建聚合规则

告警

简介

告警规则⽤于定义告警,告警规则将以 30 秒为周期进⾏计算。

创建告警规则

您可以通过控制台来创建告警规则,⼀个告警可以配置多条规则:

  • 名称:为⽤户⾃定义告警名称

  • 规则名称:⽤于识别规则,可通过该名称在 Grafana 中查看其告警状态

  • PromQL:规则语句

  • Labels:在发送告警时将额外带上,这⾥的 Labels ⽆法在告警内容中引⽤

  • 告警内容:⽤于⽣成告警内容的模板,您可以使⽤ {{$value}} 来引⽤告警触发时的值,也可以使⽤ {{$labels.label-name}} 来引⽤某个 label 的值

  • 持续时间:当规则处于告警状态时间⼤于该值时才会触发告警,配置告警规则时,您还需要配置对应的告警渠道信息

查看告警历史

您可以在告警历史界⾯查询告警历史记录,默认查询近 24 ⼩时的告警记录,您可以通过时间筛选来查询⽬标范围内的记录,您可以通过通过右边搜索栏进⾏模糊过滤。

在集群内创建聚合或告警规则

您可以通过在集群内直接创建【PrometheusRule】来创建告警和聚合规则

  • 默认会⾃动在规则的 PromQL 中注⼊ Prometheus CRD 中的 externalLables,从⽽使得该规则只对本集群⽣效,关闭 externalLabels 注⼊可以通过在【PrometheusRule】中打上以下 annottation 来关闭注⼊:prometheus.tke.tencent.cloud.com/disable-labels-inject=""

  • 若您创建的是告警规则,可通过添加以下 annotation 来指定告警渠道:prometheus.tke.tencent.cloud.com/notification-inject="渠道id"

    其中,渠道 id 即为控制台创建告警规则时所⽣成的告警 id。



    因此,若您想使⽤集群内告警规则,您需要在控制台⾄少创建⼀起告警。

模板功能

简介

模板一共分成两种类型,聚合规则和告警策略模板、数据采集模板。用于管理多集群 prometheus 配置,并支持一键同步升级等功能。

创建模板

您可以通过控制台来创建模板,既可以复制已有模板,也可以创建一个空模板,然后添加自定义配置。



其中聚合规则和告警策略模板、数据采集等配置写法保持一致。

  • 名称:模板名称。

  • 类型:默认模板只允许进行复制,不允许编辑和删除。

  • 关联 Prometheus 实例数目:模板绑定了 Prometheus 实例的数目。

  • 关联 Prometheus Agent 数目:模板绑定了 Prometheus 实例的数目。

  • 版本:代表当前模板的版本。

关联实例列表

告警和聚合模板的关联实例列表,在这个列表中,能够对绑定的多个 Prometheus 实例进行同步告警策略和聚合规则。

关联实例



支持同时关联多个地域的 Prometheus 实例或者多个地域的集群,从而达到一键同步,管理多个集群的效果。

如果对模板解除关联则所有模板相关配置被清除且不可恢复。

总结

本文详细介绍了云原生监控服务的基本功能和使用方式,在原有监控、采集、存储、告警、图表等能力的基础上再增加了模板功能,使得支持对多集群架构服务进行监控。

【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!

如何优雅地使用云原生 Prometheus 监控集群的更多相关文章

  1. 理解OpenShift(7):基于 Prometheus 的集群监控

    理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...

  2. 跨云厂商部署 k3s 集群

    原文链接:https://fuckcloudnative.io/posts/deploy-k3s-cross-public-cloud/ 最近一两年各大云服务商都出了各种福利活动,很多小伙伴薅了一波又 ...

  3. Spring Cloud Hystrix理解与实践(一):搭建简单监控集群

    前言 在分布式架构中,所谓的断路器模式是指当某个服务发生故障之后,通过断路器的故障监控,向调用方返回一个错误响应,这样就不会使得线程因调用故障服务被长时间占用不释放,避免故障的继续蔓延.Spring ...

  4. Hadoop YARN学习之监控集群监控Nagios(4)

    doop YARN学习之监控集群监控Nagios(4) 1. Nagios是一个流行的开源监控工具,可以用来监控Hadoop集群. 2. 监控基本的Hadoop服务 调试好脚本后命名为chek_res ...

  5. 配置阿里云SLB全站HTTPS集群

    配置阿里云SLB全站HTTPS集群(以下内容仅为流程,信息可能有些对应不上) 1 登录阿里云购买两台实例 1.1 按量付费购买两台实例 1.2 配置网络可以不选择分配外网 1.3 自定义密码 1.4 ...

  6. VPS、云主机 and 服务器集群、云计算 的区别

    VPS:(virtual private server)虚拟专用服务器,将一台服务器分割成多个虚拟专享服务器的优质服务.实现VPS的技术分为容器技术和虚拟化技术.在容器或虚拟机中,每个VPS都可分配独 ...

  7. 在云原生中监控JVM指标

    一般 Java 集成 Prometheus 监控指标有两种方式.一种是依赖中引入,另外一种是通过agent执行. 依赖引入 <!-- The client --> <dependen ...

  8. 阿里云上万个 Kubernetes 集群大规模管理实践

    点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 汤志敏,阿里 ...

  9. 用 Heapster 监控集群 - 每天5分钟玩转 Docker 容器技术(176)

    Heapster 是 Kubernetes 原生的集群监控方案.Heapster 以 Pod 的形式运行,它会自动发现集群节点.从节点上的 Kubelet 获取监控数据.Kubelet 则是从节点上的 ...

随机推荐

  1. So Easy! HDU - 4565

    易知,有\(S_n = \lceil{a + \sqrt{b}}\rceil ^ n\) \(\because a ^ 2 - 1 < b < a ^ 2\) \(\therefore a ...

  2. 2020.7.19 区间dp阶段测试

    打崩了-- 事先说明,今天没有很在状态,所以题解就直接写在代码注释里的,非常抱歉 T1 颜色联通块 此题有争议,建议跳过 题目描述 N 个方块排成一排,第 i 个颜色为 Ci .定义一个颜色联通块 [ ...

  3. 【CF375D】Trees and Queries——树上启发式合并

    (题面不是来自Luogu) 题目描述 有一个大小为n且以1为根的树,树上每个点都有对应的颜色ci.现给出m次询问v, k,问以v为根的子树中有多少种颜色至少出现了k次. 输入格式 第一行两个数n,m表 ...

  4. 基础知识redis详解--【Foam番茄】

    Redis 学习方式: 上手就用 基本的理论先学习,然后将知识融汇贯通 nosql讲解 为什么要用Nosql 现在都是大数据时代 大数据一般的数据库无法进行分析处理了 至少要会Springboot+S ...

  5. 「考试」noip模拟9,11,13

    9.1 辣鸡 可以把答案分成 每个矩形内部连线 和 矩形之间的连线 两部分 前半部分即为\(2(w-1)(h-1)\),后半部分可以模拟求(就是讨论四种相邻的情况) 如果\(n^2\)选择暴力模拟是有 ...

  6. django+channels+dephne实现websockrt部署

    当你的django项目中使用channels增加了websocket功能的时候,在使用runserver命令启动时,既可以访问http请求,又可以访问websocket请求.但是当你使用uWSGI+n ...

  7. [ACTF2020 新生赛]BackupFile && [ACTF2020 新生赛]Upload &&[GYCTF2020]Blacklist

    [ACTF2020 新生赛]BackupFile 尝试找到源代码,加上题目是备份文件,猜测备份文件里面有网站的源代码,御剑扫描一下,就扫到index.php 访问index.php.bak 下载源代码 ...

  8. Boost UDP Transaction Performance

    提高UDP交互性能 这是一篇个人认为非常非常厉害的文章,取自这里.讲述了如何提升UDP流的处理速率,但实际涉及的技术点不仅仅限于UDP.这篇文章中涉及的技术正好可以把前段时间了解的知识串联起来.作者: ...

  9. 软工个人项目 ——wc.exe

    1.GitHub项目地址 https://github.com/k8kiw/WordCount 2.PSP预计时间 PSP2.1 Personal Software Process Stages 预估 ...

  10. 熊猫全球站视点关注,韩国投入47亿韩元开发区块链等ICT技术

    韩国科学技术信息通信部评选出18个包括区块链项目在内的政府扶持项目,为信息通信(ICT)创新企业提供技术开发支持. 熊猫全球站获悉,韩国政府计划分期选拔第一阶段(前期策划阶段3个月)和第二阶段(技术开 ...