如何使用 Helm 在 K8s 上集成 Prometheus 和 Grafana|Part 1
本系列将分成三个部分,您将学习如何使用 Helm 在 Kubernetes 上集成 Prometheus 和 Grafana,以及如何在 Grafana 上创建一个简单的控制面板。Prometheus 和 Grafana 是 Kubernetes 最受欢迎的两种开源监控工具。学习如何使用 Helm 集成这两个工具,使您能够轻松监控 Kubernetes 集群并排除故障。您还可以更深入地了解集群的健康状况和性能,它将跟踪 Kubernetes 集群上的资源和性能指标。
如前所述,Prometheus 和 Grafana 是用于监控容器编排平台的流行工具。最流行的两个容器编排工具是 Docker Swarm 和 Kubernetes。第一部分将为您介绍使用 Prometheus 和 Grafana 的前提条件,了解什么是 Prometheus 和 Grafana等。
前提条件
要跟上本指南,你需要:
- 安装 Docker:要在你的机器上安装 Docker,请查看 Docker 官方文档 https://www.docker.com/。
- 安装 Kubectl:这可以让你与 Kubernetes 集群通信。要在本地机器上安装 Kubectl 工具,请遵循 Kubectl 官方文档指南 https://kubernetes.io/docs/tasks/tools/。
- 掌握 Kubernetes 的基本知识:请确保你对 Kubernetes 有一定的了解。您可以阅读 Kubernetes 官方文档 https://kubernetes.io/ 来学习 K8s 相关知识。
- 建立 Kubernetes 集群:在Kubernetes 集群上安装 Prometheus 和 Grafana。本指南将使用 Minikube (快速指南 https://minikube.sigs.k8s.io/docs/start/)。这是一个免费的本地 Kubernetes 集群。
什么是 Prometheus?
Prometheus 是一款开源 DevOps 工具。它为 Kubernetes 等容器编排平台提供监控和实时警报功能,以时间序列数据的形式收集和存储来自平台的指标。其次,它具有监控容器编排平台的开箱即用功能,并且是 Grafana 等其他数据可视化库的数据源。
Prometheus 从 Kubernetes 集群收集的指标包括:
- Kubernetes 集群健康状况。
- CPU 状态
- 内存使用情况
- Kubernetes 节点状态。
- 潜在性能瓶颈报告。
- 性能指标
- 服务器资源
什么是 Grafana?
Grafana 是一款用于分析和交互式可视化的多平台、开源在线应用程序。当你将它连接到受支持的数据源(如 Prometheus)时,它能提供:
- 交互式控制面板
- 交互式图表
- 可视化图表
- 网络告警
无论数据源是什么,Grafana 都能为您查询、可视化和理解您的指标。除了 Prometheus,Grafana 还支持其他几个数据源,例如:
- InfluxDB
- AzureMonitor
- Datadog
- Graphite
- AWS CloudWatch。
- PostgreSQL
- Microsoft SQL Server (MSSQL)。
- Elasticsearch
- Google Cloud Monitoring
- MySQL
- Alertmanager
- Loki
您可以选择从头开始创建控制面板,或者导入 Grafana 已经提供的控制面板,并对其进行定制以满足您的需求。大多数 DevOps 专业人员都使用 Grafana 和 Prometheus 来创建具有数据可视化控制面板的强大时序数据库。
在这里,我们将创建一个仪表板,用于可视化从 Prometheus 数据源收集的指标。
Prometheus 的架构
下图显示了 Prometheus 的组件和工作原理:
这些都是 Prometheus 的组件:
- Prometheus Server是 Prometheus 架构的核心组件。它是实际监控工作进行的地方。
- Alertmanager 通过电子邮件和其他通信渠道(如 Slack)向用户发送告警。
- Pushgateway 可支持临时任务。它允许用户将时间序列数据推送到 Prometheus 目标。它还能处理短期任务的指标。
Prometheus 服务器可进一步分为三个组件:
- Data Retrieval Worker 从容器编排平台中抓取并收集度量数据。然后,它将指标转换为时间序列数据。它从许多来源收集指标,这些来源在其设置中指定。
- Time Series Database 存储来自数据检索组件的时间序列数据。
- HTTP Server 响应时间序列数据的请求和 PromQL 查询。然后,它将信息显示在网络用户界面或仪表板上。它既可以使用 Grafana 等第三方平台,也可以使用内置的 Prometheus Web UI。
设置 Prometheus 和 Grafana 以监控容器编排平台的好处
设置 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 Chart中。
Helm Chart是所有 YAML 文件的集合:
- 部署
- 服务
- 密钥
- ConfigMaps Manifests
您将使用这些文件把应用容器部署到 Kubernetes。Helm 允许用户下载已有清单 YAML 文件的 Helm Chart,而不是为每个应用容器创建单独的 YAML 文件。
相关文章:

如何使用 Helm 在 K8s 上集成 Prometheus 和 Grafana|Part 1
本系列将分成三个部分,您将学习如何使用 Helm 在 Kubernetes 上集成 Prometheus 和 Grafana,以及如何在 Grafana 上创建一个简单的控制面板。Prometheus 和 Grafana 是 Kubernetes 最受欢迎的两种开源监控工具。学习如何使用 Helm 集成这两个工具&#x…...

Observability:捕获 Elastic Agent 和 Elasticsearch 之间的延迟
在现代 IT 基础设施的动态环境中,高效的数据收集和分析至关重要。 Elastic Agent 是 Elastic Stack 的关键组件,通过促进将数据无缝摄取到 Elasticsearch 中,在此过程中发挥着至关重要的作用。 然而,显着影响此过程整体有效性的关…...

Ubuntu 常用命令之 less 命令用法介绍
📑Linux/Ubuntu 常用命令归类整理 less命令是一个在Unix和Unix-like系统中用于查看文件内容的命令行工具。与more命令相比,less命令提供了更多的功能和灵活性,例如向前和向后滚动查看文件,搜索文本,查看长行等。 les…...
探索Node.js包管理器npm:介绍与使用指南
引言: 在现代软件开发中,包管理器已经成为了不可或缺的工具。它们简化了软件的安装、升级和管理过程,使得开发者能够更加高效地构建项目。而作为Node.js的官方包管理器,npm(Node Package Manager)无疑是最受…...

探讨APP自动化测试工具的重要性
随着移动应用市场的蓬勃发展,企业对于保证其移动应用质量和用户体验的需求日益迫切。在这一背景下,APP自动化测试工具正变得越来越重要,成为企业成功的关键组成部分。本文将探讨APP自动化测试工具对企业的重要性,并为您解析其在提…...
el-date-picker日期时间插件只允许选择年月日小时并做可选择范围限制(精确到小时的范围)
一、首先明确下这个需求 1、要求只能选择年月日时,不要分钟和秒 2、根据后台返回的开始时间和天数设置可选择的开始时间和结束时间范围(包含小时)比如后台返回的开始时间是2023-12-20 13:24:30,天数365天,那么我们需要限制当前可选日期为2023-12-20 14时(不能选小于13:2…...

在MongoDB中使用数组字段和子文档字段进行索引
本文主要介绍在MongoDB使用数组字段和子文档字段进行索引。 目录 MongoDB的高级索引一、索引数组字段二、索引子文档字段 MongoDB的高级索引 MongoDB是一个面向文档的NoSQL数据库,它提供了丰富的索引功能来加快查询性能。除了常规的单字段索引之外,Mong…...
<JavaEE> 网络编程 -- 网络编程和 Socket 套接字
目录 一、网络编程的概念 1)什么是网络编程? 2)网络编程中的基本概念 1> 收发端 2> 请求和响应 3> 客户端和服务端 二、Socket套接字 1)什么是“套接字”? 2)Socket套接字的概念 3&…...

