prometheus
插件简介
Prometheus是一套开源的系统监控报警框架。它启发于Google的borgmon监控系统,由工作在SoundCloud的Google前员工在2012年创建,作为社区开源项目进行开发,并于2015年正式发布。2016年,Prometheus正式加入Cloud Native Computing Foundation,成为受欢迎度仅次于Kubernetes的项目。
在云容器引擎CCE中,支持以插件的方式快捷安装Prometheus。
插件特点
作为新一代的监控框架,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.11及以上版本的CCE集群中安装此插件。
安装插件
- 登录CCE控制台,单击左侧导航栏的“插件管理”,在“插件市场”页签下,单击Prometheus下的“安装插件”按钮。
- 在安装插件页面,选择安装的集群和插件版本,单击“下一步:规格配置”。
- 在“规格配置”步骤中,配置以下参数:
表1 Prometheus配置参数说明 参数
参数说明
插件规格
根据业务需求,选择插件的规格,包含如下选项:
- 演示规格(100容器以内):适用于体验和功能演示环境,该规模下prometheus占用资源较少,但处理能力有限。建议在集群内容器数目不超过100时使用。
- 小规格(2000容器以内):建议在集群中的容器数目不超过2000时使用。
- 中规格(5000容器以内):建议在集群中的容器数目不超过5000时使用。
- 大规格(超过5000容器):建议集群中容器数目超过5000时使用此规格。
实例数
选择上方插件规格后,显示插件中的实例数,此处仅作显示。
容器
选择插件规格后,显示插件容器的CPU和内存配额,此处仅作显示。
对接远端
可根据实际场景选择对应参数:
- 不对接:普罗采集的数据仅存储在本地数据盘中。
- 对接CIE:普罗采集的数据将同时存放在本地数据盘和CIE远端服务中。
- 自定义:普罗采集的数据将同时存放在本地数据盘和自定义的远端服务中。远端地址、HTTPS认证等所需的信息,需从第三方服务获取。
监控数据保留期
自定义监控数据需要保留的天数,默认为15天。
存储
按照界面提示配置如下参数:
- 类型:支持云硬盘。
- 可用区:请根据业务需要进行选择。可用区是在同一区域下,电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。
- 子类型:支持普通IO、高IO和超高IO三种类型。各类型对比请参见系统盘和数据盘。
- 容量:请根据业务需要输入存储容量,默认10G。
说明:若命名空间monitoring下已存在pvc,将使用此存储作为存储源。
- 单击“安装”。
待插件安装完成后,单击“返回”,在“插件实例”页签下,选择对应的集群,可查看到运行中的实例,这表明该插件已在当前集群的各节点中安装。
- 在CCE控制台,单击左侧导航栏的“插件管理”,在“插件实例”中,单击“Prometheus”进入详情页,可以查看插件实例的详细情况。
提供资源指标
容器和节点的资源指标,如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
升级插件
- 登录CCE控制台,在左侧导航栏中选择“插件管理”,在“插件实例”页签下,选择对应的集群,单击“Prometheus”下的“ 升级”。
- 如果升级按钮处于冻结状态,则说明当前插件版本是最新的版本,不需要进行升级操作。
- 升级“Prometheus”插件时,会替换原先节点上的旧版本的“Prometheus”插件,安装最新版本的“Prometheus”插件以实现功能的快速升级。
- 在基本信息页面选择插件版本,单击“下一步”。
- 参考安装插件中参数说明配置参数后,单击“升级”即可升级“Prometheus”插件。
卸载插件
- 登录CCE控制台,单击左侧导航栏的“插件管理”,在“插件实例”页签下,选择对应的集群,单击Prometheus下的“卸载”。
- 在弹出的窗口中,单击“是”,可卸载该插件。
参考资源
- Prometheus概念及详细配置请参阅Prometheus 官方文档
- Node exporter安装请参考node_exporter github 仓库
- Slack 信息发送请参考 Incoming Webhooks
