前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Prometheus监控实战》第2章 Prometheus简介

《Prometheus监控实战》第2章 Prometheus简介

作者头像
yeedomliu
发布2019-12-19 16:34:16
1.1K0
发布2019-12-19 16:34:16
举报
文章被收录于专栏:yeedomliuyeedomliuyeedomliu

第2章 Prometheus简介


2.1 Prometheus起源

  • Prometheus的灵感来自谷歌的Borgmon。它最初由前谷歌SRE Matt T.Proud开发,并转为一个研究项目。在Proud加入SoundCloud之后,他与另一位工程师Julius Volz合作开发了Prometheus。后来其他开发人员陆续加入了这个项目,并在SoundCloud内部继续开发,最终于2015年1月将其发布
  • Facebook发现85%的查询是针对26小时内的数据

2.2 Prometheus架构

  • Prometheus通过抓取或拉取应用程序中暴露的时间序列数据来工作。时间序列数据通常由应用程序本身通过客户端库或称为exporter(导出器)的代理来作为HTTP端点暴露
  • Prometheus还有一个推送网关(push gateway)[3],可用于接收少量数据——例如,来自无法拉取的目标数据(如临时作业或者防火墙后面的目标)
  • Prometheus架构(图)

资料

  • [1] https://github.com/Lusitaniae/apache_exporter
  • [2] https://github.com/prometheus/mysqld_exporter
  • [3] https://github.com/prometheus/pushgateway

2.2.1 指标收集

  • Prometheus称其可以抓取的指标来源为端点(endpoint)。端点通常对应单个进程、主机、服务或应用程序。为了抓取端点数据,Prometheus定义了名为目标(target)的配置

2.2.2 服务发现

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

2.2.3 聚合和警报

  • Prometheus还可以定义警报规则。这些是为系统配置的在满足条件时触发警报的标准,例如,资源时间序列开始显示异常的CPU使用率。Prometheus服务器没有内置警报工具,而是将警报从Prometheus服务器推送到名为Alertmanager(警报管理器)[1]的单独服务器。Alertmanager可以管理、整合和分发各种警报到不同目的地
  • https://prometheus.io/docs/alerting/alertmanager/

2.2.4 查询数据

  • Prometheus服务器还提供了一套内置查询语言PromQL、一个表达式浏览器(如图2-2所示)以及一个用于浏览服务器上数据的图形界面
  • Prometheus表达式浏览器(图)

2.2.5 自治

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

2.2.6 冗余和高可用性

  • 冗余和高可用性侧重弹性而非数据持久性。Prometheus团队建议将Prometheus服务器部署到特定环境和团队,而不是仅部署一个单体Prometheus服务器
  • Prometheus冗余架构(图)

2.2.7 可视化

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

2.3 Prometheus数据模型

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

2.3.1 指标名称

  • 时间序列名称[1]通常描述收集的时间序列数据的一般性质——例如,website_visits_total为网站访问的总数

2.3.2 标签

  • 标签为Prometheus数据模型提供了维度
  • 标签共有两大类
    • 插桩标签(instrumentation label):插桩标签来自被监控的资源——例如,对于与HTTP相关的时间序列,标签可能会显示所使用的特定HTTP动词。这些标签在由诸如客户端或exporter抓取之前会被添加到时间序列中
    • 目标标签(target label):目标标签更多地与架构相关——它们可能会识别时间序列所在的数据中心。目标标签由Prometheus在抓取期间和之后添加
  • 时间序列由名称和标签标识(尽管从技术上讲,名称本身也是名为__name__的标签)
  • 带有__前缀的标签名称保留给Prometheus内部使用

2.3.3 采样数据

  • 时间序列的真实值是采样(sample)的结果
    1. 一个float64类型的数值
    2. 一个毫秒精度的时间戳

2.3.4 符号表示

  • 时间序列表示为符号(notation)
  • 时间序列示例
  • 首先是时间序列名称,后面跟着一组键/值对标签。通常所有时间序列都有一个instance标签(标识源主机或应用程序)以及一个job标签(包含抓取特定时间序列的作业名称)

2.3.5 保留时间

  • Prometheus专为短期监控和警报需求而设计。默认情况下,它在其数据库中保留15天的时间序列数据。如果要保留更长时间的数据,则建议将所需数据发送到远程的第三方平台

2.4 安全模型

  • Prometheus可以通过多种方式进行配置和部署,关于安全有以下两个假设
    1. 不受信任的用户将能够访问Prometheus服务器的HTTP API,从而访问数据库中的所有数据
    2. 只有受信任的用户才能访问Prometheus命令行、配置文件、规则文件和运行时配置
  • 从Prometheus 2.0开始,默认情况下某些HTTP API的管理功能被禁用

2.5 Prometheus生态系统

  • 生态系统的核心是Prometheus服务器,此外还有Alertmanager,它为Prometheus提供警报引擎并进行管理
  • Prometheus项目还包括一系列exporter[1],用于监控应用程序和服务,并在端点上公开相关指标以进行抓取。核心exporter支持常见工具,如Web服务器、数据库等。许多其他exporter都是开源的,你可以从Prometheus社区查看

链接

  • [1] https://prometheus.io/docs/instrumenting/exporters/
  • [2] https://prometheus.io/docs/instrumenting/clientlibs/。(Prometheus客户端库)

2.6 参考链接

  • 官网:https://prometheus.io/
  • 文档:https://prometheus.io/docs/
  • GitHub主页:https://github.com/prometheus
  • GitHub源码:https://github.com/prometheus/prometheus
  • 参考视频:大规模Prometheus和时间序列设计(https://www.youtube.com/watch?v=gNmWzkGViAY)
  • Grafana官网:https://grafana.com
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yeedomliu 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第2章 Prometheus简介
    • 2.1 Prometheus起源
      • 2.2 Prometheus架构
        • 资料
        • 2.2.1 指标收集
        • 2.2.2 服务发现
        • 2.2.3 聚合和警报
        • 2.2.4 查询数据
        • 2.2.5 自治
        • 2.2.6 冗余和高可用性
        • 2.2.7 可视化
      • 2.3 Prometheus数据模型
        • 2.3.1 指标名称
        • 2.3.2 标签
        • 2.3.3 采样数据
        • 2.3.4 符号表示
        • 2.3.5 保留时间
      • 2.4 安全模型
        • 2.5 Prometheus生态系统
          • 链接
        • 2.6 参考链接
        相关产品与服务
        Prometheus 监控服务
        Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档