Prometheus介绍和安装

Prometheus介绍和安装

1. Prometheus介绍

Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。自2012年成为社区开源项目,拥有非常活跃的开发人员和用户社区。为强调开源及独立维护,Prometheus于2016年加入云原生云计算基金会(CNCF),成为继Kubernetes之后的第二个托管项目。Prometheus基于时序数据库, 非常适合Kubernetes集群的监控。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。

官方网站:https://prometheus.io

  • 项目托管:https://github.com/prometheus

Prometheus 特点

1)多维数据模型:由度量名称和键值对标识的时间序列数据

2)PromQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询

3)不依赖分布式存储,单个服务器节点可直接工作

4)基于HTTP的pull方式采集时间序列数据

5)推送时间序列数据通过PushGateway组件支持

6)通过服务发现或静态配置发现目标

7)多种图形模式及仪表盘支持(grafana)

8)适用于以机器为中心的监控以及高度动态面向服务架构的监控


Prometheus 架构

Prometheus 由多个组件组成,但是其中许多组件是可选的:

1)Prometheus Server:用于收集指标和存储时间序列数据,并提供查询接口

2)client Library:客户端库(例如Go,Python,Java等),为需要监控的服务产生相应的/metrics并暴露给Prometheus Server。目前已经有很多的软件原生就支持Prometheus,提供/metrics,可以直接使用。对于像操作系统已经不提供/metrics,可以使用exporter,或者自己开发exporter来提供/metrics服务。

3)push gateway:主要用于临时性的 jobs。由于这类 jobs 存在时间较短,可能在 Prometheus 来 pull 之前就消失了。对此Jobs定时将指标push到pushgateway,再由Prometheus Server从Pushgateway上pull。

4)exporter:用于暴露已有的第三方服务的 metrics 给 Prometheus。

5)alertmanager:从 Prometheus server 端接收到 alerts 后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警。常见的接收方式有:电子邮件,pagerduty,OpsGenie, webhook 等。

6)Web UI:Prometheus内置一个简单的Web控制台,可以查询指标,查看配置信息或者Service Discovery等,实际工作中,查看指标或者创建仪表盘通常使用Grafana,Prometheus作为Grafana的数据源;

**注:**大多数 Prometheus 组件都是用 Go 编写的,因此很容易构建和部署为静态的二进制文件。

image-20231222105056764

为了能够更加直观的了解Prometheus Server,接下来我们将在k8s里部署并运行一个Prometheus Server实例,通过Node Exporter采集当前主机的系统资源使用情况。 并通过Grafana创建一个简单的可视化仪表盘。

2. 在Kubernetes里部署Prometheus

说明:我们使用helm来安装Prometheus,所以请先安装helm

1)配置helm仓库

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

2)使用helm安装Prometheus

先把包下载下来,需要更改values.yaml

helm pull bitnami/prometheus --untar

每台机器安装nfs

systemctl restart chronyd
yum install -y nfs-utils

更改values.yaml

cd prometheus 
vi values.yaml #更改所有storageClass配置,指定为nfs-client,这个是前面我们配置的NFS的sc,还有两处,需要将enable:false改为 true

image-20231222105516403

安装

helm install prometheus .

查看helm安装的应用

helm list -A

3)访问Prometheus

查看service

kubectl get svc

通过80端口对应的的port来访问Prometheus和Alertmanager

http://192.168.222.101:31525

Prometheus的Exporter

在Prometheus的架构设计中,Prometheus Server并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数据查询支持。因此为了能够能够监控到某些东西,如主机的CPU使用率,我们需要使用到Exporter。

Exporter是一个用于收集和暴露应用程序指标的工具。它允许你将应用程序中的特定指标暴露给Prometheus监控系统。Exporter可以作为一个独立的进程运行,它通过暴露一个HTTP端点来提供指标数据。Prometheus可以通过定期访问Exporter的端点来获取最新的指标数据,并进行存储和可视化。

Exporter提供了针对各种应用程序和服务的特定实现,包括数据库、消息代理、Web服务器等。我们平时用的各种服务(如Nginx、MySQL、Redis、RabbitMQ、MongoDB等)都有自己的Exporter,它们会从应用程序中提取指标,并将其格式化为Prometheus可理解的格式。

总之,通过使用Prometheus exporter,你可以方便地监控应用程序的性能、资源利用率和其他重要指标。它提供了一种简单而强大的方式来收集和分析应用程序的监控数据,帮助你及时发现潜在的问题并做出相应的调整。

1)Node Exporter

Node Exporter主要用来采集主机上的各种指标(如CPU、内存、磁盘、网络等),Node exporter作为一个独立的进程在主机上运行,并通过HTTP端点暴露指标数据。Prometheus可以定期访问该端点以获取最新的主机指标数据,并将其存储和可视化。

Node exporter可以在各种操作系统上运行,包括Linux、Windows和Mac。它使用系统级接口和命令行工具来收集主机指标数据,并将其转换为Prometheus可理解的格式。

我们可以给K8S各个节点安装Node Exporter

helm install node-exporter bitnami/node-exporter

查看pod

kubectl get pod

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

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

相关文章

P4 音频知识点——PCM音频原始数据

目录 前言 01 PCM音频原始数据 1.1 频率 1.2 振幅: 1.3 比特率 1.4 采样 1.5 量化 1.6 编码 02. PCM数据有以下重要的参数: 采样率: 采集深度 通道数 ​​​​​​​ PCM比特率 ​​​​​​​ PCM文件大小计算: ​…

[THUPC 2024 初赛] 二进制 (树状数组单点删除+单点查询)(双堆模拟set)

