Prometheus 薪资翻倍的监控系统?

1. 介绍与架构

Prometheus是一个开源的系统监控和警报工具包,用于收集和存储时间序列数据,包括指标信息、记录时间戳以及可选的键值对标签。许多公司使用Prometheus监控K8s集群。

2. 合适与不合适场景

合适场景

Prometheus适用于记录各种数字时间序列,既适用于以机器为中心的监控,也适用于监控高度动态的面向服务的架构。在微服务环境中,其对多维数据收集和查询的支持是特别优势。设计用于可靠性,在中断期间仍可使用,能够快速诊断问题。每个Prometheus服务器都是独立的,不依赖于网络存储或其他远程服务。在基础设施的其他部分受损时,可以依赖Prometheus,而无需设置大量基础设施即可使用。

不合适场景

如果需要100%准确性,例如按请求计费时,Prometheus可能不太适合。在这种情况下,最好使用其他系统来收集和分析数据以进行计费。

3. 数据模型

由于监控数量庞大,Prometheus采用了时间序列数据存储,即带有时间戳和值的数据。

3.1 Prometheus本地存储:

  Prometheus的本地存储被称为Prometheus TSDB(时间序列数据库)。TSDB的设计核心包括两个主要部分:block和WAL。

  • Block:TSDB将监控数据按时间划分为blocks。每个block包含chunk、index、meta.json和tombstones。Block的大小并不固定,按照设定的步长倍数递增。随着数据量的增长,TSDB会将小的blocks合并成大的blocks,以减少数据存储和内存中的block数量,方便进行索引。每个block都有全局唯一的名称,通过ULID(Universally Unique Lexicographically Sortable Identifier)原理生成,使得可以通过文件名确定block的创建时间,方便按时间排序。
  • WAL(Write-Ahead Logging):为了防止丢失暂存在内存中但尚未写入磁盘的监控数据,Prometheus引入了WAL机制。WAL是一种关系型数据库中利用日志实现事务性和持久性的技术。在Prometheus中,WAL用于记录周期性采集的监控数据,先保存到磁盘中。在TSDB宕机重启后,多协程会读取WAL,从而恢复之前的状态。

3.2 Prometheus 数据模型:

  Prometheus将监控数据存储为时间序列,包括标签(键值对)、时间戳和最终的值。表示法如下:

<metric_name>[{<label_1=“value_1”>,<label_N=“value_N”>}]<datapoint_numercial_value>

4. 指标

4.1 Counter

  Counter是指Prometheus实例接收的数据包总数。该指标一直在增加,用于计量累计事件的次数。

4.2 Gauge

  Gauge是一种测量指标,它在收集时对给定的测量进行快照,并可以增加或减少。例如,温度、磁盘空间、内存使用量等都可以使用Gauge进行测量。

4.3 Histogram

Histogram常用于观察某时间段内的百分比或请求数量。一个Histogram包含合并的值,用于描述事件的分布。

5. 指标的摘要和聚合

5.1 指标摘要

单个指标对于我们来说价值较小,通常需要联合并可视化多个指标。这涉及一些数学变换,例如统计函数应用于指标或指标组。常见函数包括计数、求和、平均值、中位数、百分位数、标准差、变化率等。

5.2 指标聚合

指标聚合提供了来自多个源的指标的综合视图,使得整体系统状态更加清晰可见。

6. NodeExporter部署

Prometheus使用exporter工具来暴露主机和应用程序上的指标。NodeExporter是一种用于暴露主机相关指标的工具,有多种类型的exporter可供选择。

7. cAdvisor监控Docker容器

cAdvisor(Container Advisor)是由谷歌开发的项目,用于收集、聚合、分析和导出运行中容器的数据。该工具提供丰富的数据,涵盖从内存限制到GPU指标等几乎所有可能需要的内容。cAdvisor通过容器守护进程和Linux cgroups收集数据,与Docker容器的发现透明且完全自动化。除了以Prometheus格式公开指标外,cAdvisor还提供了一个有用的Web界面,可视化展示主机及其容器的状态。

8. 捕获目标生命周期

  1. 服务发现:识别和发现要监控的目标。
  2. 配置:为发现的目标设置配置。
  3. 重新标记(relable_configs):调整标签和配置以更好地对齐。
  4. 抓取:从目标获取指标。
  5. 指标重新标记(metrics_relable_configs):进一步调整抓取的指标的标签。

9. PromQL查询语言

9.1 选择器和标签匹配器:

选择器

  • 标签匹配器和度量名称的组合。
  • 用于处理成千上万的时间序列,通过匹配标签选择合适的时间序列。
  • 返回即时或范围向量。

示例:

$ prometheus_build_info{version="2.17.0"}

标签匹配器

  • 用于将查询限制为特定一组标签值。
  • 操作符:=、!=、=~ 和 !~。

范围、偏移、子查询

  • 范围向量:使用即时向量选择器并使用[]定义范围向量查询。
  • 偏移修饰符:查询过去的数据,相对于当前时间的时间段。
  • 子查询:类似于 MySQL 的子查询。

