官方網站:https://prometheus.io/docs/prometheus/latest/getting_started/
參考:https://www.cnblogs.com/weidongliu/p/11021622.html
一、監控概述
1、監控概述
監控是度量和管理技術系統的工具和系統。監控提供從系統和應用程序生成的指標到業務價值的轉換。監控指標轉換為用戶體驗的度量,為業務和技術提供反饋,指示業務的工作狀態以及持續改進。
良好的監控系統應該:從上而下的監控、協助故障診斷、基礎架構應用程序開發和業務人員的信息源。
監控機制
應用程序監控的兩種方法:探測、自省
執行監控的兩種方法:推、拉
監控數據的主要的兩種類型:Metrics、logs
2、prometheus介紹
Prometheus有GO語言編寫而成,采用Pull方式獲取監控信息,並提供了多維度的數據模型和靈活的查詢接口。Prometheus不僅可以通過靜態文件配置監控對象,還支持自動發現機制,能夠通過Kubernetes,Consul,DNS等多種方式動態獲取監控對象。在數據采集方面,借助Go語言的高並發特性,單機Prometheus可以采集數百個節點的監控數據;在數據存儲方面,隨着本地時序數據庫的不斷優化,單機Prometheus每秒可以采集一千萬個指標,如果需要存儲大量的歷史監控數據,則還支持遠端存儲。
prometheus是為短期監視和警報需求而設計的。默認它會在本地數據庫保留15天的數據。如果需要保留更長時間的數據,可以使用第三方數據存儲,比如influxDB、OpenTSDB、Elasticsearch等。
Metric名字:時間序列的名稱通常描述收集的時間寫數據的一般性質。名稱可以包含ASCII字母、數字、下划線和冒號。例:website_visits_total網站訪問總數。
標簽(labels):以_ 為前綴的標簽名稱保留給prometheus內部使用。
二、prometheus組件組成
轉自:https://my.oschina.net/54188zz/blog/3070367
Prometheus Server
Prometheus Server是Prometheus組件中的核心部分,負責實現對監控數據的獲取,存儲以及查詢。 Prometheus Server可以通過靜態配置管理監控目標,也可以配合使用Service Discovery的方式動態管理監控目標,並從這些監控目標中獲取數據。其次Prometheus Server需要對采集到的監控數據進行存儲,Prometheus Server本身就是一個時序數據庫,將采集到的監控數據按照時間序列的方式存儲在本地磁盤當中。最后Prometheus Server對外提供了自定義的PromQL語言,實現對數據的查詢以及分析。
Prometheus Server內置的Express Browser UI,通過這個UI可以直接通過PromQL實現數據的查詢以及可視化。
Prometheus Server的聯邦集群能力可以使其從其他的Prometheus Server實例中獲取數據,因此在大規模監控的情況下,可以通過聯邦集群以及功能分區的方式對Prometheus Server進行擴展。
Exporters
Exporter將監控數據采集的端點通過HTTP服務的形式暴露給Prometheus Server,Prometheus Server通過訪問該Exporter提供的Endpoint端點,即可獲取到需要采集的監控數據。
一般來說可以將Exporter分為2類:
-
直接采集:這一類Exporter直接內置了對Prometheus監控的支持,比如cAdvisor,Kubernetes,Etcd,Gokit等,都直接內置了用於向Prometheus暴露監控數據的端點。
-
間接采集:間接采集,原有監控目標並不直接支持Prometheus,因此我們需要通過Prometheus提供的Client Library編寫該監控目標的監控采集程序。例如: Mysql Exporter,JMX Exporter,Consul Exporter等。
AlertManager
在Prometheus Server中支持基於PromQL創建告警規則,如果滿足PromQL定義的規則,則會產生一條告警,而告警的后續處理流程則由AlertManager進行管理。在AlertManager中我們可以用郵件,Slack等等內置的通知方式進行集成,也可以通過Webhook自定義告警處理方式。AlertManager即Prometheus體系中的告警處理中心。
PushGateway
由於Prometheus數據采集基於Pull模型進行設計,因此在網絡環境的配置上必須要讓Prometheus Server能夠直接與Exporter進行通信。 當這種網絡需求無法直接滿足時,就可以利用PushGateway來進行中轉。可以通過PushGateway將內部網絡的監控數據主動Push到Gateway當中。而Prometheus Server則可以采用同樣Pull的方式從PushGateway中獲取到監控數據。
補充說明:Prometheus抓取數據的兩種模式 (1) push 模式(2)pull模式
push 模式 :這種模式我們可以靈活的在被監控端使用各種語言編寫數據采集腳本,通過PushGateway傳輸給Prometheus,傳輸方式為http
pull 模式 :我們直接使用采集數據客戶端xxx_exporters將數據傳輸給Prometheus,已經有很多xxx_exporters詳見官檔,同樣也是http