题解 题目本身不难想 首先注意到所有查询的序列长度都是小于logn级别的 我们可以枚举序列长度len,然后用类似滑动窗口的方法,一次性预处理出每种字串的所有出现位置,也就是开N个set去维护所有的位置。预处理会进行O(logn)轮,每…

KubeSphere金丝雀发布流量分布调节不生效(将所有流量按比例分配给灰度发布版本)

如题 金丝雀发布按照流量比例访问不能生效 1、自制应用生成的路由添加注释: nginx.ingress.kubernetes.io/service-upstream:"true" 2、项目网关开启 3、完成 以上,祝好。

什么是SpringMVC

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 SpringMVC之参数获取 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、概念二、Spring…

Tomcat远程调试

windows环境 写一个 startup-debug.bat,指定tomcat的根目录,端口自己定义 rem *******设置Tomcat目录*******-- set CATALINE_HOMED:\asd\A8-2\tomcat d: rem 8787为可用端口,为远程调试监听端口-- cd %CATALINE_HOME%/bin set JPDA_ADDRESS8787 set J…

5G核心网小百科:解锁数字未来的神奇密码

引言: 嘿,大家好!今天我们要揭开一个数字魔法的奥秘,那就是5G核心网。这个网络的核心部分,其实蕴含了很多神奇的技术,它们如何点亮我们的数字未来呢?让我们一探究竟。 1. 服务化架构&#xff1…

IDEA必备常用快捷键

IDEA必备常用快捷键 Ctrl 快捷键介绍Ctrl F在当前文件进行文本查找Ctrl R在当前文件进行文本替换Ctrl Z撤销Ctrl Y删除光标所在行或者删除选中的行Ctrl D复制光标所在的行或者复制选中的内容,并把复制内容插到光标位置的下面Ctrl C复制光标所在的行或者复制选中的内容C…

Leetcode—445.两数相加II【中等】

2023每日刷题(六十七) Leetcode—445.两数相加II 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2…

RT-Smart elf 动态加载技术 : elf 加载原理与流程

前言 RT-Smart 类似于Linux,可以动态的加载与运行应用程序 elf 文件,也就是内核与应用可以分开,一个内核,多个应用,不同的应用可以按需加载执行 应用程序 elf 文件,有的是静态链接编译的,有的是动态链接编译的,动态链接编译的,elf 的运行依赖动态共享库 (.so) 本篇讲解…

蓝桥杯宝藏排序算法(冒泡、选择、插入)

冒泡排序: def bubble_sort(li): # 函数方式for i in range(len(li)-1):exchangeFalsefor j in range(len(li)-i-1):if li[j]>li[j1]:li[j],li[j1]li[j1],li[j]exchangeTrueif not exchange:return 选择排序: 从左往右找到最小的元素,放在起始位置…

Linux rm 命令

Linux rm(英文全拼:remove)命令用于删除一个文件或者目录。 语法 rm [options] name...参数: -i 删除前逐一询问确认。-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。-r 将目录及以下之档案亦逐一…

一个简单的 HTTP 请求和响应服务——httpbin

拉取镜像 docker pull kennethreitz/httpbin:latest 查看本地是否存在存在镜像 docker images | grep kennethreitz/httpbin:latest 创建 deployment,指定镜像 apiVersion: apps/v1 kind: Deployment metadata:labels:app: httpbinname: mm-httpbinnamespace: mm-…

Latex生成的PDF中加入书签/Navigation/导航

本文参考:【Latex学习】在生成pdf中加入书签/目录/提纲_latex 书签-CSDN博客 (这篇文章写的真的太棒了!非常推荐) 题外话,我的碎碎念,这也是我如何提高搜索能力的办法:想在Latex生成的PDF中加入…

2023的AI工具集合,google和claude被禁用解决和edge的copilot

一、前言 AI工具集合 首先,OpenAI的ChatGPT以其深度学习模型和强大的语言处理能力引领了AI聊天机器人的潮流。自2022年11月30日上线以来,它创下了100万用户的注册记录,并被广泛应用于全球财富500强公司。为了实现盈利,OpenAI发布…

iOS 开发设计 App 上架符合要求的截图

1. 真机运行截屏 2. 可以在 Apple developer 官网 Design 下找到 iPhone 边框 https://developer.apple.com/design/resources/ 不用这个边框也行,可以参考已上架 App 的图片框 3. 使用 Procreate(PhotoShop)创建符合要求的画布大小 4. 导入…

说说对React refs 的理解?应用场景?

先了解,是什么? React 中的 Refs提供了一种方式,允许我们访问 DOM节点或在 render方法中创建的 React元素。 本质为ReactDOM.render()返回的组件实例,如果是渲染组件则返回的是组件实例,如果渲染dom则返回的是具体的do…

springboot集成websocket全全全!!!

一、界面展示 二、前置了解 1.什么是websocket WebSocket是一种在单个TCP连接上进行全双工通信的持久化协议。 全双工协议就是客户端可以给我们服务器发数据 服务器也可以主动给客户端发数据。 2.为什么有了http协议 还要websocket 协议 http协议是一种无状态,非…

铭飞CMS cms/content/list接口存在SQL注入 附POC

@[toc] 铭飞CMS cms/content/list接口存在SQL注入 附POC 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用…

内存函数的学习

额外知识点 第一个 假设c为int类型,(char)c之后,之后如果还用变量c的话,c依然为int类型。()强制转换操作符并不会永久改变原本的变量类型。 第二个 \0在打印时不会显示出来 第三个 void …

增强客户获取能力:探索 B 端影片行销的影响

01 B端企业短视频营销的价值与难点 短视频营销在当今的市场中越来越受到重视。有数据显示,越来越多的市场人将尝试增加短视频营销的预算,并且在2023年,每5个市场人中就有1个人将尝试短视频营销。相较于内容深、信息量大的长视频,…