精华内容
下载资源
问答
  • 普罗米修斯

    2019-11-19 17:14:17
    DevOps工程师或SRE工程师,可能都知道Prometheus普罗米修斯。Prometheus于2012年由SoundCloud创建,目前已经已发展为最热门的分布式监控系统。Prometheus完全开源的,被很多云厂商(架构)内置,在这些厂商(架构)...

    DevOps工程师或SRE工程师,可能都知道Prometheus普罗米修斯。Prometheus于2012年由SoundCloud创建,目前已经已发展为最热门的分布式监控系统。Prometheus完全开源的,被很多云厂商(架构)内置,在这些厂商(架构)中,可以简单部署Prometheus,用来监控整个云基础架构设施。比如DigitalOcean或Docker都是普罗米修斯作为基础监控。

    希腊神话中,普罗米修斯是最具智慧的神明之一,是泰坦巨神后代,其名字意思为"先见之明",那么以该名字命名的监控系统究竟怎么样呢?今天虫虫给大家讲讲这个以神之名命名的监控系统。

     

    普罗米修斯(Prometheus)介绍

    Prometheus是一个时间序列数据库。但是,它不仅仅是一个时间序列数据库。

    它涵盖了可以绑定的整个生态系统工具集及其功能。

    Prometheus主要用于对基础设施的监控。包括服务器,数据库,VPS,几乎所有东西都可以通过Prometheus进行监控。Prometheus希望通过对Prometheus配置中定义的某些端点执行的HTTP调用来检索度量标准。

     

    例如,如果我们以localhost:3000的Web应用程序为例,你的应用程序将在特定URL(例如localhost:3000/metrics)中将指标公开为纯文本。以该URL为起点,,在给定的有效期间隔期间,Prometheus将从该目标中提取数据。

    工作原理?

    如前所述,Prometheus由各种不同的组件组成。其监控指标可以从系统中提取到,可以通过不同的方式做到:

    通过应用程序给定监控项,对给定的公开URL上Prometheus兼容的指标。Prometheus将其定义为目标并加入监控系统。

    通过使用云厂商内置Prometheus程序,会定义好整个监控项和监控工具集拥。例如,可以 Linux机器监控模版(节点导出器),数据库的模版(SQL导出器或MongoDB导出器),以及HTTP代理或者负载程序的模版(例如HAProxy导出器)等这些模版直接就可以加入监控并使用。

    通过使用Pushgateway:应用程序或作业不会直接公开指标。某些应用程序要么没有合适的监控模版(例如批处理作业),对他们选择不能直接通过应用程序公开这些指标。如果我们忽略您可能使用Pushgateway的极少数情况,Prometheus是一个基于主动请求pull的监控系统。

     

    推方式和拉方式

    Prometheus与其他时间序列数据库之间存在明显差异:Prometheus主动筛选目标,以便从中检索指标。这与InfluxDB非常不同,InfluxDB是需要直接推送数据给它。

     

    基于推和基于拉方式各有其优劣之处。Prometheus使用主动拉方式主要的基于以下考虑:

    实现集中控制:如果Prometheus向其目标发起查询,则整个配置在Prometheus服务器端完成,而不是在各个目标上完成。Prometheus决定取值,以及取值的的频率。

    使用基于推的系统,可能会导致向服务器发送过多数据的风险,这时会使其服务器崩溃。基于拉的系统能够实现速率控制,具有多级过期配置的灵活性,因此可以针对不同目标实现多种速率。

    存储汇总的指标

    Prometheus不是基于事件的系统,这与其他时间序列数据库不同。Prometheus并非旨在及时捕获单个和时间事件(例如服务中断),但它旨在收集有关的服务的预先汇总的指标。具体而言,它不会从Web服务发送404错误消息以及错误的消息的具体内容,而是对这些消息做处理、聚合过的指标。这与其他在收集"原始消息"的时间序列数据库之间的基本差异

    生态系统

     

    Prometheus的主要功能仍然是时间序列数据库。但是,在使用时间序列数据库时,对它们实现了可视化、数据分析并通过自定义方式进行告警。

    Prometheus生态系统有功能丰富工具集:

    Alertmanager:Prometheus通过配置文件中定义的自定义规则将告警信息推送到Alertmanager。Alertmanager可以将其导出到多个端点,例如Pagerduty或Slack等。

    数据可视化:与Grafana、Kibana等类似,可以直接在Web UI中可视化时间序列数据。轻松过滤查看了不通监控目标的信息。

    服务发现:Prometheus可以动态发现监控目标,并根据需要自动废弃目标。这在云架构中使用动态变更地址的容器时,尤为方便。

     

    普罗米修斯技术原理和构成

    关键值数据模型

    在开始使用Prometheus工具之前,了解数据模型非常重要。Prometheus使用键值对。键描述了测量值时将实际测量值存储为数字的值。

     

    注意:Prometheus并不会存储原始信息,如日志文本,它存储的是随时间汇总的指标。

    一般来说键也就监控度量。比如CPU使用百分比或内存使用量等。但是,如果想要获得有关指标的更多详细信息,该怎么办?比如服务器CPU有四个核心,我们要想给它们分别设置指标怎么做?对此,Prometheus有一个标签的概念。标签旨在通过向其添加其他字段来为指标提供更详细信息。你不需要简单地描述CPU速率,你可以指定位于某个IP的核心CPU的CPU速率。也能通过标签过滤指标并准确检索查找的内容。

    度量类型

    Prometheus的监控指标有四种基本的类型来描述:

    计数器Counter

    计数器可能是我们可以使用的最简单的度量标准形式。就想它字面意思一样,计数器是随着时间的增长的计算元素。

    比如,要计算服务器上的HTTP错误数或网站上的访问次数,这时候就使用计数器。

    计数器的值只能增加或重置为0。计数器特别适合计算某个时段上某个事件的发生次数,即指标随时间演变的速率。

    Gauges

    Gauges用于处理可能随时间减少的值。比如温度本华,内存变化等。Gauge类型的值可以上升和下降,可以是正值或负值。

    如果系统每5秒发送一次指标,Prometheus每15秒抓取一次目标,那么这期间可能会丢失一些指标。如果对这些指分析计算,则结果的准确性会越来越低。

    而使用计数器,每个值都会被汇总计算。

    直方图Histogram

    直方图是一种更复杂的度量标准类型。它为我们的指标提供了额外信息,例如观察值的总和及其数量,常用于跟踪事件发生的规模。其值在具有可配置上限的存储对象中聚合。使用直方图可以用来:

    计算平均值:因为它们表示值的总和除以记录的值的数量。

    计算值的小数测量:这是一个非常强大的工具,可以让我们知道给定的集合中有多少值遵循给定的标准。在用于监控比例或建立质量指标时,这非常有用。

    比如,为了监控性能指标,我们希望得到在有20%的服务器请求响应时间超过300毫秒发送警告。对于涉及比例的指标就可以考虑使用直方图。

    摘要Summary

    摘要是对直方图的扩展。除了提供观察的总和和计数之外,它们还提供滑动窗口上的分位数度量。分位数是将概率密度划分为相等概率范围的方法。

    对比直方图:

    直方图随时间汇总值,给出总和和计数函数,使得易于查看给定度量的变化趋势。

    而摘要则给出了滑动窗口上的分位数(即随时间不断变化)。

    这对于获得代表随时间记录的值的95%的值尤其方便。

    实例计算

    随着分布式架构的不会发展完善和云解决方案的普及,现在的架构不再是孤零零几台配置很高的IBM小机就可以搞定一起的时代了。

    分布式的服务器复制和分发成了日常架构的必备组件。我们举一个经典的Web架构,该架构由2个HAProxy代理服务器,在3个后端Web服务器。在该实例中,我们要监视Web服务器返回的HTTP错误的数量。

    使用Prometheus语言,单个Web服务器单元称为实例。该任务是计算所有实例的HTTP错误数量。

     

    PromQL

    如果使用过基于InfluxDB的数据库,你可能会熟悉InfluxQL。或者使用TimescaleDB过的SQL语句。Prometheus也内置了自己的SQL查询语言,用于便捷和熟悉的方式从Prometheus查询和检索数据,这个内置的语言就是PromQL。

    我们前面说过,Prometheus数据是用键值对表示的。PromQL也用相同的语法查询和返回结果集。

    使用Prometheus和PromQL,会处理两种向量:

    即时向量:表示在最近时间戳中跟踪的指标。

    时间范围向量:用于查看度量随时间的演变,可以使用自定义时间范围查询Prometheus。结果是一个向量聚合所选期间记录的值。

     

    PromQL API公开了一组方便查询数据操作的函数。用它可以实现排序,数学函计算(如导数或指数函数),统计预测计算(如Holt Winters函数)等。

    Instrumentation仪表化

    仪表化是Prometheus的一个重要组成部分。在从应用程序检索数据之前,必须要仪表化它们。Prometheus术语中的仪表化表示将客户端类库添加到应用程序,以便它们向Prometheus吐出指标。可以对大多数主流的编程语言(比如Python,Java,Ruby,Go甚至Node或C#应用程序)进行仪表化。

    在仪表化操作时,需要创建内存对象(如仪表或计数器),可以在运行中增加或减少。然后选择指标公开的位置。Prometheus将从该位置获取并存储到时间序列数据库。

     

    Exporters模版

    对于自定义应用程序,仪表化非常方便,它允许自定义公开的指标以及其随时间的变化方式。

    对于一些广泛使用的应用程序,服务器或数据库,Prometheus提供专门的应用模版,可以使用它们来监控目标。

    这些模版很多都用Docker镜像,可以轻松配置以监控目标。他们会预设常用的的指标和面板,可以几分钟内就完成监控配置。

    常见的Exporters模版有:

    数据库模版:用于MongoDB数据库,SQL服务器和MySQL服务器的配置。

    HTTP模版:用于HAProxy,Apache或NGINX等web服务器和代理的配置。

    Unix模版:用来使用构建的节点导出程序监视系统性能,可以实现完整的系统指标的监控。

     

    告警

    在处理时间序列数据库时,我们希望对数据进行处理,并对结果给出反馈,而这部分工作有告警来实现。

    告警在Grafana中非常常见,Prometheus也通过Alertmanager实现完成的告警系统。Alertmanager是一个独立的工具,可以绑定到Prometheus并运行自定义Alertmanager。告警通过配置文件定义,定义有一组指标定义规则组成,如果数据命中这些规则,则会触发告警并将其发送到预定义的目标。与Grafana类似,Prometheus的告警,可以通过email,Slack webhooks,PagerDuty和自定义HTTP目标等。

     

    普罗米修斯用例

    我们最后再说下Prometheus的用例,可以使用该系统的各行各业。

    DevOps

    随着为系统,数据库和服务器构建,Prometheus的主要目标显然是针对DevOps行业。在该领域有很多的供应商和众多的解决方案。Prometheus无疑是一个理想的方案。在云基础架构下Prometheus的实例启动并运行的非常简便,还可以根据需要灵活的装配所需的部件。这它成为器和分布式体系结构的严重依赖容的工具栈的理想解决方案。在实例的创建速度与销毁速度一样快的容器的世界中,服务发现是每个DevOps栈必须要具备的。

    医疗保健

    时下监控解决方案不仅适用于IT专业人员。它们还用于支持大型行业,为医疗保健行业提供弹性和可扩展的架构。随着需求的增长越来越多,部署的IT架构必须满足这种需求。如果没有可靠的方法来监控整个基础架构,可能会面临服务大量中断的风险,而Prometheus可以为其保驾护航。opensource网站上提供了很这样的实例。

    金融服务业

    InfoQ会议中有了讨论了将Prometheus用于金融机构方案。Jamie Christian和Alan Strader介绍了他们如何使用Prometheus监控Northern Trust的基础设施。

    展开全文
  • 普罗米修斯-源码

    2021-02-15 21:23:18
    普罗米修斯
  • 普罗米修斯禅:普罗米修斯的禅宗
  • 普罗米修斯手册:普罗米修斯中文文档
  • 普罗米修斯课程-源码

    2021-02-18 07:44:04
    普罗米修斯课程
  • 普罗米修斯堆栈-源码

    2021-02-08 02:43:03
    普罗米修斯堆栈
  • 普罗米修斯ISO

    2014-05-29 23:31:42
    U2Game.Net-普罗米修斯ISO引导器
  • 普罗米修斯基础训练 交互式Prometheus基础培训: 内容部分 培训内容位于目录中。 主要部分是实验,可以在。 雨果 该站点是使用静态页面生成器构建的。 该页面使用,该包含在Git子模块中。 针对品牌特定设置,使用...
  • 14、普罗米修斯盗火

    2020-11-19 23:17:18
    14、普罗米修斯盗火
  • 普罗米修斯钨出口商 OpenContrail / TungstenFabric的简单普罗米修斯出口商。 用法 $ tungsten-prometheus-exporter --config /path/to/config.yml or $ TUNGSTEN_PROMETHEUS_EXPORTER=/path/to/config.yml tungsten...
  • 普罗米修斯监控

    2020-09-30 14:32:54
    普罗米修斯是什么 Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合.由SoundCloud公司开发。 Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件...

    普罗米修斯是什么

    Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合.由SoundCloud公司开发。

    Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Docker 。

    Prometheus应该是为数不多的适合Docker、Mesos、Kubernetes环境的监控系统之一。
    输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux 系统信息 (包括磁盘、内存、CPU、网络等等),具体支持的源看:git官网

    普罗米修斯可以做什么

    • 系统监控:主要是跟操作系统的基本监控项目CUP、内存硬盘、IO、TCP连接、进出口流量
    • 程序监控:一般需要和开发人员配合,程序中主动上报各种获取数据或者特定的日志格式
    • 业务监控:(难点)可以包含用户访问QPS、DAU日活、访问状态(Http code)、业务接口(登入、注册、聊天、上传、留言、短信、搜索)

    数据类型(metrics)

    Gauges

    是一个最简单的度量标准,只有一个简单的返回值,或者叫瞬时状态。当需要监控硬盘或者内存的使用量,那么就应该使用Gauges的metrics格式来度量,因为硬盘的容量和内存的使用量是瞬间的,没有任何的规律,变化方式多种多样,而Gauges就是这种使用类型的代表

    Counters

    Counter就是计数器,从数据量0开始累积计算,在理想的状态下只能是永远的增长不会下降

    Histogram

    Histogram统计数据的分布情况,比如最小值,最大值,中间值,还有中位数,百分数值等,称为metrics中最难以理解的一种

    安装

    更新中。。

    使用方法

    更新中。。

    图形化展示

    更新中。。

    展开全文
  • 普罗米修斯解析器
  • 状元成才路 状元成才路 状元成才路 状元成才路 14 普罗米修斯 导入一 导入二 普罗米修斯 古希腊神话中最具智慧的神明之一创造了人类 导入一 返回 导入二 在古希腊神话中有一位带给人类温暖和光明的英雄普罗米修斯他...
  • 普罗米修斯转速-源码

    2021-02-09 02:10:32
    Prometheus和Exporter RPM规格 软件包是在Fedora Copr上自动构建的。 普罗米修斯: 警报管理员: blackbox_exporter: node_exporter: ssl_exporter:
  • 普罗米修斯的卡夫卡偏移滞后 暴露卡夫卡消费者抵消了普罗米修斯的滞后。 要求 Kafka v0.9.0.0或更高版本。 该导出器仅导出存储在Kafka中的偏移量。 入门 该项目旨在与Docker一起运行。 docker-compose up -d 使用...
  • 普罗米修斯 Promise

    2018-08-07 15:35:16
    盗火的普罗米修斯   曾经我在哪本书上看过这样的介绍,Promise 的英文是从希腊语的直译Prometheus演变过来,Promise也就是代表着先知 未来的意思。在希腊神话中,是最具智慧的神明之一,最早的泰坦巨神后代,名字...

    盗火的普罗米修斯

      曾经我在哪本书上看过这样的介绍,Promise 的英文是从希腊语的直译Prometheus演变过来,Promise也就是代表着先知 未来的意思。在希腊神话中,是最具智慧的神明之一,最早的泰坦巨神后代,名字有“先见之明”(Forethought)的意思。泰坦十二神伊阿佩托斯与名望女神克吕墨涅的儿子。普罗米修斯不仅创造了人类,给人类盗来了火,还教会了他们许多知识和技能。 后来由于给人类带来了火种,他吩咐火神给普罗米修斯最严厉的惩罚。每天还要派一直鹰去啄他的肝脏,夜晚的时候肝脏又会重新长出来,夜以继日的承受折磨。


    故事结束,开始吹牛X

    异步函数 Promise

      我个人觉得Promise 函数跟 普罗米修斯很像,都是代表着处理未来的事情的先知。既然能处理未来的事情,那就代表着它拥有非常的能力,听我慢慢吹来呀~ 首先来看看官方的吹牛文档解释:

    所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。

    你看没错吧,是不是很像一个先知可以处理未来的事情?既然是神仙肯定是咱们凡人管不了的,为啥管不了那?就体现在它三个内部状态上:

    对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是Promise这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。

    看见了吗,敲黑板划重点,神仙已经决定的东西就不能改变。而且一旦new Promise对象就不能取消,讲究~

    那如何使用那?下面来看一个简单的例子:

    const promise = new Promise (function(resolve, reject) { //这是先知啊,先知
      if (/* 异步操作成功 */){
        resolve(value);  // resolve就是这事儿先知同意了,你就干就完了
      } else {
        reject(error);  // reject就是这事儿先知不同意,白b扯了
      }
    });
    复制代码

    注意上面的事情其实有没有发生?没有,先知嘛预知未来的事情,什么时候发生那?当然先知同意的时候也就是说状态变成resolved。只要一resolved 马上就可以then了,划重点 敲黑板 then 就是这玩意。

    promise.then(function(value) {
      // 妥妥的这个已经办了,下面你想咋地吧?可以连式操作无限then下去
    }, function(error) {
      // 失败了消停的把错误信息打出来把
      console.log("错误信息:"+error)
    });
    复制代码

    那么坑人的玩意来了,请看下面代码,谁先打印?

    let promise = new Promise(function(resolve, reject) {
      console.log('Promise');
      resolve();
    });
    
    promise.then(function() {
      console.log('resolved.');
    });
    
    console.log('Hi!');
    复制代码

    上面代码中,Promise 新建后立即执行,所以首先输出的是Promise。然后,then方法指定的回调函数,将在当前脚本所有同步任务执行完才会执行,所以resolved最后输出。那么接下来这段

    你要是能直接写出答案,基本Promise就不用看了,根据上面的理论,Promise一旦建立马上就执行,但是咱们说了 resolve 是未来的状态,所以第二行代码先等一等,三行代码也不用看了,肯定是四行代码先执行,然后往下走 第六行执行,回过头来 第三行直接成功了,所以会接下去执行,最后一个不用我说了吧,第二行代码需要走个完成的resolve状态,把1传递给第五行的t参数,所以肯定是最后执行的。


    概念吹完了,来看势力

    妥了,接下来看一个用Promise对象实现的 Ajax 操作的实例:

    const getJSON = function(url) { 
      const promise = new Promise(function(resolve, reject){
        const handler = function() {
          if (this.readyState !== 4) {
            return;
          }
          if (this.status === 200) {
            resolve(this.response);
          } else {
            reject(new Error(this.statusText));
          }
        };
        const client = new XMLHttpRequest();
        client.open("GET", url);
        client.onreadystatechange = handler;
        client.responseType = "json";
        client.setRequestHeader("Accept", "application/json");
        client.send();
    
      });
    
      return promise;
    };
    
    getJSON("/posts.json").then(function(json) {
      console.log('Contents: ' + json);
    }, function(error) {
      console.error('出错了', error);
    });
    复制代码

    是不是很简单,一点都不难,只是把ajax的操作流程放到了先知的内部,让先知帮你获取各种成功失败的状态!结合实际,我们在工作中可能一次要请求好几个接口的数据,Promise提供了一个更加简单的方法

    const p = Promise.all([p1, p2, p3]);
    复制代码

    很好理解,all 的参数代表这一个可执行的任务队列,只要里面有任务就可以往下执行,也就是咱们访问的多个api集合组成的数组。

    // 生成一个Promise对象的数组
    const promises = [2, 3, 5, 7, 11, 13].map(function (id) {
      return getJSON('/post/' + id + ".json"); //ID 作为参数 变成动态请求
    });
    
    Promise.all(promises).then(function (posts) {
      // ...
    }).catch(function(reason){
      // ...
    });
    复制代码

    还有一个类似 all的api Promise.race,Promise.race方法的参数与Promise.all方法一样,如果不是 Promise 实例,就会先调用下面讲到的Promise.resolve方法,将参数转为 Promise 实例,再进一步处理

    const p = Promise.race([
      fetch('/resource-that-may-take-a-while'),
      new Promise(function (resolve, reject) {
        setTimeout(() => reject(new Error('request timeout')), 5000)
      })
    ]);
    
    p
    .then(console.log)
    .catch(console.error);
    复制代码

    上面代码中,如果 5 秒之内fetch方法无法返回结果,变量p的状态就会变为rejected,从而触发catch方法指定的回调函数。

    妥妥滴,既然到这里我估计你应该懂了,其实任何技术都不难,都能拆分成若干个简单点。任意简单的点组合起来就又复杂了,正所谓大道至简,相信万事万物都是简单的原理,怀着敬畏的心理去学习,终究会得到自己的收获。

    转载于:https://juejin.im/post/5b69a763f265da0f7a1d2145

    展开全文
  • prometheus普罗米修斯

    2019-03-11 21:15:23
    普罗米修斯prometheus 1、官网 https://prometheus.io/docs/introduction/overview/ 2、优秀插件 grafana展示 https://grafana.com/grafana/download ./prometheus --config.file=prometheus.yml ...

    普罗米修斯prometheus

    1、官网

    https://prometheus.io/docs/introduction/overview/ 

    2、优秀插件

    grafana展示

    https://grafana.com/grafana/download 

    ./prometheus --config.file=prometheus.yml

    展开全文
  • Jerry每次在工作场合中同Prometheus(普罗米修斯)打交道时,都会“出戏”,因为这个单词给我的第一印象,并不是用go语言实现的微服务监控利器,而是名导雷德利·斯科特(Ridley Scott)拍摄的科幻大片。回到现实中来,...
  • 很棒的普罗米修斯::memo:精选的很棒的普罗米修斯资源,项目和工具清单
  • 普罗米修斯Prometheus监控MySQL添加数据库用户CREATE USER monitor_prometheus@'192.168.245.%' IDENTIFIED BY 'Abcde@123';GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO monitor_prometheus@'192.168.245....
  • 普罗米修斯烧瓶-源码

    2021-02-15 12:26:02
    普罗米修斯烧瓶 описаниефайлов: CONSOLE-LOG-DOCKER.txt-логидокера CONSOLE-LOG-KUBERNETES.txt-логикубенетес DOCKER.tar.gz-конфигурациядокера ...
  • 3普罗米修斯——小学生学习课件
  • 2普罗米修斯——学生学习课件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 947
精华内容 378
关键字:

普罗米修斯