【计算机系统结构实验】实验2 流水线中的冲突实验
2.1 实验目的 加深对计算机流水线基本概念的理解; 理解MIPS结构如何用5段流水线来实现,理解各段的功能和基本操作; 加深对结构冲突/数据冲突/控制冲突的理解; 进一步理解解决数据冲突的方法,掌握如何应用定向技术来…...

conda环境下执行conda命令提示无法识别解决方案
1 问题描述 win10环境命令行执行conda命令,报命令无法识别,错误信息如下: PS D:\code\cv> conda activate pt conda : 无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径&a…...

链接未来:深入理解链表数据结构(二.c语言实现带头双向循环链表)
上篇文章简述讲解了链表的基本概念并且实现了无头单向不循环链表:链接未来:深入理解链表数据结构(一.c语言实现无头单向非循环链表)-CSDN博客 那今天接着给大家带来带头双向循环链表的实现: 文章目录 一.项目文件规划…...
论文笔记 | Nature 2023 FunSearch:利用大语言模型在数学科学领域探索新的发现
文章目录 一、前言二、主要内容三、总结🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 科学中有许多难以解决的问题,这些问题难以获得确切解答,但却相对容易进行验证。在数学和计算机科学领域,这类问题被称为 NP 完全优化问题(NP-complete optimization pr…...
JavaScript 对象和 JSON 字符串的区别
JavaScript 对象和 JSON 字符串是两种不同的数据表示形式,它们有以下区别: 语法格式:JavaScript 对象是 JavaScript 语言中的一种数据类型,使用花括号 {} 包裹,属性和值之间使用冒号 : 分隔,并且使用逗号 …...
基于 Flink SQL 和 Paimon 构建流式湖仓新方案
目录 1. 数据分析架构演进 2. Apache Paimon 3. Flink + Paimon 流式湖仓 Consumer 机制 Changelog 生成编辑...

MFC静态链接+libtiff静态链接提示LNK2005和LNK4098
编译报错 1>msvcrt.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_infoAAEABV0Z) 已经在 libcmtd.lib(typinfo.obj) 中定义 1>msvcrt.lib(ti_inst.obj) : error LNK2005: "pr…...

