天天看點

Prometheus監控運維實戰一: Prometheus介紹

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監控運維實戰一: Prometheus介紹

  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支援對告警資訊進行聚合和收斂,并通過郵箱、短信、微信、釘釘等多種告警方式發送給相關的接收人。