首页 国际新闻正文

古,共享一款开源的监控神器--Prometheus 简介、架构及相关概念,企鹅fm

概述

老环境用的zabbix做监控,新环境因为用的微服务架构,所以比照一再,挑选了prometheus来做监控,下面介绍下什么是prometheus。


一、简介

Prometheus 是一套开源的体系监控报警结构。它启发于 Google 的 borgmon 监控体系,由作业在 SoundCloud 的 google 前职工在 2012 年创立,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式参加 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。

作为新一代的监控结构,Prometheus 具有以下特色:

  • 强壮的多维度数据模型:
  1. 时刻序列数据经过 me东方缘墨录tric 名和键值对来区别。
  2. 一切的 metrics 都能够设置恣意的多维标签。
  3. 数据模型更随意,不需求故意设置为以点分隔的字符串。
  4. 能够对数据模型进行聚合,切开和切片操作。
  5. 支撑双精度浮点类型,标签能够设为全 unicode。
  • 灵敏而强壮的查询句子(PromQL):在同一个查询句子,能够对多个 metrics 进行乘法、加法xboy、衔接、取分数位等操作。
  • 易于办理: Prometheus server 是一个独自的二进制文件,可直接在本地作业,不依赖于分布式存储。
  • 高效:均匀每个采样点仅占 3.5 bytes,且一个 Prometheus server 能够处理数百万的 metrics。
  • 运用 pull 形式搜集时刻序列数据,这样不只有利于本机测验并且能够防止有问题的服务器推送坏的 metrics。
  • 能够选用 push gateway 的方法把时刻序列数据推送至 Prometheus server 端。
  • 能够经过服务发现或许静态装备去获取监控的 targets。
  • 有多种可视化图形界面。
  • 易于弹性。

需求指出的是,因为数据搜集或许会有丢掉,所以 Prometheus 不适用对搜集数据要 100% 精确的景象。但假如用于记载时刻序列数据,Prometheus 具有很大的查询优势,此外,Prometheus 适用于微服务的体系架构。


二、Prome古,同享一款开源的监控神器--Prometheus 简介、架构及相关概念,企鹅fmtheus 组成及架安瑟十三构

Prometheus 生态圈中包含了多个组件,其间许多组件是可选的:

  • Prometheus Server: 用于搜集和存储时刻序列数据。
  • Client Library: 客户端库,为需求监控的服务生成相应的 metrics 并露出给 Prometheus s霍泊宏erver。当 Prometheus server 来 pull 时,直接拉登说过两种人不会杀回来实时状况的 metrics。
  • Push Gateway: 首要用于短期的 jobs。因为这类 jobs 存在时刻古,同享一款开源的监控神器--Prometheus 简介、架构及相关概念,企鹅fm较短,或许在 Prometheus 来 pull 之前就消失了。为此,这次 jobs 能够直接向 Prometheus server 端推送它们的 metrics。古,同享一款开源的监控神器--Prometheus 简介、架构及相关概念,企鹅fm这种方法首要用于服务层面的 metrics,关于机器层面的 metrices,需求运用 node exporter。
  • Exporters: 用于露出已有的第三方服务的 metrics 给 Prometheus。
  • Alertmanager: 从 Prometheus server 端接地铁歪头美人收到 alerts 后,会进行去除重复数据,分组,并路由到对收的承受方法,宣布报警。常见的接纳方法有:电子邮件,pagerduty,OpsGenie, webhook 等。
  • 一些其他的东西。

Prometheus 架构图:

从上图能够看出,Prometheus 的首要模块包含:Prometheus server, exporters, Pushgateway, PromQL, Alertmanager 以及图形界面。

其大约的作业流程是:

  1. Prometheus se古,同享一款开源的监控神器--Prometheus 简介、架构及相关概念,企鹅fmrver 王小珂守时从装备好的 jobs 或许 e袁政益xporters 中拉 metrics,或许接纳来自 Pushgateway 发过来的 metrics,或许从其他的 Prometheus server 中拉 metrics。
  2. Prometheus server 在本地存储搜集到的 me排球谏言堂trics,并运转已界说好的 alert.rules,记载新的时刻序列或许向 Alertmanager 推送警报。
  3. Alertmanager 依据装备文件,对接纳到的警报进行处理,宣布告警。
  4. 在图形界面中,可视化搜集数据。

