埃尔法哥哥:promethus基本工作原理
什么是Prometheus?
Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB) 。 Prometheus使用Go语言开发 , 是GoogleBorgMon监控系统的开源版本 。 2016年由Google发起Linux基金会旗下的原生云基金会(CloudNativeComputingFoundation),将Prometheus纳入其下第二大开源项目 。 Prometheus目前在开源社区相当活跃 。 Prometheus和Heapster(Heapster是K8S的一个子项目 , 用于获取集群的性能数据 。 )相比功能更完善、更全面 。 Prometheus性能也足够支撑上万台规模的集群 。
Prometheus的特点
多维度数据模型 。
灵活的查询语言 。
不依赖分布式存储 , 单个服务器节点是自主的 。
通过基于HTTP的pull方式采集时序数据 。
可以通过中间网关进行时序列数据推送 。
通过服务发现或者静态配置来发现目标服务对象 。
支持多种多样的图表和界面展示 , 比如Grafana等 。
架构图
【埃尔法哥哥: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主动推送指标的中间网关 。
推荐阅读
- 三生石哥哥多家快递公司宣布会提高快递运送费用
- 埃尔法哥哥互联网空间会被用完吗?2025年全世界数据总量将会超过16万EB
- 埃尔法哥哥 人工智能与科技传播领域的融合
- 【埃尔法哥哥】kNN分类算法及其python实现
- 埃尔法哥哥■区块链技术迎风而上,ETX公链解决行业痛点,信息时代安全为王
- 埃尔法哥哥@Spark 数据倾斜的 8 大实用方法,解决
- 『埃尔法哥哥』为什么你写的代码别人看不懂?
- 「埃尔法哥哥」ICCV2019:DeepFill一个用于生成图像修复任务的开源框架
- 『埃尔法哥哥』每一个程序员的必经之事
- 埃尔法哥哥■假装网络工程师-TCP/IP与静态路由