PromQL操作符

  • 向量匹配:one-to-one、many-to-one、one-to-many【类似于MySQL的左右外连接】。

PromQL函数

  • label_join() 和 label_replace():操作标签,允许连接、提取和删除标签。
  • predict_linear():可以基于线性回归预测时间序列在 t 秒后的值。
  • rate() 和 irate():计算时间序列数据的变化速率。
  • sort() 和 sort_desc():用于排序结果。

10. 计算CPU使用率

示例:avg(irate(node_cpu_seconds_total{job=“node”}[5m] by (instance) * 100))

11. 计算CPU负载(饱和度)

要监控CPU饱和度,跟踪平均负载是一种方法。公式将1分钟负载与CPU数量的两倍进行比较。

示例:

promQLCopy codenode_load1 > on (instance) 2 * count by (instance)(node_cpu_seconds_total{mode="idle"})

12. 计算内存使用率

使用Node Exporter的内存指标可计算内存使用百分比。

示例:

promQLCopy code(总内存 - 可用内存 - 缓冲 - 缓存)/ 总内存 * 100

13. 计算内存饱和度

通过检查读写活动来监控内存饱和度。使用 node_vmstat_pswpin和 node_vmstat_pswpout指标。

示例:

promQLCopy code1024 * sum by (instance) ((rate(node_vmstat_pswpin[1m]) + rate(node_vmstat_pswpout[1m])))

14. 磁盘使用率

仅测量磁盘空间使用情况而不是速率、饱和度或错误。这是因为在大多数情况下,这是最有用的可视化和警报数据。

示例:

