温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-12-22 17:14:11 来源:亿速云 阅读:175 作者:柒染 栏目:云计算

这篇文章给大家介绍如何优雅地使用云原生Prometheus 监控集群,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

概述

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

实例管理

创建实例

  1. 登录容器服务控制台,选择左侧导航栏中的【云原⽣监控】

  2. 点击⻚⾯上⽅的【新建】按钮,进⼊【创建监控实例】⻚⾯。如下图所示: 如何优雅地使用云原生Prometheus 监控集群

  3. 在【创建监控实例⻚⾯】,根据提示设置集群信息。如下图所示: 如何优雅地使用云原生Prometheus 监控集群

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

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

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

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

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

基础信息

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

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

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

  • 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 等。当您后续进行了集群关联后,被关联集群的数据就可以在默认监控面板中查看。

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

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

多集群管理

关联集群

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

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

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

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 等等。 如何优雅地使用云原生Prometheus 监控集群

ServiceMonitor

云原⽣监控⽀持创建【ServiceMonitor】,您可以通过控制台创建,也可以直接在集群⾥创建 ServiceMonitor。 如何优雅地使用云原生Prometheus 监控集群 如何优雅地使用云原生Prometheus 监控集群 选择该集群中的任意 service 自动聚和成 Yaml。

PodMonitor

云原监控支持创建【PodMonitor】,您可以通过控制台创建,也可以直接在集群⾥创建 PodMonitor。 如何优雅地使用云原生Prometheus 监控集群 如何优雅地使用云原生Prometheus 监控集群

Rawjob

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

最终配置

您可以在控制台的集群数据采集配置右上⻆看到最终⽣成的 Prometheus 配置⽂件 如何优雅地使用云原生Prometheus 监控集群 您也可以在被关联集群的 prom-xxx 命名空间下,通过查看 prometheus-tke-cls-xxx 的 secret 来查看最终配置 如何优雅地使用云原生Prometheus 监控集群

挂载⽂件到采集器

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

  • 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】组件。

将添加以下采集项:

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

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

将添加以下聚合规则:

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

查看 targets

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

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

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

聚合规则

简介

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

创建聚合规则

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

告警

简介

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

创建告警规则

您可以通过控制台来创建告警规则,⼀个告警可以配置多条规则: 如何优雅地使用云原生Prometheus 监控集群

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

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

  • PromQL:规则语句

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

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

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

查看告警历史

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

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

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

您可以通过在集群内直接创建【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 监控集群

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

  • 名称:模板名称。

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

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

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

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

关联实例列表

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

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

关联实例

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

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

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

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

关于如何优雅地使用云原生Prometheus 监控集群就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI