如何使用 Helm 在 K8s 上集成 Prometheus 和 Grafana|Part 3

news2024/10/2 14:39:55

在本教程的前两部分,我们分别了解和学习了Prometheus 和 Grafana 的基本概念和使用的前提条件,以及使用 Helm 在 Kubernetes 上安装 Prometheus。

在今天的教程中,我们将为你介绍以下内容:

  • 安装 Grafana;
  • 集成 Prometheus 和 Grafana,Grafana 将使用 Prometheus 作为数据源;
  • 使用 Grafana 创建用于监控和观察 Kubernetes 集群的控制面板。

安装 Grafana

安装时,我们遵循与安装 Prometheus 相同的步骤:

搜索 Grafana Helm Chart

要搜索 Prometheus Helm Chart,请运行以下命令:

helm search hub grafana

您还可以访问 ArtifactHub 存储库并搜索官方 Grafana Helm Chart,如下图所示:

image.png

要获取此 Grafana Helm Chart,请运行以下命令:

helm repo add grafana https://grafana.github.io/helm-charts 
helm repo update

输出结果:

image.png

在 Kubernetes 集群上安装 Grafana Helm Chart

运行此 helm install 命令:

helm install grafana grafana/grafana

输出结果:

image.png

现在,我们已经在 Kubernetes 集群上安装了 Grafana。我们可以通过端口 80 访问 Grafana 服务器。下一步是访问并启动 Grafan 应用程序。您将使用 Grafana 的 Kubernetes 服务访问该应用程序。要获取 Grafana 的所有 Kubernetes 服务,请运行以下命令:

kubectl get service

输出结果:

image.png

我们将使用 grafana Kubernetes 服务来访问 Grafana 应用程序。grafana Kubernetes 服务也是 ClusterIP 类型。您只能从 Kubernetes 集群内部访问它。我们需要公开这个 Kubernetes 服务,以便在 Kubernetes 集群外部访问它。

公开 grafana Kubernetes 服务

kubectl expose service grafana --type=NodePort --target-port=3000 --name=grafana-ext

此命令会将 ClusterIP 类型转换为 NodePort 类型。这样grafana 可以通过端口 3000 在 Kubernetes 集群外部访问。现在我们已经公开了grafana Kubernetes 服务。让我们使用以下命令访问 grafana 应用程序:

minikube service grafana-ext

该命令生成以下 URL:

image.png

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

image.png

上图显示的是 Grafana 登录页面。要获取 admin 的密码,请在新终端上运行以下命令。

kubectl get secret --namespace default grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

注意:您需要打开一个新终端来运行此过程,以便 Grafana 保持运行。

登录 Grafana

要登录 Grafana,请输入 admin 作为用户名和生成的密码。它将启动 Welcome to Grafana 主页,如下所示:

image.png

要将 Prometheus 添加为数据源,请按照以下步骤操作:

1. 在欢迎页面上,单击 Add your first data source :

image.png

2. 选择 Prometheus 作为数据源:

image.png

3. 然后,添加运行 Prometheus 应用程序的 URL。这是我们之前运行 minikube service prometheus-server-ext 时显示的第一个 URL(集群内部)。

image.png

4. 点击 "Save & test "保存更改。

这样,您就完成了在 Kubernetes 上将 Prometheus 和 Grafana 与 Helm 集成的工作。

最后一步,是创建 Grafana 控制面板。这将帮助我们可视化 Kubernetes 集群指标。

Grafana 控制面板

如前所述,您可以选择从头开始创建控制面板。您还可以导入 Grafana 已经提供模板。在本节中,我们将导入一个 Grafana Dashborad。

要导入 Grafana 控制面板,请按照以下步骤操作:

  • 从 Grafana 公共控制面板库中获取 Grafana 控制面板 ID

image.png

  • 在此网页上,搜索 Kubernetes:

image.png

  • 滚动直到找到 Kubernetes 集群监控(通过 Prometheus)控制面板:

image.png

  • 选择控制面板并复制控制面板 ID:

image.png

  • 回到Grafana,点击左上角Home:

image.png

  • 在菜单上,单击 Dashboards :

image.png

  • 单击 New :

image.png

屏幕上会显示三个选项: New Dashboard , New Folder 和Import 。

  • 单击 Import

image.png

  • 添加 Grafana ID:添加已复制的 Grafana ID,然后单击 Load 。Grafana ID 是 315。

image.png

  • 选择 Promethues 数据源并单击 Import :

