前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Prometheus 入门基础知识总结

Prometheus 入门基础知识总结

作者头像
DevOps云学堂
发布2019-10-17 15:21:33
1.1K0
发布2019-10-17 15:21:33
举报
文章被收录于专栏:DevOps持续集成DevOps持续集成

Prometheus

简介

  • Prometheus是由SoundCloud开发的开源监控告警系统。
  • 基于Go语言开发,是Google BorgMon监控系统的开源版本。
  • 2016年由Google发起的Linux基金会旗下的原生云基金会CNCF将其纳入第二大开源项目。

特点

  • 提供多维度数据模型
  • 灵活的查询方式
  • 支持服务器节a点的本地存储和远程存储
  • 定义了开放的指标数据标准
  • 基于HTTP的Pull方式采集数据
  • 支持通过静态文件和动态发现机制发现监控对象
  • 易于维护
  • 支持数据的分区采样和联邦部署

架构设计

核心组件

  • Server:负责定时在目标上抓取metrics(指标)数据。
  • Target:暴露一个HTTP服务接口用户Server抓取数据。
  • AlertManager :接收server推送的告警信息,并触发告警。
  • Grafana:监控数据展示。
  • Exporters: 用于暴露已有的第三方服务的 metrics 给 Prometheus。

监控指标

指标定义

<metric name>{<label name>=<label value>, ...},

  • 指标名称(metric name):用于说明指标的含义,指标名称必须有字母、数字、下划线或者冒号组成 符合正则表达式 [a-zA-Z:][a-zA-Z0-9:],冒号不能用于exporter。
  • 标签(label): 体现指标的维度特性,用于过滤和聚合。通过标签名和标签值组成,键值对形式形成多种维度

实例

代码语言:javascript
复制
指标1 http_request_total{status="200",method="POST"}
指标2{__name__="http_request_total",status="200",method="POST"}
  • 以上两个指标是一样,下划线开头的标签是系统内部使用的
  • 指标名称:httprequesttotal 代表HTTP请求的总数
  • 标签1:status 值 200, 代表状态码为200
  • 标签2:method 值 POST,代表请求类型为POST

指标分类

Counter 计数器
  • 计数器类型,只增不减,适用于机器启动时间、HTTP访问量
  • 具有很好的不相关性,不会因为机器重启而置0
  • 通常会结合rate()方法获取该指标在某个时间段的变化率
Gauge
  • 仪表盘,表征指标的实时变化情况。
  • 可增可减,CPU和内存使用量。
  • 大部分监控数据类型都是Gauge类型的
Summary
  • 高级指标,用于凸显数据的分布情况
  • 某个时间段内请求的响应时间
  • 可以与Histogram相互转化
  • 采样点分位图统计,用于得到数据的分布情况
  • 无需消耗服务端资源
  • 与histogram相比消耗系统资源更多
  • 计算的指标不能再获取平均数等其他指标
  • 一般只适用于独立的监控指标,如垃圾回收时间等
Histogram
  • 反映了某个区间内的样本个数,通过{le="上边界"}指定这个范围内的样本数。

数据样本

  • Prometheus会将所有采集到的样本数据以时间序列(time-series)的方式保存在内存数据库中,并且定时保存到硬盘上。
  • time-series是按照时间戳和值的序列顺序存放的,我们称之为向量(vector). 每条time-series通过指标名称(metrics name)和一组标签集(labelset)命名。

样本组成

  • 指标(metric):metric name和描述当前样本特征的labelsets;
  • 时间戳(timestamp):一个精确到毫秒的时间戳;
  • 样本值(value):一个folat64的浮点型数据表示当前样本的值。

数据采集

和采用Push方式采集监控数据不通,Prometheus可采用Pull方式采集监控数据。

Pull方式

实时性
  • 通过周期性采集,设置采集时间。实时性不如Push方式。
状态保存
  • target需要数据存储能力,server只负责数据拉取。
  • server可以做到无状态。
控制能力
  • server更加主动,控制采集的内容和采集频率。
配置的复杂性
  • 通过批量配置或者自动发现来获取所有采集点。
  • 相对简单,可以做到target充分解耦,无须感知server存在。

Push方式

实时性
  • 相对较好,可以采集数据立即上报到监控中心。
状态保存
  • 在采集完成后立即上报,本地不会保存采集数据。
  • target本身无状态,server需要维护各种target状态。
控制能力
  • 控制方为target,target上报的数据决定了上报的周期和内容。
配置的复杂性
  • 每个target都需要配置server的地址。

服务发现

静态配置

  • 静态文件配置是一种传统的服务发现方式。
  • 适用于有固定的监控环境、IP地址和统一的服务接口的场景。
  • 需要在配置中指定采集的目标信息。
  • 例如:“target”: [“10.10.10.10:8080”]

动态发现

  • 比较适用在云环境下,动态伸缩、迅速配置。
  • 容器管理系统、各种云管平台、各种服务发现组件。
  • kubernetes为例:
    • 需要配置API的地址和认证凭据
    • prometheus一直监听集群的变化
    • 获取新增/删除集群中机器的信息,并更新采集对象列表。

数据存储

本地存储

  • 通过自带的时序数据库将数据保存到本地的磁盘。

远端存储

  • 适用于存储大量的监控数据
  • 支持OpenTSDB、InfluxDB、ElasticSearch等后端存储
  • 通过适配器实现存储的远程读写接口,便可以监控

数据查询

  • Prometheus 通过PromQL和其他API可视化地展示收集的数据。
  • Prometheus支持多种方式的图表可视化
    • Grafana
    • 自动的PromDash和自身提供的模板引擎等
  • Prometheus 还提供了HTTP API查询方式,自定义所需输出。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps持续集成 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Prometheus
    • 简介
      • 特点
        • 架构设计
          • 核心组件
            • 监控指标
              • 指标定义
              • 实例
              • 指标分类
              • 数据样本
              • 样本组成
            • 数据采集
              • Pull方式
              • Push方式
            • 服务发现
              • 静态配置
              • 动态发现
            • 数据存储
              • 本地存储
              • 远端存储
            • 数据查询
            相关产品与服务
            对象存储
            对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档