如何使用 Helm 集成 Prometheus 和 Grafana 第 2 部分在 K8s 上

小夏 科技 更新 2024-02-01

在第 1 部分中,我们了解了 Prometheus 和 Grafana 是什么,以及使用这些工具的先决条件和好处。 在本节中,你将继续学习如何安装 Helm 以及如何使用 Prometheus Helm 图表。

Artifacthub 为 Helm Chart 提供公共和私有存储库。 我们将使用这些 helm 图表在 kubernetes 集群中设置 Pod 和服务。

Helm 社区为各种 Kubernetes 应用程序创建、管理和维护 Helm 图表,并且这些资源会经常更新。 Helm Chart 可重复使用且易于安装。 要使用 Helm 在 Kubernetes 上集成 Prometheus 和 Grafana,让我们从安装 Helm 开始。

在安装 Helm 之前,您必须使用以下命令启动 minikube kubernetes:

minikube start --driver=docker
下图显示了运行中的 minikube。 kubectl 工具现在配置为使用 minikube。

接下来,使用以下命令安装 helm::(取决于您使用的操作系统)。

在 linux 上安装 helm

sudo apt-get install helm
在 Windows 上安装 Helm

choco install kubernetes-helm
在 macOS 系统上安装 Helm

brew install helm
提示:如果您遇到问题,可以查看官方 Helm 文档指南

下图显示了在 Windows 计算机上安装 Helm 的过程

若要获取所有 helm 命令,请运行以下命令:

helm
命令输出:

the kubernetes package managercommon actions for helm:- helm search: search for charts- helm pull: download a chart to your local directory to view- helm install: upload the chart to kubernetes- helm list: list releases of chartsusage: helm [command]**ailable commands: completion generate autocompletion scripts for the specified shell create create a new chart with the given name dependency manage a chart's dependencies env helm client environment information get download extended information of a named release help help about any command history fetch release history install install a chart lint examine a chart for possible issues list list releases package package a chart directory into a chart archive plugin install, list, or uninstall helm plugins pull download a chart from a repository and (optionally) unpack it in local directory push push a chart to remote registry login to or logout from a registry repo add, list, remove, update, and index chart repositories rollback roll back a release to a previous revision search search for a keyword in charts show show information of a chart status display the status of the named release template locally render templates test run tests for a release uninstall uninstall a release upgrade upgrade a release verify verify that a chart at the given path has been signed and is valid version print the client version informationuse "helm [command] -help" for more information about a command.
最常用的 helm 命令是。

Helm 搜索:在 ArtifactHub 存储库中搜索 Helm 图表。

helm pull:从 ArtifactHub 存储库中提取和 helm 图表。

Helm 安装:上传 Helm Chart 并将其部署到 Kubernetes 集群。

Helm List:列出 Kubernetes 集群中部署的所有 Helm Chart。

首先,我们将搜索 Prometheus Helm 图表。 要搜索 Prometheus Helm,请运行以下命令:

helm search hub prometheus
该命令列出了以下 Prometheus Helm 图表:

