首頁>技術>

Prometheus:普羅米修斯,這名就有一種高大上的感覺。那麼普羅米修斯到底是幹嘛的呢?一句話總結:Prometheus 是一個開源的服務監控系統和時間序列資料庫。

抓住三個詞,即 開源,監控,時間序列資料庫。

開源: 意味著我們可以免費使用,有問題可以給社群提 Issues 尋求幫助,也可以自己提一些新功能或者 Bug 修復的 PR,共建強大的生態圈。

監控: 意味著普羅米修斯可以用於監控場景,監控我們的伺服器,監控我們的資料庫,監控我們的應用程式,它都用的上。

時間序列資料庫: 維基百科上對於時間序列的定義是‘一系列資料點按照時間順序排列’,其實就是根據時間點儲存的資訊,這些資訊是不可變的。目前在監控場景用的比較多。

對比一些老牌的監控,比如 zabbix,Prometheus 近幾年在容器監控方面表現的非常突出,人家就是幹這個事情的。對於新的監控選型,我覺得大家可以嘗試下 Prometheus。

雖然監控這個工作屬於運維這塊的,理應要有專業的運維工程師來做。我認為作為一個後端開發,也必須要懂得一些監控相關的知識和技能儲備。萬一你去了創業公司,很可能什麼工作都是你來做。

Prometheus 中的一些概念Prometheus Server

Prometheus Server 是 Prometheus 元件中的核心部分,負責實現對監控資料的獲取,儲存以及查詢。

Exporter

Exporter 將監控的資料採集起來,透過 HTTP 服務的形式暴露出去,Prometheus Server

會定時去拉取這些暴露的資料進行監控。

官方已經提供了很多的 Exporter,比如 Mysql 等。下載地址:https://prometheus.io/download/

如果是監控我們的應用程式,可以在程式中整合官方的 SDK,自己埋點暴露出需要監控的指標即可。

PushGateway

PushGateway 作為一個獨立的服務,大部分場景下我們用的是 pull 模式,也就是 Prometheus Server 去拉取 Exporter 提供的資料,如果想使用 push 模式的話,可以將資料 push 給 PushGateway,由 PushGateway 統一提供資料給 Server。

Service Discovery

服務發現是一個特別重要的功能,特別是在微服務場景下監控顯得尤為重要。如果沒有服務發現的功能,那麼每啟動一個服務就需要去修改 Prometheus 的配置檔案增加對應的配置。

有了服務發現的功能,可以動態的去發現服務資訊,無需手動修改配置。官方推薦用 Consul 作為服務發現,像我們用 Nacos 的話,目前是不支援的,還需要想辦法進行處理,比如定時拉取資訊同步到檔案中。

三劍客

Prometheus 目前的標配都是和 Grafana,AlertManage 一起使用的,三劍客。跟 ELK 是一樣的,正所謂三個臭皮匠賽過諸葛亮。

Prometheus

負責拉取監控資料,儲存。

Grafana

負責展示各種監控指標,透過圖形化的方式。

Prometheus 負責賺錢養家,Grafana 負責美貌如花。

AlertManage

負責異常告警,可以對接釘釘等多種訊息通知。

生態系統組成體驗下 Prometheus 的魅力

最近閒來無事,我也打算學習下 Prometheus。一是為了擴充自己的知識面,二也是看看能不能將其在工作中使用起來。

對於主機,資料庫相關的監控,很多公司都在雲上面,雲平臺本身就提供了很好的監控告警體系,也沒必要再用 Prometheus 去搞一套了。

其他場景也是可以使用的,比如指標監控,監控應用的一些指標。也可以用於業務指標監控,總之玩法很多,就看你怎麼玩。

自己學習體驗的話直接用 Docker 拉映象建立吧,簡單,快速,方便。

部署 Prometheus
docker run -d -p 9090:9090 -v /Users/yinjihuan/Downloads/prometheus/prometheus.yml:/etc/Prometheus/Prometheus.yml prom/prometheus

Prometheus.yml

global:  scrape_interval:     15s  external_labels:    monitor: 'codelab-monitor'scrape_configs:  - job_name: 'prometheus'    scrape_interval: 5s    static_configs:      - targets: ['localhost:9090']  - job_name: beta_node    static_configs:      - targets: ['10.111.83.8:9100']

定義了兩個任務,一個是 Prometheus 自己的監控,它本身也是一個服務,也會暴露出一些指標資訊。

一個是機器的監控任務,目標需要配置 IP+PORT,對應的機器上要裝 node_export 才行,透過 node_export 將機器的指標資料暴露,Prometheus 才能拉取到進行監控。

部署 Grafana
docker run -d -p 3000:3000 --name=grafana -v /Users/yinjihuan/Downloads/Grafana-storage:/var/lib/grafana  grafana/grafana
部署 node_export

從官網下載對應的 node_export:https://prometheus.io/download/#node_exporter

解壓後直接啟動即可,nohup ./node_exporter & 啟動,預設埠 9100。此機器 IP 就是上面 beta_node 中的 IP10.111.83.8。

配置 Grafana 圖表

訪問 localhost:3000 就是 Grafana 的主頁,然後在設定裡面建立一個數據源,指向 Prometheus 的地址。

然後匯入一個你喜歡的圖表進行關聯即可,圖表可以去https://grafana.com/grafana/dashboards?search=node進行搜尋,比如搜 node 就會展示所有 node_export 相關的圖表,每個圖表有一個編號,直接根據編號 load 即可,需要聯網。

機器監控效果

後續其他的一些操作,等我體驗後再給大家分享踩坑記錄。

9
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 距離Java開發者玩轉Serverless,到底還有多遠?