image.png

image.png

  • 它将启动如下所示的控制面板:

image.png

image.png

您可以使用此控制面板来监视和观察 Kubernetes 集群指标。它显示以下 Kubernetes 集群指标:

  • 网络 I/O 压力
  • 集群 CPU 使用率
  • 集群内存使用情况
  • 集群文件系统使用情况
  • Pod CPU 使用率

附加步骤

将 Prometheus 和 Grafana 部署到 Azure Kubernetes 服务 (AKS) 等基于云的生产集群时,需要执行以下操作。

为 Prometheus 创建持久卷

持久卷资源用于管理集群中的持久和永久存储。管理员提供一个持久卷以明确存储数据。它可以将数据存储在:

  • 本地计算机
  • 网络共享
  • 云供应商提供的 block 存储卷

无论 Kubernetes 应用程序、pod、应用程序容器甚至 kubernetes 集群本身的生命周期/状态如何,持久卷数据都会持续保存。下面的示例代码展示了如何创建持久卷以保留应用程序数据:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pvc-prometheus-migration-prometheus-0
spec:
  accessModes:
  - ReadWriteOnce
  azureDisk:
    cachingMode: None
    diskName: pvc-prometheus-migration-prometheus-0
    diskURI: /subscriptions/f5125d82-2622-4c50-8d25-3f7ba3e9ac4b/resourceGroups/sample-migration-resource-group/providers/Microsoft.Compute/disks/pvc-prometheus-migration-prometheus-0
    fsType: ""
    kind: Managed
    readOnly: false
  capacity:
    storage: 1Gi
  persistentVolumeReclaimPolicy: Delete
  storageClassName: prometheus
  volumeMode: Filesystem

您将创建一个新的 .yaml 文件并添加上面的代码,此代码将在服务重新启动之间保留您的数据。

要将持久卷添加到集群,请运行以下命令:

kubectl apply -f prometheus-persistent-volume.yaml

用于 Prometheus 的 PVC

PVC(Persistent Volume Claim)表示 pod 为获得实际块存储而提出的数据存储请求。PVC 消耗 Persistent Volume 数据资源。

PVC 可以请求特定的数据大小和访问模式。下面的示例代码显示了如何创建持久卷请求以访问持久卷:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  labels:
    app.kubernetes.io/name: prometheus
    prometheus: prometheus-migration-prometheus
  name: prometheus-prometheus-migration-prometheus-db-prometheus-prometheus-migration-prometheus-0
  namespace: monitoring
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: prometheus
  volumeMode: Filesystem
  volumeName: pvc-prometheus-migration-prometheus-0

要将 PVC 添加到群集,请运行此命令:

kubectl apply -f prometheus-persistent-volume-claim.yaml

为 Grafana 创建持久卷和 PVC

以下示例代码将为 Grafana 创建持久卷:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-grafana-storage
  namespace: monitoring
  labels:
    type: nfs
spec:
  storageClassName: managed-nfs
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  nfs:
    server: (your Production prometheus)
    path: "/mnt/nfs/grafana-storage"

要将 PVC 添加到集群,请运行以下命令:

kubectl apply -f grafana-persistent-volume-claim.yaml

配置 Prometheus RBAC 权限

在将 Prometheus 和 Grafana 部署到生产环境之前,您将使用 ClusterRole 配置 RBAC 权限。然后,使用 ClusterRoleBinding 对象将此 ClusterRole 绑定到 ServiceAccount。

配置 Prometheus RBAC 权限的示例 yaml 代码

apiVersion: v1
kind: ServiceAccount
metadata:
  name: prometheus
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  name: prometheus
rules:
- apiGroups: [""]
  resources:
  - nodes
  - nodes/metrics
  - services
  - endpoints
  - pods
  verbs: ["get", "list", "watch"]
- apiGroups: [""]
  resources:
  - configmaps
  verbs: ["get"]
- apiGroups:
  - networking.k8s.io
  resources:
  - ingresses
  verbs: ["get", "list", "watch"]
- nonResourceURLs: ["/metrics"]
  verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: prometheus
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: prometheus
subjects:
- kind: ServiceAccount
  name: prometheus
  namespace: default

要将 RBAC 权限添加到集群,请运行以下命令:

kubectl apply -f rbac-permissions.yaml

创建 Prometheus Kubernetes 服务

Prometheus Kubernetes 服务将公开正在运行的 Prometheus 应用程序,以允许外部访问。