url chart version app version description v2.47.0 prometheus is a monitoring system and time seri...2.47.1 kube-prometheus-stack collects kubernetes manif...1.1 this is a helm chart for prometheus setup. 2.22.1 prometheus is a monitoring system and time seri...v2.47.0 prometheus is a monitoring system and time seri...v2.47.0 prometheus is a monitoring system and time seri...2.40.0 prometheus collects and stores its metrics as t...v2.47.0 prometheus helm chart for kubernetes prometheus instance created by the coreos prome...
您也可以前往 ArtifactHub 存储库(并搜索官方的 Prometheus Helm 图表,如下图所示:

列表中的第一个是官方的 Prometheus Helm 图表。 若要获取此 helm 图表,请运行以下命令:

helm repo add prometheus-community repo update
输出:

"prometheus-community" has been added to your repositorieshang tight while we grab the latest from your chart repositories...successfully got an update from the "grafana" chart repository...successfully got an update from the "prometheus-community" chart repository...successfully got an update from the "bitnami" chart repositoryupdate complete. ⎈happy helming!⎈
现在,我们已经准备好了最新版本的 Prometheus。

要在 K8S 集群上安装 Prometheus Helm Chart,请执行以下命令helm install命令:

helm install prometheus prometheus-community/prometheus
输出:

name: my-prometheuslast deployed: thu oct 12 20:06:57 2023namespace: monitoringstatus: deployedrevision: 1test suite: nonenotes:the prometheus server can be accessed via port 80 on the following dns name from within your cluster:my-prometheus-server.monitoring.svc.cluster.localget the prometheus server url by running these commands in the same shell: export pod_name=$(kubectl get pods --namespace monitoring -l "app.kubernetes.io/name=prometheus,app.kubernetes.io/instance=my-prometheus" -o jsonpath="") kubectl --namespace monitoring port-forward $pod_name 9090the prometheus alertmanager can be accessed via port 9093 on the following dns name from within your cluster:my-prometheus-alertmanager.monitoring.svc.cluster.localget the alertmanager url by running these commands in the same shell: export pod_name=$(kubectl get pods --namespace monitoring -l "app.kubernetes.io/name=alertmanager,app.kubernetes.io/instance=my-prometheus" -o jsonpath="") kubectl --namespace monitoring port-forward $pod_name 9093####################################################################################### warning: pod security policy has been disabled by default since ########### it deprecated after k8s 1.25+. use ########### (index .values "prometheus-node-exporter" "rbac" ########### . "pspenabled") with (index .values ########### "prometheus-node-exporter" "rbac" "pspannotations") ########### in case you still need it. ######################################################################################the prometheus pushgateway can be accessed via port 9091 on the following dns name from within your cluster:my-prometheus-prometheus-pushgateway.monitoring.svc.cluster.localget the pushgateway url by running these commands in the same shell: export pod_name=$(kubectl get pods --namespace monitoring -l "app=prometheus-pushgateway,component=pushgateway" -o jsonpath="") kubectl --namespace monitoring port-forward $pod_name 9091for more information on running prometheus, visit:
现在我们已经在 Kubernetes 集群上安装了 Prometheus。 我们可以通过 80 端口访问 Prometheus 服务器。 下一步是查看已部署的 Kubernetes 资源,即 Helm Chart 在 Kubernetes 集群中创建的 Pod 和服务。

若要查看已部署的 Kubernetes 资源,请运行以下命令kubectl命令:

kubectl get all
输出:

name ready status restarts agepod/my-prometheus-prometheus-node-exporter-d5l8m 1/1 running 0 27mpod/my-prometheus-prometheus-node-exporter-kfbxb 1/1 running 0 27mpod/my-prometheus-prometheus-pushgateway-86d6f795cb-mlb7d 1/1 running 0 27mpod/my-prometheus-kube-state-metrics-6c4b65c7b9-wbh9r 1/1 running 0 27mpod/my-prometheus-prometheus-node-exporter-2z7rp 1/1 running 0 27mpod/my-prometheus-alertmanager-0 1/1 running 0 27mpod/my-prometheus-server-795d8fc685-zcfct 2/2 running 0 27mname type cluster-ip external-ip port(s) ageservice/my-prometheus-alertmanager-headless clusterip none 9093/tcp 27mservice/my-prometheus-server clusterip 10.43.186.10 80/tcp 27mservice/my-prometheus-prometheus-pushgateway clusterip 10.43.154.83 9091/tcp 27mservice/my-prometheus-alertmanager clusterip 10.43.217.41 9093/tcp 27mservice/my-prometheus-kube-state-metrics clusterip 10.43.168.65 8080/tcp 27mservice/my-prometheus-prometheus-node-exporter clusterip 10.43.195.241 9100/tcp 27mname desired current ready up-to-date **ailable node selector agedaemonset.apps/my-prometheus-prometheus-node-exporter 3 3 3 3 3 kubernetes.io/os=linux 27mname ready up-to-date **ailable agedeployment.apps/my-prometheus-prometheus-pushgateway 1/1 1 1 27mdeployment.apps/my-prometheus-kube-state-metrics 1/1 1 1 27mdeployment.apps/my-prometheus-server 1/1 1 1 27mname desired current ready agereplicaset.apps/my-prometheus-prometheus-pushgateway-86d6f795cb 1 1 1 27mreplicaset.apps/my-prometheus-kube-state-metrics-6c4b65c7b9 1 1 1 27mreplicaset.apps/my-prometheus-server-795d8fc685 1 1 1 27mname ready agestatefulset.apps/my-prometheus-alertmanager 1/1 27m
安装 helm chart 会创建以下 Kubernetes 资源:

pod:主机在集群中部署了 Prometheus Kubernetes 应用程序。

replica sets:Kubernetes 集群中同一应用程序的实例集合。 它提高了应用程序的可靠性。

deployments:这是创建应用程序 Pod 的蓝图。

services:这是在公共 kubernetes 集群中运行的 pod。 我们用它来访问已部署的 Kubernetes 应用程序。

下一步是访问并启动 Prometheus Kubernetes 应用程序。 在这里,将使用 Prometheus 的 Kubernetes 服务访问该应用程序。 若要获取 Prometheus 的所有 Kubernetes 服务,请运行以下命令:

kubectl get service
输出:

name type cluster-ip external-ip port(s) agemy-prometheus-alertmanager-headless clusterip none 9093/tcp 28mmy-prometheus-server clusterip 10.43.186.10 80/tcp 28mmy-prometheus-prometheus-pushgateway clusterip 10.43.154.83 9091/tcp 28mmy-prometheus-alertmanager clusterip 10.43.217.41 9093/tcp 28mmy-prometheus-kube-state-metrics clusterip 10.43.168.65 8080/tcp 28mmy-prometheus-prometheus-node-exporter clusterip 10.43.195.241 9100/tcp 28m
输出列出了 Prometheus 的以下 K8S 服务

prometheus-alertmanager

prometheus-alertmanager-headless

prometheus-kube-state-metrics

prometheus-prometheus-node-exporter

prometheus-prometheus-pushgateway

prometheus-server

我们将使用prometheus-serverKubernetes 服务来访问 Prometheus 应用程序。 prometheus-server的类型为 clusterip。 您只能在 Kubernetes 集群中访问它。 因此,我们需要公开这个 kubernetes 服务,以便可以在 kubernetes 集群之外访问它。 公共prometheus-serverKubernetes 服务将生成一个 URL。 我们可以在浏览器上加载 URL 并访问正在运行的应用程序。

公开prometheus-serverKubernetes 服务,运行以下命令:

kubectl expose service prometheus-server --type=nodeport --target-port=9090 --name=prometheus-server-ext
该命令将clusterip键入为nodeport类型。 这样,prometheus-server它可以通过端口 9090 在 Kubernetes 集群外部访问。

现在,我们在那里prometheus-serverkubernetes service。接下来,使用以下命令访问 Prometheus 应用程序:

minikube service prometheus-server-ext
该命令生成以下 URL:

URL 可能需要等待一段时间才能使用。 您需要在浏览器上执行多次重试,直到使用此 URL 访问 Prometheus Kubernetes 应用程序。 您还需要保持终端打开并运行命令,以便继续访问该服务。

至此,我们已经使用 Helm 在 Kubernetes 上成功安装了 Prometheus。 Prometheus 已经在集群内运行,我们可以使用浏览器或 URL 访问它。

相似文章

    如何使用 Helm 集成 Prometheus 和 Grafana 第 1 部分在 K8s 上

    在这个由三部分组成的系列中,您将了解 习 如何使用 Helm 在 Kubernetes 上集成 Prometheus 和 Grafana,以及如何在 Grafana 上创建简单的仪表板。Prometheus 和 Grafana 是 Kubernetes 上最流行的两个开源监控工具。了解 习 如何使用...

    使用PayPal时如何避免踩到坑

    账户安全。确保您的 PayPal 帐户安全非常重要。用户需要设置复杂的密码并定期更改密码,以防止帐户被盗启用双因素身份验证 FA 以增加帐户安全性定期检查帐户活动以检测异常情况并采取适当的安全措施。此外,请避免在公共网络或不安全的网络上登录您的 PayPal 帐户,以避免帐户信息被盗。.交易风险。在...

    使用 CAD 软件时如何将 CAD 单位设置为毫米

    CAD 计算机辅助设计 软件广泛应用于建筑 机械 电子等各个领域,可以帮助设计师更高效地绘图和设计。在使用CAD软件时,单位设置是一个非常重要的环节,它直接关系到图纸的准确性和设计的质量。在本文中,我们将仔细研究如何将 CAD 单位设置为毫米,以帮助您更好地利用该软件进行设计。.CAD单位设置的重要...

    如何使用海竿轮?探索汽车中海竿轮的魔力

    当高端汽车技术遇上传统渔具,又会产生怎样的火花?今天,就让我们一起走进这场精彩的跨界融合,一起探索海竿轮在汽车中的独特应用。在这里,您将了解不同车型的特点,海竿轮的使用注意事项,以及相关品牌的精彩介绍。系好安全带,我们的旅程就要开始了!.海竿轮 不仅仅是一种捕鱼工具 海竿轮原本是钓鱼爱好者手中的得力...

    太极散手如何利用虚实在在的反击,在实战中取胜?

    利用虚实反击在实战中取胜的方法主要包括以下几个方面 假动作 用假动作或攻击来迷惑对手,使他们误判或做出反应,从而为实际的反击创造机会。一个错误的举动可以是对对手的某个部位的假装攻击,也可以做出一个看似有缺陷的举动来引诱对手攻击。实际攻击虚空位置 在错误移动后,快速改变攻击目标以击中错误位置。攻击对手...