这篇文章给大家介绍如何优雅地使用云原生Prometheus 监控集群,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
Prometheus 是一套开源的系统监控报警框架。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。
登录容器服务控制台,选择左侧导航栏中的【云原⽣监控】
点击⻚⾯上⽅的【新建】按钮,进⼊【创建监控实例】⻚⾯。如下图所示:
在【创建监控实例⻚⾯】,根据提示设置集群信息。如下图所示:
地域: 选择您希望部署该实例的地域,实例创建后 地域⽆法修改,建议您根据所在地理位置选择靠近业务的地域,可降低访问延迟,提高数据上报速度。
⽹络:需选择当前地域下已有的私有网络和子网,创建后不可修改。若在该地域下没有 vpc 资源可跳转到私有⽹络控制台新建 vpc。实例默认情况下只能监控本 vpc 网络的集群,若您希望监控其他 vpc 集群,您需要使⽤云联⽹等服务进⾏ vpc ⽹络打通。
数据存储时间:选择数据存储时间,可选 15天/ 3个⽉/ 6个⽉/⼀年。实例创建成功后将⾃动为您创建对象存储 COS 存储桶并按照实际资源使⽤情况计费。详情请参见对象存储计费概述。
Grafana组件:此处需要设置登录用户名和密码用于 Grafana 登陆。Grafana 默认只支持 vpc 内访问,实例创建后,您可以根据业务需要开通 Grafana 外网访问。
AlertManger:您可通过添加⾃定义的 AlertManger 地址,将实例产⽣的告警发往自建的 AlertManger。
实例创建完成后,将处于运行中状态,您可点击实例查看其基本信息。除了创建时指定的⼀些信息外,还包含⼀些创建完成后提供的信息:
对象存储桶:云原⽣监控使⽤对象存储在进⾏数据持久化存储,实例将在您账号下创建⼀个对象存储的桶⽤于存储数据。
Prometheus 数据查询地址:该接⼝⽤于提供数据查询,targets 查询,rules 查询等。您可以使⽤该地址对接⾃建的 Grafana
Grafana:默认为您提供了内⽹地址,您可以选择性开启外⽹访问,开启后将⽣成固定的外⽹域名。
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 所定义的采集相关的 CRD,例如 Prometheus CRD,ServiceMonitor,PodMonitor 等。具体可以参考【prometheus operator】
当成功关联集群后,会在被关联集群的 prom-xxx 命名空间下创建⼀个名如【tke-cls-xxx】的 Prometheus CRD 资源。可以通过修改此资源来修改全局采集配置,额外的 labels 等等。
云原⽣监控⽀持创建【ServiceMonitor】,您可以通过控制台创建,也可以直接在集群⾥创建 ServiceMonitor。 选择该集群中的任意 service 自动聚和成 Yaml。
云原监控支持创建【PodMonitor】,您可以通过控制台创建,也可以直接在集群⾥创建 PodMonitor。
云原⽣监控⽀持直接创建 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 ⽬标】来查看当前所有被监控的对象的状态。
聚合规则⽤于使⽤ 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 监控集群就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。