🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# **概览(Overview)** <br /> ## **Prometheus 是什么** Prometheus 起初是 [SoundCloud](https://soundcloud.com/) 创建的一个开源系统监控报警工具。自其 2012 年开创以来,众多公司、组织都采用了 Prometheus,该项目也有一个非常活跃的开发者和用户[社区](https://prometheus.io/community)。现在 Prometheus 是一个独立的开源项目,独立于任何一个公司。为了强调这一点,同时使得该项目的治理更清楚,Prometheus 于 2016 年加入了 [CNCF](https://cncf.io/),成为了继 Kubernetes 之后的第二个托管项目。 可以通过查看 [media](https://prometheus.io/docs/introduction/media/) 来获取更详细的 Prometheus 概览。 ## **特性(Features)** Prometheus 的主要特性包括: * 通过指标名(metric name)和 KV 结构,使用时序数据(time series data)表达的多维度[数据模型](https://prometheus.io/docs/concepts/data_model/) * PromQL,一种灵活的[查询语言](https://prometheus.io/docs/prometheus/latest/querying/basics/),能够更好的利用维度 * 对分布式存储没有依赖;单服务器节点即可自治 * 通过使用基于 HTTP 的拉模式 (pull model) 进行时序数据采集 * 通过中间网关 ( gateway) 以支持[推送时序数据](https://prometheus.io/docs/instrumenting/pushing/) * 通过服务发现或静态配置,发现监控目标(targets) * 支持多图和仪表盘模式 ## **组件(Components)** Prometheus 生态由多组件构成,其中大部分都是可选配置: * 主要的 [Promethues server](https://github.com/prometheus/prometheus):抓取和存储时序数据 * [客户端 libraries](https://prometheus.io/docs/instrumenting/clientlibs/):装置在应用端以采样(instrumenting)应用程序代码 * [push gateway](https://github.com/prometheus/pushgateway):能够支持短时任务 * 特别的 [exporters](https://prometheus.io/docs/instrumenting/exporters/) 给各类服务,比如 HAProxy、StatsD、Graphite 等。 * [alertmanager](https://github.com/prometheus/alertmanager):用来处理报警 * 各式支持工具 ## **架构(Architecture)** 下图阐述了 Prometheus 及其生态组件的架构: ![](https://img.kancloud.cn/34/42/3442d3610621a72e0aefdb8d1d3c7eb3_1351x811.png) Prometheus 采样数据有两种方式,一种是直接采样仪表化任务(instrumenting job),另一种通过中介 push gateway 来采样短时任务。Prometheus 在本地存储所有采样的样本,同时基于这些数据,执行规则(rules)用以从已存数据上聚合、记录新的时序数据,或用以发送报警。[Grafana](https://grafana.com/) 或其他的 API consumers 可以可视化这些收集的数据。 ## **适合的场景(When does it fit?)** Prometheus 适合记录纯粹的数值时序(purely numeric time series)。它既适用于以机器为中心的监控,也适用于高度动态的面向服务的体系结构(SOA)的监控。在微服务的世界里,它对多维数据收集、查询的支持具有特殊优势。 Prometheus 为可靠性而设计,在停机时也可以通过它快速诊断问题。每个Prometheus server 都是独立的,不依赖网络存储(network storage)或其他远程服务(remote services)。当你的基础设施其他部分宕掉时你依然可以依赖它,并且你也不需配置大量的基础设施来使用它。 ## **不适合的场景** Promtheus 是准确可靠的,即使在故障情况下,你也可以查看系统可用的统计信息。如果你需要 100% 的准确,比如每一笔订单请求。Prometheus 并不是一个好的选择,因为收集到的数据可能不够详细和完整。在这个示例下,你最好使用其他系统来收集和分析交易数据,此时 Prometheus 负责监控的其余部分。