在这个由三部分组成的系列中,您将了解 习 如何使用 Helm 在 Kubernetes 上集成 Prometheus 和 Grafana,以及如何在 Grafana 上创建简单的仪表板。 Prometheus 和 Grafana 是 Kubernetes 上最流行的两个开源监控工具。 了解 习 如何使用 Helm 集成这两个工具,从而轻松监控 Kubernetes 集群并对其进行故障排除。您还将更深入地了解集群的运行状况和性能,这将跟踪 Kubernetes 集群上的资源和性能指标。
如前所述,Prometheus 和 Grafana 是用于监控容器编排平台的流行工具。 两个最流行的容器编排工具是 Docker Swarm 和 Kubernetes。 第一部分将向您介绍使用 Prometheus 和 Grafana 的前提条件,并了解 Prometheus 和 Grafana 是什么。
要跟上本指南的进度,您需要:
安装 docker:要在计算机上安装 docker,请查看官方 docker 文档
安装 kubectl:这允许您与 Kubernetes 集群进行通信。 若要在本地计算机上安装 Kubectl 工具,请遵循官方 Kubectl 文档指南
Kubernetes 基础知识:确保您对 Kubernetes 有一定的了解。 您可以通过阅读 Kubernetes 官方文档来了解有关 K8S 的更多信息 习。
设置 Kubernetes 集群:在 Kubernetes 集群上安装 Prometheus 和 Grafana。 本指南将使用 minikube(快速指南这是一个免费的本地 Kubernetes 集群。
Prometheus 是一个开源的 DevOps 工具。 它为 Kubernetes 等容器编排平台提供监控和实时告警功能,以时序数据的形式从平台收集和存储指标。 其次,它具有监控容器编排平台的开箱即用功能,并且是其他数据可视化库(如 Grafana)的数据源。
Prometheus 从 Kubernetes 集群收集的指标包括:
Kubernetes 集群运行状况。
CPU 状态。
内存使用量。
Kubernetes 节点状态。
潜在的性能瓶颈报告。
性能指标。 服务器资源。
Grafana 是一个多平台、开源**应用程序,用于分析和交互式可视化。 当您将其连接到受支持的数据源(如 Prometheus)时,它将提供:
交互式控制面板。
交互式图表。
可视 化。
网络警报。 无论数据源是什么,Grafana 都可以为您查询、可视化和理解您的指标。 除了 Prometheus 之外,Grafana 还支持其他几个数据源,例如:
influxdb
azuremonitor
datadog
graphite
aws cloudwatch。
postgresql
microsoft sql server (mssql)。
elasticsearch
google cloud monitoring
mysqlalertmanager
Loki 可以选择从头开始创建仪表板,或导入 Grafana 已经提供的仪表板并对其进行自定义以满足您的需求。 大多数 DevOps 专业人员使用 Grafana 和 Prometheus 创建具有数据可视化仪表板的强大时间序列数据库。
在这里,我们将创建一个仪表板,用于可视化从 Prometheus 数据源收集的指标。
下图显示了 Prometheus 的组件及其工作原理
这些都是 Prometheus 的组件:
prometheus server是 Prometheus 架构的核心组件。 这是实际监控工作发生的地方。
alertmanager通过电子邮件和其他通信渠道(如 Slack)向用户发送警报。
pushgateway可以支持临时任务。 它允许用户将时间序列数据推送到 Prometheus 目标。 它还处理短期任务的指标。
Prometheus 服务器可以进一步分为三个组件:
data retrieval worker从容器编排平台抓取和收集指标。 然后,它将指标转换为时间序列数据。 它从许多指标中收集指标,这些指标在其设置中指定。
time series database存储来自数据检索组件的时间序列数据。
http server响应时序数据的请求和 promql 查询。 然后,它会在 Web 用户界面或仪表板上显示信息。 它既可以使用 Grafana 等第三方平台,也可以使用内置的 Prometheus Web UI。
设置 Prometheus 和 Grafana 进行监控给我们带来了很多好处:
您将获得一个完整的端到端解决方案,用于观察和监控 Kubernetes 集群。
您可以使用 Prometheus PromQL 查询语言查询指标。
如果您有微服务架构,Prometheus 会同时跟踪您的所有微服务。
当服务出现故障时,会立即发出警报。
Grafana 仪表板提供群集的性能和运行状况报告。
在 Kubernetes 上集成 Prometheus 和 Grafana 时,开发人员通常采用两种方法:
手动 Kubernetes 部署:在这种方法中,开发人员需要编写 Kubernetes 部署和服务 yaml 文件。 需要为 Prometheus 和 Grafana 应用程序编写 YAML。 在 yaml 文件中,指定在 Kubernetes 上集成 Prometheus 和 Grafana 的所有配置。 然后,将这些文件部署到 Kubernetes 集群,以便 Prometheus 和 Grafana 正常工作。 这种方法的缺点是开发人员可能拥有大量 YAML 文件,这对大多数 DevOps 从业者来说可能很烦人。 如果您在任何 yaml 文件中出错,您将无法在 Kubernetes 上集成 Prometheus 和 Grafana。
使用 helm:这是将应用程序容器部署到 Kubernetes最简单和最简单的方法。Helm 是 Kubernetes 的官方包管理器。 借助 Helm,您可以简化 Kubernetes 应用程序的安装、部署和管理。 Helm 将 Kubernetes 应用程序打包到 Helm 图表中。
helm chart 是所有 yaml 文件的集合:
部署
服务业
钥匙
configmaps manifests
你将使用这些文件将应用程序容器部署到 Kubernetes。 Helm 允许用户拥有带有清单 YAML 文件的 Helm 图表,而不是为每个应用程序容器创建单独的 YAML 文件。