跳转至

介绍

起源

Prometheus 起源于 SoundCloud ,因为微服务迅速发展,导致实例数量以几何倍数递增,不得不考虑设计一个符合以下几个功能的监控系统:

多维数据模型,可以按照实例,服务,端点和方法之类的维度随意对数据进行切片和切块。

操作简单,可以随时随地部署监控服务,甚至在本地工作站上,而无需设置分布式存储后端或重新配置环境。

可扩展的数据收集和分散的架构,以便于可以可靠的监控服务的许多实例,独立团队可以部署独立的监控服务。

转化为一种查询语言,可以利用数据模型进行有效的警报和图形展示。

但是,当时的情况是,以上的功能都分散在各个系统之中,直到2012年 SoundCloud 某位大神启动了一个孵化项目, SoundCloud 才把所有功能集合到一起, 这时也就有了 PrometheusPrometheus 是用Go语言编写,从一开始就是开源的。 尽管一直很低调,一开始还是获得了很多粉丝与贡献者; 2016 年 Prometheus 成为继 Kubernetes 之后,成为 CNCF(Cloud Native Computing Foundation) 第二个成员。

云原生

对于云原生一词,想必大家已经不陌生了,因为谷歌、百度、必应搜索以后,必然会出现一堆关于云原生的相关介绍,为了解惑,在这里就简单的讲一下云原生的定义起源与发展,如果大家想 了解更多云原生的定义与详细解释,可以去搜索关键词 CloudNative 了解。

Pivotal最初的定义

云原生最早的定义是Pivotal公司的Matt Stine写了一本叫做迁移到云原生应用架构的小册子,里面提到了:

符合12因素应用

面向微服务架构

自服务敏捷架构

基于API的协作

抗脆弱性

CNCF最初的定义

到了2015年Google主导成立了云原生计算基金会CNCF,起初CNCF对云原生(Cloud Native)的定义包含以下三个方面:

应用容器化

面向微服务架构

应用支持容器的编排调度

重定义

到了2018年,随着近几年来云原生生态的不断壮大,所有主流云计算供应商都加入了该基金会,且从Cloud Native Landscape中可以看出云原生有意蚕食原先非云原生应用的部分。CNCF基金会中的会员以及容纳的项目越来越多,该定义已经限制了云原生生态的发展,CNCF为云原生进行了重新定位。

云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。

这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。

云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。

CNCF Cloud Native Definition v1.0 - github.com


发展

2015

GitHub 完全开源后,STAR数直逼9k,同时也被很多公司作为监控方案采用;

2016

Prometheus 加入 CNCF(Cloud Native Computing Foundation),继 Kubernetes 加入后的第二个项目成员。

2017

Prometheus 2.0 发布,这是Prometheus的一个重要的里程碑,在集成TSDB后的Prometheus 2.0,与Prometheus 1.8相比,CPU使用率降低到20%-40%,磁盘I/O、磁盘空间使用率降低到33%-50%,查询负载通常平均<1%;

2020

时至今日, Prometheus 版本已经迭代到2.17.1 ,STAR数已超30k,已经是云原生不可分割的重要一部分。

架构概述

此图是2015年发布,虽然有些简陋,不失为是经典,展示的是Prometheus的总体架构及生态系统组件:

架构

Prometheus通过pushgateway推送已经获取到的Metric数据,用于短期存储。

把所有获取到的指标存储到本地,并对这些数据进行处理,记录为时间序列的数据用以生成警报。

PromDash (提供WEB页面,PromQL查询)。

提供API,为使用者用于可视化所需要收集的数据。

普罗米修斯的主要特点是:

  • 多维数据模型
  • 一种灵活的查询语言,可利用此维度查询
  • 不依赖分布式存储,单个服务器节点
  • 时间序列收集采用HTTP上的Pull模型
  • 通过PushGateway推送时间序列指标与联邦查询
  • 通过服务发现或静态配置发现目标
  • 图形和仪表板支持的多种模式
  • Docker、Kubernetes原生支持

社区&读者交流

个人博客:Kubernetes技术栈

Prometheus文档:Prometheus

CoDo官网:CoDo

微信群:Kubernetes技术栈,扫二维码或搜索微信号Kevin_Wangyuhui后拉你入群

二维码

知乎专栏:Kubernetes技术栈

Instagram: Kubernetes技术栈

博客园:云原生之道

简书: 青牛踏雪

微信公众号:扫描下面的二维码关注微信公众号 Kubernetes技术栈

k8s公众帐号