更新时间:2024-10-14 GMT+08:00

Prometheus

插件简介

Prometheus是一套开源的系统监控报警框架。它启发于Google的borgmon监控系统,由工作在SoundCloud的Google前员工在2012年创建,作为社区开源项目进行开发,并于2015年正式发布。2016年,Prometheus正式加入Cloud Native Computing Foundation,成为受欢迎度仅次于Kubernetes的项目。

在云容器引擎CCE中,支持以插件的方式快捷安装Prometheus。

插件官网:https://prometheus.io/

开源社区地址:https://github.com/prometheus/prometheus

约束与限制

CCE提供的Prometheus插件仅支持1.21及以下版本的集群。1.23及以上集群请使用云原生监控插件插件替代。

插件特点

作为新一代的监控框架,Prometheus具有以下特点:

  • 强大的多维度数据模型:
    1. 时间序列数据通过metric名和键值对来区分。
    2. 所有的metrics都可以设置任意的多维标签。
    3. 数据模型更随意,不需要刻意设置为以点分隔的字符串。
    4. 可以对数据模型进行聚合,切割和切片操作。
    5. 支持双精度浮点类型,标签可以设为全unicode。
  • 灵活而强大的查询语句(PromQL):在同一个查询语句,可以对多个metrics进行乘法、加法、连接、取分数位等操作。
  • 易于管理:Prometheus server是一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。
  • 高效:平均每个采样点仅占 3.5 bytes,且一个Prometheus server可以处理数百万的metrics。
  • 使用pull模式采集时间序列数据,这样不仅有利于本机测试而且可以避免有问题的服务器推送坏的metrics。
  • 可以采用push gateway的方式把时间序列数据推送至Prometheus server端。
  • 可以通过服务发现或者静态配置去获取监控的targets。
  • 有多种可视化图形界面。
  • 易于伸缩。

安装插件

  1. 登录CCE控制台,单击集群名称进入集群,单击左侧导航栏的“插件中心”,在右侧找到Prometheus,单击“安装”
  2. “规格配置”步骤中,配置以下参数:

    表1 Prometheus配置参数说明

    参数

    参数说明

    插件规格

    根据业务需求,选择插件的规格,包含如下选项:

    • 演示规格(100容器以内):适用于体验和功能演示环境,该规模下prometheus占用资源较少,但处理能力有限。建议在集群内容器数目不超过100时使用。
    • 小规格(2000容器以内):建议在集群中的容器数目不超过2000时使用。
    • 中规格(5000容器以内):建议在集群中的容器数目不超过5000时使用。
    • 大规格(超过5000容器):建议集群中容器数目超过5000时使用此规格。

    实例数

    选择上方插件规格后,显示插件中的实例数,此处仅作显示。

    容器

    选择插件规格后,显示插件容器的CPU和内存配额,此处仅作显示。

    数据保留期

    自定义监控数据需要保留的天数,默认为15天。

    存储

    支持云硬盘作为存储,按照界面提示配置如下参数:

    • 可用区:请根据业务需要进行选择。可用区是在同一区域下,电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。
    • 子类型:支持普通IO、高IO和超高IO三种类型。
    • 容量:请根据业务需要输入存储容量,默认10G。
    说明:

    若命名空间monitoring下已存在pvc,将使用此存储作为存储源。

  3. 单击“安装”。安装完成后,插件会在集群中部署以下实例。

    • prometheus-operator:根据自定义资源(Custom Resource Definition / CRDs)来部署和管理Prometheus Server,同时监控这些自定义资源事件的变化来做相应的处理,是整个系统的控制中心。
    • prometheus(Server):Operator根据自定义资源Prometheus类型中定义的内容而部署的Prometheus Server集群,这些自定义资源可以看作是用来管理Prometheus Server集群的 StatefulSets 资源。
    • prometheus-kube-state-metrics:将Prometheus的metrics数据格式转换成K8s API接口能识别的格式。
    • custom-metrics-apiserver:将自定义指标聚合到原生的kubernetes apiserver。
    • prometheus-node-exporter:每个节点上均有部署,收集Node级别的监控数据。
    • grafana:可视化浏览普罗监控数据。

通过Metrics API提供资源指标

容器和节点的资源指标,如CPU、内存使用量,可通过Kubernetes的Metrics API获得。这些指标可以直接被用户访问,比如用kubectl top命令,也可以被HPA或者CustomedHPA使用,根据资源使用率使负载弹性伸缩。

插件可为Kubernetes提供Metrics API,但默认未开启,若要将其开启,需要创建以下APIService对象:

apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:
  labels:
    app: custom-metrics-apiserver
    release: cceaddon-prometheus
  name: v1beta1.metrics.k8s.io
spec:
  group: metrics.k8s.io
  groupPriorityMinimum: 100
  insecureSkipTLSVerify: true
  service:
    name: custom-metrics-apiserver
    namespace: monitoring
    port: 443
  version: v1beta1
  versionPriority: 100

可以将该对象保存为文件,命名为metrics-apiservice.yaml,然后执行以下命令:

kubectl create -f metrics-apiservice.yaml

执行kubectl top pod -n monitoring命令,若显示如下,则表示Metrics API能正常访问:

# kubectl top pod -n monitoring
NAME                                                      CPU(cores)   MEMORY(bytes)
......
custom-metrics-apiserver-d4f556ff9-l2j2m                  38m          44Mi
......

卸载插件时,需要执行以下kubectl命令,同时删除APIService对象,否则残留的APIService资源将导致metrics-server插件安装失败。

kubectl delete APIService v1beta1.metrics.k8s.io

参考资源