prometheus 发送恢复 值_Prometheus基础知识介绍

【编者的话】本文会让你了解Prometheus是什么,并让你理解它在监控领域的适用场景。

Prometheus起源

很久以前,加利福尼亚州山景城有一家名为Google的公司。他们推出了大量产品,其中最著名的是广告系统和搜索引擎平台。为了运行这些不同的产品,他们建立了一个名为Borg的平台。Borg系统是“一个集群管理器,可以运行来自成千上万个不同的应用程序的成千上万个作业,它跨越多个集群,每个集群都有数万台服务器。“开源容器管理平台Kubernetes很多部分都是对Borg平台的传承。在Borg部署到Google后不久,他们意识到这种复杂性需要一个同等水平的监控系统。Google建立了这个系统并命名为Borgmon。Borgmon是一个实时的时间序列监控系统,它使用这些时间序列数据来识别问题并发出警报。如果你想和更多Prometheus技术专家交流,可以加我微信liyingjiese,备注『加群』。群里每周都有全球各大公司的最佳实践以及行业最新动态 。

Prometheus的灵感来自谷歌的Borgmon。它最初由前谷歌SRE Matt T. Proud开发,并转为一个研究项目。在Proud加入SoundCloud之后,他与另一位工程师Julius Volz合作开发了Prometheus。后来其他开发人员陆续加入了这个项目,并在SoundCloud内部继续开发,最终于2015年1月公开发布。

与Borgmon一样,Prometheus主要用于提供近实时的,针对动态云环境下的和基于容器的微服务、服务和应用程序的检测监控。SoundCloud是这些架构模式的早期采用者,Prometheus的建立是为了满足这些需求。如今,Prometheus被更多的公司广泛使用,通常也是满足类似的监控需求,但也用来监控传统架构的资源。

Prometheus专注于现在正在发生的事情,而不是追踪数周或数月前的数据。它基于这样一个前提,即大多数监控查询和警报都是从最近的,通常是一天内的数据生成的。Facebook在其内部时间序列数据库Gorilla的论文中验证了这一观点。Facebook发现85%的查询是针对26小时内的数据。Prometheus假定你尝试修复的问题可能是最近出现的,因此最有价值的是最近时间的数据,这反映在强大的查询语言和通常有限的监控数据保留期上。

Prometheus是用开源编程语言Go编写的,并在Apache 2.0许可证下授权。它孵化于云原生云计算基金会(Cloud Native Computing Foundation)。

Prometheus架构

Prometheus通过抓取或拉取从应用程序中暴露的时间序列数据来工作。时间序列数据通常由应用程序本身通过客户端库,或通过称为导出器(exporter)的代理作为HTTP端点暴露。目前已经存在很多exporter和客户端库,支持多种编程语言、框架和开源应用程序,例如,Apache Web服务器和MySQL数据库等。

Prometheus还有一个推送网关(push gateway),可用于接收少量数据 - 例如,来自无法拉取的目标数据,比如临时作业或者防火墙后面的目标。

82fd014ae494b8cba177563c924c58ad.png

Prometheus架构

图文字翻译:Alert manager:Alertmanager;My Service:服务;Exporters run here:Exporter在这运行

指标收集

Prometheus称其可以抓取的指标来源为端点(endpoint)。端点通常对应于单个进程、主机、服务或应用程序。为了抓取端点数据,Prometheus定义了名为目标(target)的配置。这是执行抓取所需的信息 - 例如,如何进行连接,要应用哪些元数据,连接需要哪些身份验证,或定义抓取将如何执行的其他信息。一组目标被称为作业(job)。作业通常是具有相同角色的目标组 - 例如,负载均衡器后面的Apache服务器集群,它们实际上是一组相似的进程。

生成的时间序列数据将被收集并存储在Prometheus服务器本地,也可以设置从服务器发送数据到外部存储器或其他时间序列数据库。

服务发现