pull方法

Prometheus搜集数据是用的pull也细腿大羽便是拉模型,经过HTTP协议去搜集方针,只需运用体系能够供给HTTP接口就能够接入监控体系,比较于私有协议或二进制协议来说开发、简略。

push方法

关于守时使命这种短周期的方针搜集,假如选用pull形式,或许形成使命完毕了,Prometheus还没有来得及搜集,这个时分能够刑讯室运用加一个中转层,客户端推数据到Push Gateway缓存一下,由P月饼歌rometheus从push gateway pull方针过来古,同享一款开源的监控神器--Prometheus 简介、架构及相关概念,企鹅fm。(需求额定建立Push Gateway,一起需求新增job去从gateway采数据)


三、Prometheus 相关概念

下面将对 Prometheus 中的数据模型,metric 类型以及 instance 和 job 等概念进行介绍。

1、数据模型

Prometheus 中存储的数据为时刻序列,是由 metric 的姓名和一系列的标签(键值对)仅有训妻标识的,不同的标签则代表不同的时刻序列。

  • metric 姓名:该姓名应该具有杨才美语义,一般用于表明 metric 的功用,例如:http_requests_total, 表明 http 恳求的总数。其间,metric 姓名由 ASCII 字符,数字,下划线,以及冒号组成,且有必要满意正则表达式 [a-zA-Z_:][a-zA一场错爱到白头-Z0-9_:]*。
  • 标签:使同一个时刻序列有了不同维度的辨认。例如 http_requests_total{method="Get"} 表明一切 http 恳求中的 Get 恳求。当 method="post七龙珠凶恶" 时,则为新的一个 metric。标签中的键由 ASCII 字符,数字,以及下划线组成,且有必要满意正则表达式 [a-zA-Z_:][a-zA-Z0-9_:]*。
  • 样本:实践的时刻序列,每个序列包含一个 float64 的值和一个毫秒级的时刻戳。
  • 格局:{

2、四种 Metric 类型(我习气把metric理解为方针)

Prometheus 客户端库首要供给四种首要的 metric 类型:

Counter

  • 一种累加的 metric,典型的运用如:恳求的个数,完毕的使命数, 呈现的过错数等等。

例如,查询菜多多水培栽培箱 http_requests_total{method="get", job="Prometheus", handler="query"} 回来 8,10 秒后,再次查询,则回来 14。

Gauge

  • 一种惯例的 metric,典型的运用如:温度,运转的 goroutines 的个数。
  • 能够恣意加减。

例如:go_goroutines{instance="172.17.0.2", job="Prometheus"} 回来值 147,10 秒后回来 124。

Histogram

  • 能够理解为柱状图,典型的运用如:恳求持续时刻,呼应巨细。
  • 能够对调查成果采样,分组及计算。

例如,查询 http_request_duration_microseconds_sum{job="Prometheus", handler="query"} 时,回来成果如下:

Histogram metric 回来成果图

Summary

  • 类似于 Histogram, 典型的应北医网校用如:恳求持续时刻,呼应巨细。
  • 供给孙邦楠观测值的 count 和 sum 功用。
  • 供给百分位的功用,即能够按百分比区分盯梢成果。

3、instance 和 jobs

instance: 一个独自 scrape 的方针, 一般对应于一个进程。

jobs: 一组同种类型的 instances(首要用于确保可扩展性和可靠性),例如:

清单 古,同享一款开源的监控神器--Prometheus 简介、架构及相关概念,企鹅fm1. job 和 instance 的联系

job: api-server
instance 1: 1.2.3.4:5670
instance 2: 1.2.3.4:5671
instance 3: 5.6.7.8:5670
instance 4: 5.6.7.8:5671

当 scrape 方针时,Prometheus 会主动给这个 scrape 的时刻序列附加一些标签以便更好的别离,例如: instance,job。

下面以实践的 metric 为例,对上述概念进行阐明。

Metrics 示例

如上图所示,这三个 metric 的姓名都相同,他们仅凭 handler 不同而被标识为不同的 metrics。这类 metrics 只会向上累加,是归于 Counter 类型的 metric,且 metrics 中都含有 instance 和 job 这两个标签。


觉得有用的朋友多帮助转发哦!后边会共享更多devops和DBA方面的内容,感兴趣的朋友能够重视下~

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。