创建 Prometheus Kubernetes 服务的 YAML 示例:

apiVersion: v1
kind: Service
metadata:
  name: prometheus
  labels:
    app: prometheus
spec:
  ports:
  - name: web
    port: 9090
    targetPort: 80
  selector:
    app.kubernetes.io/name: prometheus
  sessionAffinity: ClientIP

要将 Prometheus 服务添加到集群,请运行以下命令:

kubectl apply -f prometheus-service.yaml

创建 Grafana Kubernetes 服务

Prometheus Kubernetes 服务将公开正在运行的 Grafana 应用程序,以允许外部访问 Grafana 控制面板。

用于创建 Grafana Kubernetes 服务的示例 YAML:

apiVersion: v1
kind: Service
metadata:
  name: grafana
  namespace: monitoring
  annotations:
      prometheus.io/scrape: 'true'
      prometheus.io/port:   '3000'
spec:
  selector: 
    app: grafana
  type: NodePort  
  ports:
    - port: 3000
      targetPort: 80
      nodePort: 32000

要将 Grafana 服务添加到集群,请运行以下命令:

kubectl apply -f grafana-service.yaml

完成这些附加步骤后,您就可以在生产中运行 Prometheus 和 Grafana 了。

总结

在本期教程中,我们带您一起学习了如何使用 Helm 在 Kubernetes 上集成 Prometheus 和 Grafana。此外,还详细介绍了如何在 Grafana 上创建一个简单的控制面板,以便跟踪 Kubernetes 集群上的资源和性能指标。为了更好地跟踪 Kubernetes 集群和微服务性能,监控至关重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1402257.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源网安推出“国产替代续航惠企计划”,实现“两不三保”目标

​随着全球安全威胁态势越发严峻,国内网络安全监管趋严,Adobe、Tableau、Salesforce、Nutanix、Citrix、checkmarx等外企陆续裁员离华,国产替代从战略层的备选项,也将逐步变为需要快速落地的必选项。 为了确保用户能高效应对外企离…

[C++]:12:模拟实现list

[C]:12:模拟实现list 一.看一看SGI的stl_list的源码:1.基础结构构造函数1.节点结构:2.节点构造函数:3.链表结构:4.链表的构造函数: 2.析构1.节点析构:2.链表的析构: 3.迭代器 二.模拟实现list1.…

十二款·富文本编辑器:数字创作的瑞士军刀

在数字化时代,内容创作已经成为我们日常生活中不可或缺的一部分。无论是撰写一封电子邮件、准备一份报告、还是在社交媒体上分享心情,文字都是我们表达和沟通的基石。而在这个过程中,富文本编辑器就如同一把瑞士军刀,为我们提供了…

商品详情APP端原数据淘宝数据采集API接口代码接入示例

商品详情APP端原数据API接口(接口接入入口)的作用是提供APP端商品的详细信息,包括价格、描述、图片、折后价、优惠券信息等。通过调用这个API接口,开发者可以获取到APP端商品详情相关的数据,从而进行数据分析&#xff…

怎么录屏?这里有一份超详细教程!

随着科技的发展,录屏已经成为人们日常生活中经常需要使用的功能,无论是录制游戏、教学演示、在线会议等都需要用到录屏。可是您知道怎么录屏才是最好的吗?接下来,本文将为您介绍三种流行的录屏方法,并提供详细的分步骤…

【遥感数字图像处理(朱文泉)】各章博文链接汇总及思维导图

遥感数字图像处理课程汇总 第0章 绪论第一章 数字图像基础第二章 数字图像存储与处理第三章 空间域处理方法第四章 变换域处理方法第五章 辐射校正第六章 几何校正第七章 图像去噪声第八章 图像增强第九章 感兴趣目标及对象提取第十章 特征提取与选择第十一章 遥感数字图像分类…

Unity 编辑器篇|(九)编辑器美化类( GUIStyle、GUISkin、EditorStyles) (全面总结 | 建议收藏)

目录 1. GUIStyle1.1 参数总览1.2 样式代码 2. GUISkin2.1 参数总览2.2 创建自定义Skin 3. EditorStyles2.1 参数总览1.2 反射获取所有EditorStyles 1. GUIStyle GUIStyle是一个用于定制GUI控件样式的类,它包含了控件的外观属性,如字体、颜色、背景等。…

springboot 3 + mysql8 + flyway 数据库版本管理

