Promehteus是一款近年來很是火熱的容器監控系統,它使用go語言開發,設計思路來源於Google的Borgmom(一個監控容器平臺的系統)。node
由前谷歌SRE Matt T.Proudd在加入SoundCloud以後,與另外一位工程師Julius Volz合夥推出,並將其開源發佈。2016年,由Google發起的原生雲基金會(Cloud Native Computing Foundation)將其歸入其下,成爲該基金會繼Kubernetes後,第二大開源項目。mysql
Promehteus自然具備對容器的適配性,可很是方便的知足容器的監控需求,也可用來監控傳統資源。近年來隨着kubernetes容器平臺的火爆,Prometheus的熱度也不斷上升,大有超越老牌監控系統Zabbix成爲No.1的趨勢,目前已在衆多公司獲得普遍的使用。web
多維度數據模型sql
靈活的查詢語言數據庫
不依賴分佈式存儲,單個服務器節點是自主的服務器
經過基於HTTP的pull方式採集時序數據微信
能夠經過中間網關進行數據推送架構
經過服務發現或者靜態配置來發現目標服務對象分佈式
支持多種多樣的圖表和界面展現,好比Grafana 等ide
Prmoetheus Server: 服務端,用於處理和存儲監控數據
Exporter: 監控客戶端,用於收集各種監控數據,不一樣的監控需求由不一樣的exporter處理,如node-exporter、mysql-exporter、blackbox-exporter等。
Pushgateway:在不支持pull 拉取監控數據的場景中,可經過部署Pushgateway的方式,由監控源主動上報到Promtehus。
Alertmanager: 獨立組件,用於處理告警信息。
Web-UI:Pometheus自帶的web界面,可進行監控數據的展現與查詢。
其餘支持工具:Promethues項目自己提供的組件及豐富的開源工具和套件。
官方架構圖:
Prometheus可經過多種方式來發現要監控的資源列表,包括:
用戶提供的靜態資源列表
基於文件的發現
自動發現。例如,使用DNS SRV記錄來生成列表或經過查詢Consul等配置中心獲取信息.
Prometheus根據配置的Job定時去拉取各個監控節點的數據,任何組件只要提供對應的HTTP接口就能夠接入監控,不須要任何SDK或其餘集成過程,很是適合虛擬化環境的監控,如Kubernetes、Docker等。
默認的拉取方式爲pull,也可使用pushgateway提供的push 方式獲取各個監控節點的數據,並將獲取到的數據存入TSDB(一種時序型數據庫)。
Prometheus提供一套內置的PromQL語言,其自帶的Web-UI查詢數據支持按條件表達式的方式,查詢相關的監控數據。
Prometheus自帶的Web-UI可支持圖表展現 ,但功能及界面較簡陋,常規方案是接入到grafana進行展現管理。
Promehteus Server沒有內置告警工具,程序基於配置的rules發送告警信息到Alertmanager,由Alertmanager對告警信息進行統一處理。Alertmanger支持對告警信息進行聚合和收斂,並經過郵箱、短信、微信、釘釘等多種告警方式發送給相關的接收人。