我現在目前的讀者都肯定通過prometheus這個監控吧,那么它到底是什么呢? prometheus是一個基于時間序列(time_series)的監控軟件,它是由soundCloud
開源監控告警解決方案,從2012年開始編寫代碼,再到2015年github上開源,已經很多大公司使用,2016年prometheus成為繼kubernetes后,第二個CNCF(cloud native Computing Foundation云原生計算基金會)的成員。2017年底發布了基于全新存儲層的2.0版本,能更好地與容器平臺、云平臺配合,并同時支持告警。
下面這張圖是官方的架構圖
從上圖中我們也能看出來prometheus的主要包含的模塊,pushgateway,exporters,retrieval,TSDB(存儲)HTTP,PromeQl,Alertmanager。
他的大致邏輯是這樣的:
1,prometheus會定期從靜態配置的targets或者服務發現的targets中向部署在被監控端的服務器上請求exporters來獲取數據,或者由客戶端通過定時任務定期向pushgateway發送數據,然后有pushgateway向prometheus發送數據。
2,當新的數據大于配置內存緩存區的時候,prometheus會將數據持久化到磁盤,(如果使用remote storage將持久到云端)
3,prometheus可以配合grafana通過特定的表達是來獲取我們想要的監控圖形
4,prometheus可以配置rules(規則),然后定時查詢數據,當出發告警條件的時候,會通知alertmanager推送到配置的告警信息上去
4,alertmanager收到告警信息的時候,可以根據配置,聚合,去重,降噪最后發送警告
1,易于管理
prometheus核心部分只有一個單獨的用golang編寫的二進制文件,不存在任何的第三方依賴(數據庫,緩存等)。唯一需要做的就是本地磁盤和內存,所以他可以運行在各種平臺。
prometheus是基于pull和push模型的架構方式,在任何地方搭建我們的監控系統,對于一些復雜的情況,還可以使用prometheus服務發現(server Discovery)的能力動態管理監控目標。
2,監控服務的內部運行狀態
prometheus鼓勵用戶監控服務的內部狀態,基于prometheus豐富的client庫,用戶可以輕松的在應用程序中添加的對prometheus的支持,從而讓用戶可以獲取服務和應用內部真正的運行狀態。
3,強大的數據模型
所有采集的監控數據均以指標(metric)的形式保存在內置的時間序列數據庫當中(TSDB)。所有的樣本除來基本的指標名稱以外,還包含一組用于描述該樣本特征的標簽。
4,強大的查詢語言PromQL
prometheus內置來一個強大的數據查詢語言promQL,通過PromQL可以實現對監控數據的查詢/聚合。同時PromeQL也被應用于數據可視化(grafana)以及告警中。
5,高效
對于監控系統而言,大量的監控任務必然導致有大量的數據產生。而Prometheus可以高效地處理這些數據,對于單一Prometheus Server實例而言它可以處理:
6,可擴展性
Prometheus是如此簡單,因此你可以在每個數據中心、每個團隊運行獨立的Prometheus Sevrer。Prometheus對于聯邦集群的支持,可以讓多個Prometheus實例產生一個邏輯集群,當單實例Prometheus Server處理的任務量過大時,通過使用功能分區(sharding)+聯邦集群(federation)可以對其進行擴展。
7,易于集成
因為prometheus采用的是http的協議來進行通信獲取數據的,所以所有語言只要支持http協議都可以被當作exporters來使用
8,可視化
prometheus配合grafana制定精美的監控圖表
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。