桶装水送水小程序:提升服务质量的利器
随着移动互联网的发展,越来越多的消费者通过手机在线购物和订购商品。如果你是一名桶装水供应商,想要拓展线上业务,那么开发一个桶装水微信小程序将是一个明智的选择。本文将指导你从零开始开发一个桶装水微信小程序,让你轻松完成…...
深度学习在训练什么,什么是模型
深度学习是机器学习的一个分支,它主要通过使用称为神经网络的复杂结构来学习数据的表征。在深度学习中,"训练"和"模型"是两个核心概念。 训练 在深度学习中,"训练"是指用数据来训练一个神经网络。这个过程涉…...
Andorid 使用bp或者mk编译C文件生成so
在Aosp源码里编译C文件生成so 使用mk编译 文件夹列表 CMkDemo/Android.mk CMkDemo/cpp/SerialPort.c CMkDemo/cpp/SerialPort.hAndroid.mk 内容如下 LOCAL_PATH: $(call my-dir) include $(CLEAR_VARS)LOCAL_MODULE_TAGS : optional# All of the source files that we will…...

只更新软件,座椅为何能获得加热功能?——一文读懂OTA
2020年,特斯拉发布过一次OTA更新,车主可以通过这次系统更新获得座椅加热功能。当时,这则新闻震惊了车圈和所有车主,彼时的大家还没有把汽车当作可以“升级”的智能设备。 如今3年过去了,车主对各家车企的OTA升级早已见…...

EfficientDet:Scalable and Efficient Object Detection中文版 (BiFPN)
EfficientDet: Scalable and Efficient Object Detection EfficientDet:可扩展和高效的目标检测 摘要 模型效率在计算机视觉中变得越来越重要。本文系统地研究了用于目标检测的神经网络架构设计选择,并提出了几个关键的优化方法来提高效率。首先&…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...