可以通过多种方式处理要监控的资源的发现,包括:

  • 用户提供的静态资源列表
  • 基于文件的发现。例如,使用配置管理工具生成在Prometheus中可以自动更新的资源列表
  • 自动发现。例如,查询Consul等数据存储,在Amazon或Google中运行实例,或使用DNS SRV记录生成资源列表

聚合和警报

服务器还可以查询和聚合时间序列数据,并创建规则来记录常用的查询和聚合。这允许你从现有的时间序列创建新的时间序列,例如计算变化率和比率或求和等聚合。这样就不必重新创建常用的聚合,例如用于调试,并且预计算可能比每次需要时运行查询性能更好。

Prometheus还可以定义警报规则。这些是为系统配置在满足条件时触发警报的标准,例如,资源时间序列开始显示异常的CPU使用率。Prometheus服务器没有内置警报工具,而是将警报从Prometheus服务器推送到名为警报管理器(Alertmanager)的单独服务器。Alertmanager可以管理、整合和分发各种警报到不同目的地 - 例如,它可以在发出警报时发送电子邮件,并能够防止重复发送。

查询数据

Prometheus服务器还提供了一套内置查询语言PromQL,一个表达式浏览器以及用于浏览服务器上数据的图形界面。

895ef1db48f52107762db8360440508b.png

Prometheus表达式浏览器

自治

每个Prometheus服务器都设计为尽可能自治,旨在支持扩展到数千台主机的数百万个时间序列的规模。数据存储格式被设计尽可能降低磁盘的使用率,并在查询和聚合期间快速检索时间序列。

提示:为了速度和可靠性,建议Prometheus服务器充分使用内存(Prometheus在内存中做很多事)和SSD磁盘。关于SSD使用可以参考注释链接视频。

冗余和高可用性

冗余和高可用性侧重弹性而不是数据持久性。Prometheus团队建议将Prometheus服务器部署到特定环境和团队,而不是仅部署一个单体Prometheus服务器。如果你确实要部署高可用HA模式,则可以使用两个或多个配置相同的Prometheus服务器收集时间序列数据,并且所有生成的警报都由可消除重复警报的高可用Alertmanager集群处理。

d78b9ac631c133c27fad2197c1b66d19.png

Prometheus冗余架构

图文字翻译:Alert manager:Alertmanager;My Service:服务

提示:我们将在第7章中介绍如何实现此配置。

可视化

可视化通过内置表达式浏览器提供,并与开源仪表板Grafana集成。此外,Prometheus也支持其他仪表板。

Prometheus数据模型

正如之前所述,Prometheus收集时间序列数据。为了处理这些数据,它使用一个多维时间序列数据模型。这个时间序列数据模型结合了时间序列名称和被称为标签(label)的键/值对,这些标签提供了维度。每个时间序列由时间序列名称和标签的组合唯一标识。

指标名称

时间序列名称通常可以描述收集的时间序列数据的一般性质 - 例如,website_visits_total为网站访问的总数。

名称可以包含ASCII字符、数字、下划线和冒号。

指标标签

标签为Prometheus数据模型提供了维度。它们为特定时间序列添加上下文。例如,total_website_visits时间序列可以使用能够识别网站名称、请求IP或其他特殊标识的标签。Prometheus可以在一个时间序列、一组时间序列或者所有相关的时间序列上进行查询。

标签共有两大类:监控标签(instrumentation label)和目标标签(target label)。监控标签来自被监控的资源 - 例如,对于与HTTP相关的时间序列,标签可能会显示所使用的特定HTTP谓词。这些标签在被抓取之前被添加到时间序列中,例如由客户端或exporter。目标标签更多地与架构相关 - 它们可能会识别时间序列所在的数据中心。目标标签在Prometheus抓取期间和之后添加。

时间序列由名称和标签标识(尽管从技术上讲,名称本身也是名为__name__的标签)。如果你在时间序列中添加或更改标签,Prometheus会将其视为新的时间序列。

提示:你可以理解label就是键/值形式的标签,并且新的标签会创建新的时间序列。

