乐趣区

关于腾讯云:如何优雅地使用云原生-Prometheus-监控集群

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

概述

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

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

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

基本功能

实例治理

创立实例

  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 实例或者多个地区的集群,从而达到一键同步,治理多个集群的成果。

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

    总结

    本文具体介绍了云原生监控服务的基本功能和应用形式,在原有监控、采集、存储、告警、图表等能力的根底上再减少了模板性能,使得反对对多集群架构服务进行监控。

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

    退出移动版