埃尔法哥哥:promethus基本工作原理

什么是Prometheus?
Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB) 。 Prometheus使用Go语言开发 , 是GoogleBorgMon监控系统的开源版本 。 2016年由Google发起Linux基金会旗下的原生云基金会(CloudNativeComputingFoundation),将Prometheus纳入其下第二大开源项目 。 Prometheus目前在开源社区相当活跃 。 Prometheus和Heapster(Heapster是K8S的一个子项目 , 用于获取集群的性能数据 。 )相比功能更完善、更全面 。 Prometheus性能也足够支撑上万台规模的集群 。
Prometheus的特点
多维度数据模型 。
灵活的查询语言 。
不依赖分布式存储 , 单个服务器节点是自主的 。
通过基于HTTP的pull方式采集时序数据 。
可以通过中间网关进行时序列数据推送 。
通过服务发现或者静态配置来发现目标服务对象 。
支持多种多样的图表和界面展示 , 比如Grafana等 。
架构图
【埃尔法哥哥:promethus基本工作原理】
埃尔法哥哥:promethus基本工作原理
文章图片
埃尔法哥哥:promethus基本工作原理
文章图片
基本原理
Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态 , 任意组件只要提供对应的HTTP接口就可以接入监控 。 不需要任何SDK或者其他的集成过程 。 这样做非常适合做虚拟化环境监控系统 , 比如VM、Docker、Kubernetes等 。 输出被监控组件信息的HTTP接口被叫做exporter 。 目前互联网公司常用的组件大部分都有exporter可以直接使用 , 比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等) 。
服务过程
PrometheusDaemon负责定时去目标上抓取metrics(指标)数据 , 每个抓取目标需要暴露一个http服务的接口给它定时抓取 。 Prometheus支持通过配置文件、文本文件、Zookeeper、Consul、DNSSRVLookup等方式指定抓取目标 。 Prometheus采用PULL的方式进行监控 , 即服务器可以直接通过目标PULL数据或者间接地通过中间网关来Push数据 。
Prometheus在本地存储抓取的所有数据 , 并通过一定规则进行清理和整理数据 , 并把得到的结果存储到新的时间序列中 。
Prometheus通过PromQL和其他API可视化地展示收集的数据 。 Prometheus支持很多方式的图表可视化 , 例如Grafana、自带的Promdash以及自身提供的模版引擎等等 。 Prometheus还提供HTTPAPI的查询方式 , 自定义所需要的输出 。
PushGateway支持Client主动推送metrics到PushGateway , 而Prometheus只是定时去Gateway上抓取数据 。
Alertmanager是独立于Prometheus的一个组件 , 可以支持Prometheus的查询语句 , 提供十分灵活的报警方式 。
三大套件
Server主要负责数据采集和存储 , 提供PromQL查询语言的支持 。
Alertmanager警告管理器 , 用来进行报警 。
PushGateway支持临时性Job主动推送指标的中间网关 。


    推荐阅读