Prometheus 介绍
访问量:1317
创建时间:2020-02-25
什么是Prometheus
Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包 。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。现在,它是一个独立的开源项目,并且独立于任何公司进行维护。为了强调这一点并阐明项目的治理结构,Prometheus 在2016年加入了 Cloud Native Computing Foundation,这是继Kubernetes之后的第二个托管项目。
特征
普罗米修斯的主要特点是:
- 一个多维数据模型,其中包含通过度量标准名称和键/值对标识的时间序列数据
- PromQL,一种灵活的查询语言 ,可利用此维度
- 不依赖分布式存储;单服务器节点是自治的
- 时间序列收集通过HTTP上的拉模型进行
- 通过中间网关支持推送时间序列
- 通过服务发现或静态配置发现目标
- 多种图形和仪表板支持模式
组件
Prometheus生态系统包含多个组件,其中许多是可选的:
- Prometheus主服务器,它会刮取并存储时间序列数据
- 客户端库,用于检测应用程序代码
- 一个支持短暂工作的推送网关
- 诸如HAProxy,StatsD,Graphite等服务的专用出口商
- 一个alertmanager处理警报
- 各种支持工具
大多数Prometheus组件都是用Go编写的,因此易于构建和部署为静态二进制文件。
架构图
下图说明了Prometheus的体系结构及其某些生态系统组件:
Prometheus直接或通过中间推送网关从已检测作业中删除指标,以用于短期作业。它在本地存储所有抓取的样本,并对这些数据运行规则,以汇总和记录现有数据中的新时间序列或生成警报。Grafana或其他API使用者可用于可视化收集的数据。
- 上图中下是Prometheus 的server;左边是周期性采集数据的客户端,客户端如果执行一次就退出了,他的监控数据可以通过pushgateway来代理,进而让prometheus抓取到数据;右上是报警组件;右下是对外的数据可视化接口。
- 通常把prometheus要去抓取数据的客户端称为exporter,官方提供多种exporter,例如主机、数据库、k8s等,k8s容器中的应用程序需要研发人员集成接口,通过服务发现让prometheus来抓取数据。
- 数据格式化存储在Prometheus server端的TSDB数据库中
- 可以通过PromSQL(sql语言)查询数据,提供给grafana进行可视化展示。
- 通过prometheus 提供的alertmanager组件可以警醒报警(可以整合钉钉,微信等)。