promQLCopy code(node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"} * 100

根据特定挂载点进行自定义:

promQLCopy code(node_filesystem_size_bytes{mountpoint="/data"} - node_filesystem_free_bytes{mountpoint="/data"}) / node_filesystem_size_bytes{mountpoint="/data"} * 100

15.预测磁盘空间耗尽

预测磁盘空间是否在未来四小时内耗尽。

示例:

promQLCopy codepredict_linear(node_filesystem_free_bytes{mountpoint="/

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

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

相关文章

构筑双品牌矩阵背后,广汽埃安讲出能源生态闭环的“新故事”

“一路繁花”用来形容广汽埃安的2023年并不为过。 2023年12月28日&#xff0c;埃安达成累计产销百万辆的目标&#xff0c;成为全球最快破百万的纯电品牌、新能源品牌以及汽车品牌&#xff1b;全年累计销量超48万辆&#xff0c;同比增长77%。 值得一提的是&#xff0c;2023年以…

C#中ArrayList运行机制及其涉及的装箱拆箱

C#中ArrayList运行机制及其涉及的装箱拆箱 1.1 基本用法1.1.1 属性1.1.2 方法 1.2 内部实现1.3 装箱1.4 拆箱1.5 object对象的相等性比较1.6 总结1.7 其他简单结构类 1.1 基本用法 命名空间&#xff1a; using System.Collections; 1.1.1 属性 Capacity&#xff1a;获取或设…

江苏省力学学会副理事长钱向东、邬萱一行来访天洑软件

近日&#xff0c;江苏省力学学会副理事长钱向东、邬萱率调研组一行来访天洑软件。 会上&#xff0c;双方就平台建设、成果转化、产品研发、品牌宣传、人才培养等方面开展了广泛深入的交流。江苏省力学学会副理事长钱向东、邬萱&#xff0c;分享了学会的平台优势和资源优势以及…

IP地址和端口

1. IP地址&#xff1a; 简介&#xff1a; IP 协议是为计算机网络相互连接进行通信而设计的协议。在因特网中&#xff0c;它是能使连接到网上的所 有计算机网络实现相互通信的一套规则&#xff0c;规定了计算机在因特网上进行通信时应当遵守的规则。任 何厂家生产的计算机系统…

ubuntu20安装网络调试助手遇到缺少qt4相关库的问题

最近需要做套接字通讯的工作&#xff0c;最好是有一个网络调试软件能够接受或者发送套接字&#xff0c;测试代码能够正常通讯。windows下有很多&#xff0c;但是linux下比较少&#xff0c;使用广泛的是下面这一款。 1、安装 首先从网盘&#xff08;链接: https://pan.baidu.c…

dom-to-image-more 使用

与网上不同的使用方式&#xff1a; 官网 dom-to-image-more - npm 这里不会出现两行缩略不行的bug yarn add dom-to-image-more 下面 生成图片并下载图片 const picture ref() const dom2img () > {var node picture.valuedomtoimage.toPng(node, { cacheBust: t…

LabVIEW高级CAN通信系统

LabVIEW高级CAN通信系统 在现代卫星通信和数据处理领域&#xff0c;精确的数据管理和控制系统是至关重要的。设计了一个基于LabVIEW的CAN通信系统&#xff0c;它结合了FPGA技术和LabVIEW软件&#xff0c;主要应用于模拟卫星平台的数据交换。这个系统的设计不仅充分体现了FPGA在…

C# 使用屏障来使多线程并发操作保持同步

写在前面 以下是微软官方对屏障类的介绍&#xff0c;System.Threading.Barrier 可用来作为实现并发同步操作的基本单元&#xff0c;让多个线程(参与者)分阶段并行处理目标算法。在达到代码中的屏障点之前&#xff0c;每个参与者将继续执行&#xff0c;屏障表示工作阶段的末尾&…

微信小程序调取相机实现拍照/录屏

1.效果 2.创建子组件 index.wxml代码 <xr-scene id"xr-scenecameraglb" ar-system bind:ready"handleReady" bind:ar-ready"handleARReady" > <!-- 初始化模型 --><xr-assets bind:loaded"handleAssetsLoaded">…

WhatsApp怎么营销引流?

随着移动互联网的普及&#xff0c;越来越多的企业开始利用社交媒体平台来进行推广和营销。其中&#xff0c;全球最流行的即时通讯软件之一 WhatsApp&#xff0c;为企业提供了一个新的营销渠道。但是&#xff0c;许多企业不知道如何利用 WhatsApp 进行营销引流。今天&#xff0c…

虚拟机网络配置及Moba工具的使用

A、设置IP和网关 1、设置IP [roothadoop00 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 &#xff08;修改如下标红内容&#xff0c;没有的就添加&#xff09; DEVICEeth0 HWADDR08:00:27:BD:9D:B5 #不用改 TYPEEthernet UUID53e4e4b6-9724-43ab-9da7-68792e611031…

不停机迁移,TDengine 在 3D 打印技术中的“焕新”之路

小T导读&#xff1a;自 2021 年我们正式使用 TDengine 至今已接近三年&#xff0c;现在 TDengine 已经成熟应用于我们多个项目当中&#xff0c;凭借着强大的读写存储能力&#xff0c;为我司多项业务的核心数据保驾护航。近期我们团队刚好完成 TDengine 2.x 到 3.x 的数据迁移&a…

VAD语音分割算法详解

1 VAD算法介绍 1.1 语音基本概念 声波通过空气传播&#xff0c;被麦克风接收&#xff0c;通过采样、量化、编码转换为离散的数字信号&#xff0c;即波形文件。音量、音高和音色是声音的基本属性。 采样&#xff1a;原始的语音信号是连续的模拟信号&#xff0c;需要对语音进行…

2024区块链应用趋势,RWA实物资产化

作者 张群&#xff08;赛联区块链教育首席讲师&#xff0c;工信部赛迪特聘资深专家&#xff0c;CSDN认证业界专家&#xff0c;微软认证专家&#xff0c;多家企业区块链产品顾问&#xff09;关注张群&#xff0c;为您提供一站式区块链技术和方案咨询。 实物资产通证化&#xff0…

ffmpeg本地TS和M3U8播放流程及调试过程

本地TS播放过程 本地M3U8播放过程 http工作流程 http分两个步骤 1、获取m3u8文件&#xff0c;这个是在哪里开始读的&#xff1f; 2、获取data数据&#xff0c;这个是从http_read开始读&#xff0c;可以通过修改这里实现buffer数据和引擎对接 3、s->user_agent,s->off,…

Python tkinter (2) —— Button标签

Python的标准Tk GUI工具包的接口 目录 Button 简单示例 设置按钮宽高 设置响应事件 匿名函数调用事件 退出按钮 总结 tkinter系列文章 python tkinter窗口简单实现 Python tkinter (1) —— Label标签 Button Button标签在窗口中显示按钮的控件。 简单示例 实现一个…

回归预测 | Matlab基于OOA-SVR鱼鹰算法优化支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于OOA-SVR鱼鹰算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于OOA-SVR鱼鹰算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于OOA-SVR鱼鹰算法优化支持向量机的数据…

go语言(十六)----tag

package mainimport ("fmt""reflect" )type resume struct {Name string info:"name" doc:"我的名字"Sex string info:"sex" }func findTag(str interface{}) {t : reflect.TypeOf(str).Elem()for i : 0;i < t.NumField…

前端面试题-js数据类型-怎么判断是对象还是数组-字符串常用方法-数组常用方法

前端面试题-js部分-js数据类型-怎么判断是对象还是数组-字符串常用方法-数组常用方法 JS数据类型有哪些值类型和引用类型的区别数组的常用方法哪些方法会改变原数组 字符串常用方法对象常用方法怎么判断是对象还是数组 JS数据类型有哪些 数据类型类型描述Number基本类型&#…

Day24_77 组合

77 组合 组合无序&#xff0c;排列有序。1~n个数中选k个数组合&#xff0c;k不确定&#xff0c;组合的方式。 &#xff08;图片来自代码随想录&#xff09;确定回溯法的三部曲&#xff1a; 递归函数的返回值和参数&#xff1a;集合n中取k个数&#xff0c;&#xff0c;每次从…