咱們能夠簡單的理解爲.一個優化後用來處理時間序列數據的軟件,而且數據中的數組是由時間進行索引的.node
所以很是適用於用來存儲和處理監控數據。mysql
Prometheus是SoundCloud發佈的一個開源的系統監控和報警工具。自2012成立以來,許多公司和組織都採用了普羅米修斯,該項目擁有一個很是活躍的開發人員和用戶社區。它如今是一個獨立的開源項目,而且獨立於任何公司。爲了強調這一點,並明確項目的治理結構,Prometheus在2016年加入了Cloud Native Computing Foundation,做爲在 kubernetes以後的第二個由基金會主持的項目。git
Prometheus是一個強大的監控平臺,提供了監控數據蒐集、存儲、處理、可視化和告警一套完整的解決方案。github
官方網站:https://prometheus.iogolang
prometheus主要的特性:web
prometheus生態系統由多個組件組成,其中許可能是可選的:sql
Most Prometheus components are written in Go, making them easy to build and deploy as static binaries.數據庫
從這個架構圖,也能夠看出 Prometheus 的主要模塊包含, prometheus server, exporters, pushgateway, PromQL, Alertmanager, WebUI 等。下面我就簡單介紹各個組件實現的功能:數組
1. prometheus server: 按期從靜態配置的 targets 或者服務發現(主要是DNS、consul、k8s、mesos等)的 targets 拉取數據。緩存
2. exporters:負責向prometheus server作數據彙報的程序統。而不一樣的數據彙報由不一樣的exporters實現,好比監控主機有node-exporters,mysql有MySQL server exporter,更多請參考連接。
3. pushgateway:主要使用場景爲:
Prometheus 採用 pull 模式,可能因爲不在一個子網或者防火牆緣由,致使 Prometheus 沒法直接拉取各個 target 數據。在監控業務數據的時候,須要將不一樣數據彙總, 由 Prometheus 統一收集。
總結:實現相似於zabbix-proxy功能;
4. Alertmanager:實現prometheus的告警功能。
5. webui:主要經過grafana來實現webui展現。
Prometheus Server 自己也將以容器的方式運行。
Exporter
Prometheus 有不少現成的 Exporter,完整列表請參考 https://prometheus.io/docs/instrumenting/exporters/
咱們將使用:
Node Exporter,負責收集 host 硬件和操做系統數據。它將以容器方式運行在全部 host 上。
cAdvisor,負責收集容器數據。它將以容器方式運行在全部 host 上。