热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何优雅地使用云原生Prometheus监控集群

作者陈凯烨,腾讯云前端开发工程师。负责TKE集群,弹性集群和云原生监控等模块控制台开发。概述Prometheus是一套开源的系统监控报警框架。2016年,Prometheus正式加

作者陈凯烨,腾讯云前端开发工程师。负责 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 实例或者多个地域的集群,从而达到一键同步,管理多个集群的效果。


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


总结

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


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




推荐阅读
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 本文介绍了获取关联数组键的列表的方法,即使用Object.keys()函数。同时还提到了该方法在不同浏览器的支持情况,并附上了一个代码片段供读者参考。 ... [详细]
  • 先看看ElementUI里关于el-table的template数据结构:<template><el-table:datatableData><e ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • node.jsrequire和ES6导入导出的区别原 ... [详细]
  • Vue3中setup函数的参数props和context配置详解
    本文详细介绍了Vue3中setup函数的参数props和context的配置方法,包括props的接收和配置声明,以及未通过props进行接收配置时的输出值。同时还介绍了父组件传递给子组件的值和模板的相关内容。阅读本文后,读者将对Vue3中setup函数的参数props和context的配置有更深入的理解。 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • 前段时间做一个项目,需求是对每个视频添加预览图,这个问题最终选择方案是:用canvas.toDataYRL();来做转换获取视频的一个截图,添加到页面中,达到自动添加预览图的目的。 ... [详细]
author-avatar
心之约会446
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有