# **概覽(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 及其生態組件的架構:

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加密