1、flyway flyway官方文档地址:https://documentation.red-gate.com/fd 对于不怎么看文档的我来说: 1)flyway是个管理数据库版本的工具,可以对不同环境的sql进行迁移操作。 2)优点:初始化、后期数据的管理…

dpdk网络转发环境的搭建

文章目录 前言ip命令的使用配置dpdk-basicfwd需要的网络结构测试dpdk-basicfwddpdk-basicfwd代码分析附录basicfwd在tcp转发时的失败抓包信息DPDK的相关设置 前言 上手dpdk有两难。其一为环境搭建。被绑定之后的网卡没有IP,我如何给它发送数据呢?当然&a…

动物免疫(羊驼免疫)-泰克生物

在过去几十年里,抗体研究和应用的领域已经经历了革命性的变化。在这个进程中,一种特殊来源的抗体 —— 来自骆驼科动物(包括羊驼)的单链抗体(也称纳米抗体)引起了全球科学家的广泛关注。 羊驼等骆驼科动物…

vectorCast添加边界值分析测试用例

1.1创建项目成功后会自动生成封装好的函数,在这些封装好的函数上点击右键,添加边界值分析测试用例,如下图所示。 1.2生成的用例模版是不可以直接运行的,需要我们分别点击它们,让它们自动生成相应测试用例。如下图所示,分别为变化前和变化后。 1.3点击选中生成的测试用例,…

家庭教育小知识青春期孩子如何教育?

孩子进入青春期后,很多家长都纷纷感叹,与孩子相处太难了。那个曾经乖巧、黏人的孩子,好像一夜之间浑身长满刺,变得叛逆、敏感、暴躁、将父母拒之门外、甚至是辱骂、羞辱父母。 让父母更挫败的是,曾经通过说教、讲道理…

sqlmap使用教程(1)

一、sqlmap简介 sqlmap是一个自动化SQL注入测试工具,它支持的数据库有MySQL、MSSQL、Oracle、PostgreSQL、Access、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB。sqlmap默认使用以下5种SQL注入技术: 基于布尔的盲注:根据返回页面判断条件…

flink基本概念

1. Flink关键组件: 这里首先要说明一下“客户端”。其实客户端并不是处理系统的一部分,它只负责作业的提交。具体来说,就是调用程序的 main 方法,将代码转换成“数据流图”(Dataflow Graph),并最终生成作业…

Kotlin 尾递归函数

函数式编程中,重要的概念 尾递归: 当一个函数 在最后调用 自身,称为 尾递归,是一种特殊的递归函数。 Kotlin 使用 tailrec 声明尾递归函数,可以避免 StackOverflowError 的风险。 原理是:通过编译器优化 …

BACnet网关BL121BN 实现稳定可靠、低成本、简单的楼宇自控协议BACnet转OPC UA解决方案

随着楼宇自控系统的迅猛发展,人们深刻认识到在楼宇暖通行业中,实时、可靠、安全的数据传输至关重要。在此背景下,高性能的楼宇暖通数据传输解决方案——协议转换网关应运而生,广泛应用于楼宇自控和暖通空调系统应用中。 钡铼技术…

Linux:动静态库的概念制作和底层工作原理

文章目录 动静态库基础认知动静态库基本概念静态库的制作库的概念包的概念 静态库的使用第三方库小结 动态库的制作动态库的使用动态库如何找到内容?小结 动态库加载库和程序都要加载可执行程序的地址问题地址问题逻辑地址和平坦模式绝对编址和相对编址与位置无关码…

Lombok工具包

Lombok已经集成springboot项目中因此在依赖中引入Lombok不需要指定版本号。 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId> </dependency> Lombok中各种注释的含义

51单片机电子密码锁Proteus仿真+程序+视频+报告

目录 视频 设计分析 系统结构 仿真图 资料内容 资料下载地址&#xff1a;51单片机电子密码锁Proteus仿真程序视频报告 视频 单片机电子密码锁Proteus仿真程序视频 设计分析 (1)能够从键盘中输入密码&#xff0c;并相应地在显示器上显示‘*’&#xff1b; (2)能够判断密码…

什么是碳结算电能表?

引言 近年来&#xff0c;我国加速推进碳达峰碳中和标准计量体系建设&#xff0c;但随着各地区、各领域、各行业对碳排放核算数据的需求显著提升&#xff0c;当前碳排放核算体系数据更新偏慢、核算口径不一、基础排放因子滞后等一系列问题也开始凸显。新形势下对碳排放统计核算…