promehteus是一款近年來非常火熱的容器監控系統,它使用go語言開發,設計思路來源于google的borgmom(一個監控容器平台的系統)。
由前谷歌sre matt t.proudd在加入soundcloud之後,與另一位工程師julius volz合夥推出,并将其開源釋出。2016年,由google發起的原生雲基金會(cloud native computing foundation)将其納入其下,成為該基金會繼kubernetes後,第二大開源項目。
promehteus天然具有對容器的适配性,可非常友善的滿足容器的監控需求,也可用來監控傳統資源。近年來随着kubernetes容器平台的火爆,prometheus的熱度也不斷上升,大有超越老牌監控系統zabbix成為no.1的趨勢,目前已在衆多公司得到廣泛的使用。
多元度資料模型
靈活的查詢語言
不依賴分布式存儲,單個伺服器節點是自主的
通過基于http的pull方式采集時序資料
可以通過中間網關進行資料推送
通過服務發現或者靜态配置來發現目标服務對象
支援多種多樣的圖表和界面展示,比如grafana 等
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支援對告警資訊進行聚合和收斂,并通過郵箱、短信、微信、釘釘等多種告警方式發送給相關的接收人。