在 Kubernetes 集群中,对于每个应用的监控数据收集、存储和分析都是非常重要的一项工作。而 Prometheus 是一个非常流行,基于时间序列数据的监控系统,它可以监控 Kubernetes 集群中的各种资源、服务以及应用程序的运行状况。本篇文章将介绍如何在 Kubernetes 中部署和使用 Prometheus,包括 Prometheus Server 的部署、配置以及 AlertManager 的配置。
环境说明
在本篇文章中将使用以下环境:
- Kubernetes 版本:v1.19.0
- Prometheus 版本:v2.23.0
- AlertManager 版本:v0.21.0
Prometheus Server 的部署
安装 Prometheus Operator
Prometheus Operator 是由 CoreOS 开源的 Kubernetes Operator,用于管理 Prometheus、Alertmanager 和 Grafana 等监控相关的应用程序。在 Kubernetes 中安装 Prometheus Operator 有助于简化 Prometheus Server 的部署过程。
在 Kubernetes 集群中安装 Prometheus Operator 需要先安装官方提供的 CustomResourceDefinition 资源,部署步骤如下:
-- -------------------- ---- ------- - ---- --------------------- ----------- -- ----- --------- --------- ----- ---------- - -- ------------------------ -- ----------- ---------------------------- ----- ------------------------ --------- ----- ---------------------------------- ----- ------ --------------------- -------- -- ------ ---------- ------ ------- ------------ --------- ---------- ----- ---------- ----------- - ---- ----------- ---------------------------- ----- ------------------------ --------- ----- ------------------------------------- ----- ------ --------------------- -------- -- ------ ---------- ------ ------- --------------- --------- -------------- ----- -------------- ----------- - ---- - ----- ----------- ---------------------------- ----- ------------------------ --------- ----- ------------------------------------- ----- ------ --------------------- -------- -- ------ ---------- ------ ------- --------------- --------- -------------- ----- -------------- - -- ---------- ------------- -------- -- ------- ----------- ------- ----- ---------- --------- ----- ------------------- ---------- ---------- ----- --------- - --------- ------------ ----- ------------------- --------- --------- ------- ----- ------------------- ----- ------------------- ------------------- ----------- - ----- ------------------- ------ ------------------------------------------ ----- - -------------------------------------------------------------- ------ - ----- ---- -------------- ---- --------- --- --------------- -------- ----- ------ ----- ---- -------------------- - -------------- --
部署 Prometheus Server
在完成 Prometheus Operator 的部署后,我们可以安装 Prometheus Server。在此之前,我们需要对 Prometheus Server 进行配置,在 prometheus.yml
文件中定义需要监控的目标及其配置,我们可以定义 Kubernetes 相关的监控指标、自定义的指标等等。
下面是一个简单的 prometheus.yml
配置文件示例,用于监控 Kubernetes 中的 Pod、Service、Node 等资源:
-- -------------------- ---- ------- ------- ---------------- --- ----------- - ---------------------------------- --------------- - --------- --------------------- ---------------------- - ----- --------- ------- ----- ----------- -------- ---------------------------------------------------- ------------ ---------------------- ------------------ --------------------------------------------------- ---------------- - -------------- - --------------------------- - ------------------------------ - ------------------------------------ ------- ---- ------ ------------------- - --------- ---------------- ---------------------- - ----- ---- ---------------- - ------- ---- ------ ---- -------------- - --------------------------------------------------- - --------- --------------- ---------------------- - ----- --- ---------------- - ------- -------- ------ -------------------------------- - ------- ------- -------------- - --------------------------- ------------- -------------------- - ------- ------- -------------- - -------------------------- ------------- -------------------
在定义好 prometheus.yml
配置文件之后,我们就可以部署 Prometheus Server 了:
-- -------------------- ---- ------- ----------- ------------------------ ----- ---------- --------- ----- ---------- ---------- ---------- ----- --------- - ------------------- ---------- -------------------------------- ----------- - ---------- ----------------------- ------------ ----------------------- --------------------- ---------- ------- ---- ------ ------- ------- --------- ---- ------ ------- ------- ------------- ------------ ----------- ---------- --------- -------------- - ---------- ---------- ----- ----------------- ------- ------ ------ ---------------------- ----- -------------------------------------------------------------------------------------- -- ---------------------------------------------------------------------------- ---- -- ------- --------- ------- ------------ -------- ----------- -- ----------------------- -- --- ----------- -------- ------
在这个配置中,我们配置了单次实例 Replicas 始终为 1 的规则。在此之后,我们可以启动 AlertManager 并将其用于 Prometheus Server 配置中。
部署完成后我们可以通过以下命令验证 Prometheus Server 是否部署成功:
kubectl port-forward service/prometheus 9090 -n monitoring
在浏览器中输入地址 http://localhost:9090/ 即可看到 Prometheus 的 WEB UI。
AlertManager 的部署和配置
AlertManager 的部署
在 Prometheus Operator 中包含了 AlertManager 组件的部署,因此我们无需再额外安装 AlertManager。
通过部署 Prometheus Server 中的配置文件,我们已经可以在 Prometheus 中监控 Kubernetes 中的各种指标,但是对于应用层面的监控就需要使用 AlertManager。未处理的警报需要在全系统范围内负责发出,这是 AlertManager 所做的事情。
部署完成后我们可以用以下命令验证 AlertManager 是否部署成功:
kubectl port-forward service/alertmanager-main 9093:9093 -n monitoring
在浏览器中输入地址 http://localhost:9093/ 即可看到 AlertManager 的 WEB UI。
AlertManager 的配置
在部署完成后,我们需要在 AlertManager 中配置用于处理警报的接收程序,以下是 AlertManager 的配置示例:
-- -------------------- ---- ------- ------ --------- ------------ ------- - ----------- - ------ ---------- --------------- --------- ---------- - ----------- - --------- --------- ------------------ --------- ------------ ---------- - ---------- ----------------- - ----- ---------- ------------------ - ------------ -------------------
在上述配置中,我们定义了 AlertManager 的路由规则,并为不同的警报定义了不同的接收程序。其中 pager-duty
接收程序用于连接到 Alertmanager 和 PagerDuty,开发人员可以使用自己的接收程序。
总结
本文介绍了如何在 Kubernetes 集群中部署和使用 Prometheus 监控系统,包括 Prometheus Server 的部署、配置,以及 AlertManager 的部署和配置。通过对 Prometheus 和 AlertManager 的学习和使用,可以提高 Kubernetes 环境的监控水平,帮助我们更好地了解 Kubernetes 环境中的各种运行状况,从而以最小的代价提高服务的可用性和稳定性。
希望本文能够对大家对于 Kubernetes 监控相关的知识有一定的帮助,如有疑问可以直接在评论区留言或私信作者。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/647473bb968c7c53b01d420b