标签名称可以包含ASCII字符、数字和下划线。

提示:带有__前缀的标签名称保留给Prometheus内部使用。

采样数据

时间序列的真实值是采样(sample)的结果,它包括两部分:

  • 一个float64类型的数值
  • 一个毫秒精度的时间戳

符号表示

结合这些元素,我们可以看到Prometheus如何将时间序列表示为符号(notation)。

代码清单2.1时间序列符号:

{=, ...} 

例如,带有标签的total_website_visits时间序列可能如下所示。

代码清单2.2时间序列示例:

total_website_visits{site="MegaApp

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

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

相关文章

FAT32格式和NTFS有什么区别

FAT32与NTFS的区别在推出FAT32文件系统之前,通常PC机使用的文件系统是FAT16。像基于MS-DOS,Win 95等系统都采用了FAT16文件系统。在Win 9X下,FAT16支持的分区最大为2GB。我们知道计算机将信息保存在硬盘上称为“簇”的区域内。使用的簇越小&a…

修复系统COM+

有的时候由于安装COM+过程中出错,可能会造成不能再次展开COM+浏览器的〔我的电脑〕。解决办法:1 删除注册表键HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM32 运行appwiz.cpl,打开系统的[添加\删除]窗体,点击…

面试官问:JS的this指向

写于2018年12月25日,发布在掘金上阅读量近一万,现在发布到微信公众号申明原创。前言这是面试官问系列的第四篇,旨在帮助读者提升JS基础知识,包含new、call、apply、this、继承相关知识。面试官问系列文章如下:感兴趣的…

CSS实现div悬浮框的代码(兼容IE6)

转载链接&#xff1a;http://hi.baidu.com/grayworm/item/b735c2061f4e33ea34990265 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://ww…

python数组替换_Python:替换数组中的值

我会按照以下思路做些事情&#xff1a;import numpy as npdef fill(arr, fwd_fill):out arr.copy()if fwd_fill:start, end, step 0, len(out), 1else:start, end, step len(out)-1, -1, -1cur out[start]for i in range(start, end, step):if np.isnan(out[i]):out[i] cu…

(原創) 如何在Ubuntu設定P7010的1280 x 768解析度? (OS) (Linux) (Ubuntu) (NB) (P7010)

AbstractFujitsu P7010唯一較特別的硬體規格就是1280 x 768的解析度&#xff0c;無論任何Linux distribution預設都只能抓到1024 x 768&#xff0c;該如何才能抓到最佳的1280 x 768呢?IntroductionP7010非常適合Linux&#xff0c;但唯一的遺憾就是1280 x 768解析度不被支援&am…

python的常量和变量_python变量和常量

变量什么是变量&#xff1f;变量&#xff0c;是用于在内存中存放程序数据的容器计算机的最核心功能就是“计算”&#xff0c; 计算需要数据源&#xff0c;数据源要存在内存里&#xff0c;比如我要把小明的姓名、身高、年龄信息存下来&#xff0c;后面程序会调用。怎样定义一个变…

要做PPT,一直找不到资源?

写于 2016年6月&#xff0c;工作后就很少做PPT了。但工作至今也有人问我如何做PPT有没有模板之类的问题&#xff08;比如&#xff1a;大学室友做公司年度汇报时也找到我问有没有模板&#xff0c;我发了这篇文章给他&#xff0c;他说不记得我写了这篇文章呀&#xff09;&#xf…

Linux系统安装Appach 2.4.6

转载链接&#xff1a;http://www.cnblogs.com/kerrycode/p/3261101.html Apache简介 Apache HTTP Server&#xff08;简称Apache&#xff09;是Apache软件基金会的一个开放源码的网页服务器&#xff0c;可以在大多数计算机操作系统中运行&#xff0c;由于其多平台和安全性被广…

[网摘].NET 程序员十种必备工具-概述

从 MSDN 中看到这篇文章&#xff0c;觉得不错转了过来&#xff0c;对于我这样的.NET新手来说每个工具都是提高效率的好开始。将这十款软件的介绍重新格式化一下&#xff0c;方便以后查阅。以 “.NET 程序员十种必备工具”开头的10篇文章都是从这篇文章中分离出来&#xff0c;每…

完整asp.net图形验证码程序

1、测试页面&#xff1a;Default.aspx <% Page Language"C#" AutoEventWireup"true" CodeFile"Default.aspx.cs" Inherits"_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q…

学习 redux 源码整体架构,深入理解 redux 及其中间件原理

如果觉得内容不错&#xff0c;可以设为星标置顶我的公众号1. 前言你好&#xff0c;我是若川。这是学习源码整体架构系列第八篇。整体架构这词语好像有点大&#xff0c;姑且就算是源码整体结构吧&#xff0c;主要就是学习是代码整体结构&#xff0c;不深究其他不是主线的具体函数…

pdf安装包_有么有pdf控件,不需要用户安装任何安装包直接打印的?

如果开发一个软件&#xff0c;需要用到PDF功能&#xff0c;您的选择是基于Adobe PDF吗&#xff1f; 如果是基于Adobe PDF&#xff0c;需要用户安装一个几十M的Adobe的安装包&#xff0c;这显然是不友好的。即使目前也有了一些其它的阅读器&#xff0c;大小也还好。但是&#xf…

Centos编译安装Apache 2.4.6笔记 配置

转载链接&#xff1a;http://www.onepx.com/centos-apache-246.html 之前服务器 Apache 版本一直是 2.2.x&#xff0c;鉴于 Centos 更新软件的惰性&#xff0c;我看直到 2014 年结束&#xff0c;apache 2.4 都不一定会出现在 Centos 中&#xff0c;我是不打算等了&#xff0c;…

[转] C#异步操作

Title 通过委托实现异步调用中BeginInvoke及回调函数的使用 通过委托实现异步调用的步骤&#xff1a; 1.定义委托。 2.将要进行异步调用的方法“实例化”到定义的委托。 3.在委托上调用BeginInvoke方法。其中&#xff0c;BeginInvoke的参数由三个部分构成。第一部分&#xff1…

HTTP Server Error 500 内部服务器错误

问题&#xff1a;HTTP500错误 或 Server Application Error ------------------------------------Server Application ErrorThe server has encountered an error while loading an application during the processing of your request. Please refer to the event log for mo…

使用 ohmyzsh 打造 windows、ubuntu、mac 系统高效终端命令行工具

如果觉得内容不错&#xff0c;可以设为星标置顶我的公众号原标题名&#xff1a;oh my zsh 和 windows git bash 设置别名提高效率写于2018年06月03日在我的微信交流群中听闻很多前端开发比较贫穷&#xff0c;没有买mac电脑&#xff08;比如我&#xff09;&#xff0c;也没有用过…

request获取mac地址_【Go】获取用户真实的ip地址

原文链接&#xff1a;https://blog.thinkeridea.com/201903/go/get_client_ip.html用户请求到达提供服务的服务器中间有很多的环节&#xff0c;导致服务获取用户真实的 ip 非常困难&#xff0c;大多数的框架及工具库都会封装各种获取用户真实 ip 的方法&#xff0c;在 exnet 包…

Installation of Apache HTTPD

转载链接&#xff1a;http://www.linuxfromscratch.org/blfs/view/svn/server/apache.html Installation of Apache-2.4.7 HTTPD For security reasons, running the server as an unprivileged user and group is strongly encouraged. Create the following group and user…

iPhone开发四剑客之《Objective-C基础教程》

iPhone 开发四剑客之《Objective-C 基础教程》 Objective-C 语言是 C 语言的一个扩展集&#xff0c;许多&#xff08;可能是大多数&#xff09;具备 Mac OS X 外观的应用程序都是使用该语言开发的。它以 C 语言为基础&#xff0c;添加了一些微妙但意义重大的特性。 苹果公司为…