# **概览(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 负责监控的其余部分。
- 介绍(Introduction)
- 概览(Overview)
- First steps
- 方案比较
- FAQ
- Roadmap
- Media
- 术语表(Glossary)
- 概念(Concepts)
- 数据模型(Data model)
- 指标类型(Metric types)
- 作业和实例(Jobs and instances)
- Prometheus
- Getting started
- 安装
- 配置
- 配置
- 记录规则(Recording Rules)
- 报警规则(Alerting Rules)
- 模版示例
- 模版参考
- Rules的单元测试
- Querying
- Basics
- Operators
- Functions
- Examples
- HTTP API
- 存储(Storage)
- 联邦(Federation)
- 管理API(Management API)
- 迁移(Migration)
- API稳定性
- 可视化(Virsualization)
- Instrumenting
- 客户端库
- 开发客户端库
- 推送metrics
- exporters & 集成
- 开发exporters
- 格式一览(Exposition formats)
- Operating
- 安全
- 集成
- 报警(Alerting)
- 报警概览
- Alertmanager
- 配置
- 客户端
- 通知模版参考
- 通知模版样例
- 管理API
- Best Practices
- Metric & label 名称
- Instrumentation
- console & dashboard
- Histogram & summary
- 报警
- 记录规则(Recording rules)
- 何时使用Pushgateway
- Remote write tuning
- Guides
- 使用cAdvisor监控Docker容器
- 使用基于文件的服务发现来发现抓取target
- Basic auth
- 使用node exporter来监控Linux宿主机metrics
- Instrumenting一个Go应用程序
- TLS加密