如何使用 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在k8s上部署Elasticsearch和Kibana
前提 在win上安装docker desktop,没有网络限制,而且,打开kubernetes之后,很快就安装启动好了. 在win上安装scoop,有网络限制,需要访问github raw的文件内容, ...
- 【集群监控】Docker上部署Prometheus+Alertmanager+Grafana实现集群监控
Docker部署 下载 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.re ...
- 部署 Prometheus 和 Grafana 到 k8s
在 k8s 中部署 Prometheus 和 Grafana Intro 上次我们主要分享了 asp.net core 集成 prometheus,以及简单的 prometheus 使用,在实际在 k ...
- 有状态软件如何在 k8s 上快速扩容甚至自动扩容
概述 在传统的虚机/物理机环境里, 如果我们想要对一个有状态应用扩容, 我们需要做哪些步骤? 申请虚机/物理机 安装依赖 下载安装包 按规范配置主机名, hosts 配置网络: 包括域名, DNS, ...
- asp.net core 集成 Prometheus
asp.net core 集成 prometheus Intro Prometheus 是一个开源的现代化,云原生的系统监控框架,并且可以轻松的集成 PushGateway, AlertManager ...
- 手把手教你玩转 Gitea|使用 Helm 在 K3s 上安装 Gitea
前言 在前面的文章中,演示了如何用 Docker 镜像和 Windows 二进制包来安装运行 Gitea.今天是玩转 Gitea 系列的使用 Helm 在 K3s 上安装 Gitea. 关于 Gite ...
- 在k8s上安装Jenkins及常见问题
持续集成和部署是DevOps的重要组成部分,Jenkins是一款非常流行的持续集成和部署工具,最近试验了一下Jenkins,发现它是我一段时间以来用过的工具中最复杂的.一个可能的原因是它需要与各种其它 ...
- 在k8s上部署日志系统elfk
日志系统elfk 前言 经过上周的技术预研,在本周一通过开会研究,根据公司的现有业务流量和技术栈,决定选择的日志系统方案为:elasticsearch(es)+logstash(lo)+filebea ...
- gitlab在k8s上运行的一些优化
由 林坤创建,最终由 林坤修改于七月02,2020 gitlab组件图 gitlab在k8s上占用资源 kubectl top pods -n default | grep git* gitlab-g ...
- 优化:在k8s上部署的gitlab
gitlab组件图 gitlab在k8s上占用资源 # kubectl top pods -n default | grep git* gitlab-gitaly-0 9m 444Mi gitlab- ...
随机推荐
- wget 命令的使用:HTTP文件下载、FTP文件下载--九五小庞
1. wget 命令简介与安装wget是用于在命令行终端下载网络文件的开源免费的命令工具,支持 HTTP/HTTPS.FTP/FTPS 协议的下载.wget 与 curl 相似,curl 可以理解为是 ...
- 教你2种方法,将iOS设备通过MQTT协议连接到华为云物联网平台
本文分享自华为云社区<如何将iOS设备通过MQTT协议连接到华为云物联网平台: Flutter和Swift两种方法>,作者: 张俭 . 前言 当今时代,物联网技术正逐步改变我们的生活和工作 ...
- Field 'xxxxxx' doesn't have a default value 错误的解决办法
在写web项目的时候,出现 Field 'xxxxx' doesn't have a default value 这个错误,直接找到你的数据库,然后打开设计表,看下面自增递增是否勾选上了,如果没有勾上 ...
- 《最新出炉》系列初窥篇-Python+Playwright自动化测试-17-处理鼠标悬停
1.简介 有些测试场景或者事件,playwright根本就没有直接提供方法去操作,而且也不可能把各种测试场景都全面覆盖提供方法去操作.比如:就像鼠标悬停,一般测试场景鼠标悬停分两种常见,一种是鼠标悬停 ...
- c语言代码练习10(改进)
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> #include <ma ...
- 《最新出炉》系列初窥篇-Python+Playwright自动化测试-21-处理鼠标拖拽-番外篇
1.简介 前边宏哥拖拽有提到那个反爬虫机制,加了各种参数,以及加载js脚本文件还是有问题,偶尔宏哥好像发现了解决问题的办法,看到了黎明的曙光,宏哥就说试一下看看行不行,万一实现了.结果宏哥试了结果真的 ...
- Python:基础&爬虫
Python:基础&爬虫 Python爬虫学习(网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另 ...
- LangChain实战
1.概述 最近,在研究LangChain时,发现一些比较有意思的点,今天笔者将给大家分享关于LangChain的一些内容. 2.内容 2.1 什么是LangChain? LangChain是一项旨在赋 ...
- 如何写出优雅的代码?试试这些开源项目「GitHub 热点速览」
又是一期提升开发效率的热点速览,无论是本周推特的检查 Python 语法和代码格式的 ruff,或者是 JS.TS 编译器 oxc,都是不错的工具,有意思的是它们都是 Rust 写的. 此外,还有用来 ...
- Django + celery + redis 执行异步任务及查看结果
官方文档 https://docs.celeryproject.org/en/latest/django/first-steps-with-django.html#using-celery-wit ...