54 K8S 之 Prometheus 介绍
Metrics Server 基于内存存储,重启后数据将全部丢失,而且它仅能留存最近收集到的指标数据,因此,如果用户希望访问历史数据,就不得不借助第三方的监控系统(例如 Prometheus 等)或自行开发实现这样的功能。
对于使用 kubeadm 部署的 Kubernetes 集群来说,若未指定签署节点证书的 CA,也未给每个节点配置自定义证书,则各 kubelet 通常是在 Bootstrap 过程中生成自签证书,这类证书无法由 Metrics Server 完成 CA 验证,因此需要使用--kubelet-insecure-tls 选项来禁用这种验证功能。
kubectl top 命令可显示节点和 Pod 对象的资源使用信息,它基于集群中的资源指标 API 来收集各项指标数据。它有 node 和 pod 两个子命令,分别用于显示 Node 对象和 Pod 对象的相关资源占用率。
列出 Node 资源占用率的命令语法格式为 kubectl top node [-llabel | NAME],例如下面命令结果显示了各节点累计 CPU 资源占用时长与百分比,以及内容空间占用量与占用比例。必要时,我们也可以在命令中直接给出要查看的特定节点的标识,并使用标签选择器进行节点过滤。
Prometheus 是第一个开发了 Kubernetes 自定义资源指标适配器的监控系统,该适配器名为 Kubernetes Custom Metrics Adapter,由托管在 GitHub 上的 k8s-prometheus-adapter 项目提供。它负责以聚合 API Server 的形式服务于 custom.metrics.k8s.io 这一 API 群组,并将对自定义指标的查询请求转发至后端的 Prometheus Server。
Prometheus 是一个开源的服务监控系统和时序数据库。Prometheus 系统的整体工作架构,其中 Prometheus Server 基于服务发现机制或静态配置获取要监视的目标,并通过每个目标上的指标暴露器 Exporter 来采集指标数据。Prometheus Server 内置了一个基于文件的时间序列存储来持久化存储指标数据,用户可使用 PromDash 或 PromQL 接口来检索数据,也可按需将告警需求发往 Alertmanager 完成告警内容发送。另外,一些短期运行的作业的生命周期过短,难以有效地将必要的指标数据传递到 Server 端,它们一般会采用推送方式输出指标数据,Prometheus 借助 Pushgateway 接收这些推送的数据,进而由 Server 端进行抓取。
Exporter 独立运行于要获取测量指标的应用程序之外,负责接收来自 Prometheus Server 的指标获取请求,它通过目标应用程序(真正的目标)内置的指标接口获取指标数据,并将这些指标数据转换为合用的目标格式后响应给 Prometheus。因此,Exporter 更像是“一对一”的代理,它作为 Prometheus Server 的 target 存在,在应用程序的指标接口和 Prometheus 的文本指标格式之间转换数据格式。不过,Exporter 不存储也不缓存任何数据。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/d6b17d7f3c572bf044a6b338e】。文章转载请联系作者。
评论