插件简介
Prometheus是一套开源的系统监控报警框架。它启发于Google的borgmon监控系统,由工作在SoundCloud的Google前员工在2012年创建,作为社区开源项目进行开发,并于2015年正式发布。2016年,Prometheus正式加入Cloud Native Computing Foundation,成为受欢迎度仅次于Kubernetes的项目。
在云容器引擎CCE中,支持以插件的方式快捷安装Prometheus。
开源社区地址:https://github.com/prometheus/prometheus
约束与限制
CCE提供的Prometheus插件仅支持1.21及以下版本的集群。
插件特点
作为新一代的监控框架,Prometheus具有以下特点:
-
强大的多维度数据模型:
- 时间序列数据通过metric名和键值对来区分。
- 所有的metrics都可以设置任意的多维标签。
- 数据模型更随意,不需要刻意设置为以点分隔的字符串。
- 可以对数据模型进行聚合,切割和切片操作。
- 支持双精度浮点类型,标签可以设为全unicode。
-
灵活而强大的查询语句(PromQL):在同一个查询语句,可以对多个metrics进行乘法、加法、连接、取分数位等操作。
-
易于管理:Prometheus server是一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。
-
高效:平均每个采样点仅占3.5 bytes,且一个Prometheus server可以处理数百万的metrics。
-
使用pull模式采集时间序列数据,这样不仅有利于本机测试而且可以避免有问题的服务器推送坏的metrics。
-
可以采用push gateway的方式把时间序列数据推送至Prometheus server端。
-
可以通过服务发现或者静态配置去获取监控的targets。
-
有多种可视化图形界面。
-
易于伸缩。
需要指出的是,由于数据采集可能会有丢失,所以Prometheus不适用对采集数据要100%准确的情形。但如果用于记录时间序列数据,Prometheus具有很大的查询优势,此外,Prometheus适用于微服务的体系架构。
安装插件
步骤 1 登录CCE控制台,单击集群名称进入集群,单击左侧导航栏的“插件管理”,在右侧找到 Prometheus ,单击“安装”。
步骤 2 在“规格配置”步骤中,配置以下参数:
参数 | 参数说明 |
---|---|
插件规格 | 根据业务需求,选择插件的规格,包含如下选项: 演示规格(100容器以内):适用于体验和功能演示环境,该规模下prometheus占用资源较少,但处理能力有限。建议在集群内容器数目不超过100时使用。 小规格(2000容器以内):建议在集群中的容器数目不超过2000时使用。 中规格(5000容器以内):建议在集群中的容器数目不超过5000时使用。 大规格(超过5000容器):建议集群中容器数目超过5000时使用此规格。 |
实例数 | 选择上方插件规格后,显示插件中的实例数,此处仅作显示。 |
容器 | 选择插件规格后,显示插件容器的CPU和内存配额,此处仅作显示。 |
数据保留期 | 自定义监控数据需要保留的天数,默认为15天。 |
存储 | 支持云硬盘作为存储,按照界面提示配置如下参数: 可用区:请根据业务需要进行选择。可用区是在同一区域下,电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。 子类型:支持普通IO、高IO和超高IO三种类型。 容量:请根据业务需要输入存储容量,默认10G。 说明 若命名空间monitoring下已存在pvc,将使用此存储作为存储源。 |
步骤 2 单击“安装”。安装完成后,插件会在集群中部署以下实例。
- 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:可视化浏览普罗监控数据。
提供资源指标
容器和节点的资源指标,如CPU、内存使用量,可通过Kubernetes的Metrics API获得。这些指标可以直接被用户访问,比如用kubectl top命令,也可以被HPA或者CustomedHPA使用,根据资源使用率使负载弹性伸缩。
Prometheus插件可为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命令,若显示如下,则表示Metrics API是否能正常访问:
kubectl top pod -n monitoring
NAME CPU(cores) MEMORY(bytes)
cceaddon-prometheus-kube-state-metrics-7b77694f48-zc9pl 4m 16Mi
cceaddon-prometheus-node-exporter-4jvwv 1m 16Mi
cceaddon-prometheus-node-exporter-85zl4 2m 39Mi
cceaddon-prometheus-node-exporter-qbrmb 0m 15Mi
cceaddon-prometheus-operator-659547567d-j6484 0m 48Mi
custom-metrics-apiserver-d4f556ff9-l2j2m 38m 44Mi
grafana-78f9966c99-xprkx 0m 25Mi
prometheus-0 18m 706Mi
参考资源
- Prometheus概念及详细配置请参阅Prometheus 官方文档
- Node exporter安装请参考node_exporter github 仓库
- Slack 信息发送请参考 Incoming Webhooks
版本记录
CCE插件版本记录