Prometheus監控系列之一:Prometheus監控入門

    完善的監控流程體系是一個公司非常重要的部分。接下來會根據下圖進行解釋監控流程中的部分

1、監控系統設計(運維架構師):

    這部分是由運維架構師進行設計,設計部分主要包括如下內容:

  • 評估系統的業務流程、業務種類、架構體系

    各個企業的產品不同、業務方向不同、程序代碼不同、系統架構更不同,對各個地方細節需要有一定程度的認知。

  • 分類出所需的監控大分類

    一般可以分爲:業務級別監控系統級別監控網絡監控程序代碼監控日誌監控用戶行爲分析監控以及其他種類監控。如:

  1. 業務監控    包含用戶訪問QPS、DAU日活、訪問狀態(http code)、業務接口(登陸,註冊,聊天,留言,上傳,搜索等)、產品轉化率等;
  2. 系統監控    CPU/內存/磁盤/IO/TCP鏈接/流量等(zabbix/Prometheus);
  3. 網絡監控    交換機、路由器、防火牆、VPN;
  4. 日誌監控    監控的重頭戲(Splunk、ELK),往往單獨設計,全部種類的日誌都需要採集
  5. 程序監控    需要與開發配合,代碼中嵌入接口,直接獲取數據或者特質的日誌格式(json)

 

2、監控系統搭建

  • 單點服務器的搭建(Prometheus)
  • 單點客戶端的部署
  • 單點客戶端服務器測試
  • 採集程序單點部署
  • 採集程序批量部署
  • 監控服務端HA/Cloud(自己定製)
  • 監控數據圖形化搭建(Grafana)
  • 報警系統測試(Pagerduty)
  • 報警規則測試
  • 監控+報警聯合測試
  • 正式上線監控

 

3、數據採集編寫

    可選用腳本作爲數據採集,如:shell/python/go等。作爲監控數據採集,首推shell/python

   數據採集的形式分類:

  • 一次性採集:使用比較簡單的shell    ./monitor.sh +crontab的形式 按10秒  30秒 一分鐘這樣的頻率去單詞采集

    優勢:穩定性好,不容易出現各種錯誤和性能瓶頸,且開發邏輯簡單 實現快速

    劣勢:實現不夠智能

  • 後臺式採集:  採集程序以守護進程運行在Linux後臺,持續不斷的採集數據;Prometheus exporter例如python/go開發的daemon程序,後臺持續不斷的採集

    優勢:數據準確度高,採集密度驚喜,管理方便

    劣勢:如果開發不夠仔細,可能會出現內存泄漏,殭屍進程,性能瓶頸等問題,且開發週期時間長

  • 橋接式採集:  本身以後臺進程運行,但是採集不能獨立,依然跟服務器關聯,以橋接方式收集採集數據

 

4、監控穩定測試

   不管是一次性採集,還是後臺採集,只要實在Linux上運行的定西都會多多少少對系統產生一定的影響。穩定性測試就是通過一段時間的單點部署觀察,對線上有沒有任何影響。

 

5、監控自動化

     監控客戶端的批量部署,監控服務端的HA再安裝,監控項目的修改,監控項目的監控集羣變化。這些地方需要大量的人工。這時,自動化引入會很大程度上縮短對監控系統的維護成本。如:Puppet(配置文件部署)、Jenkins(CI持續集成部署)、CMDB(運維自動化的最高資源管理平臺和理念)等。

 

6、監控圖形化工作

        採集的數據和準備好的監控算法,最終需要一個好的圖形展示,才能發揮最好的作用。監控的設計搭建需要大量的技術知識,但是對於一個觀察者來說,往往不需要多少技術,只要能看懂圖就好(老闆想看看當前用戶訪問量情況,想看看整體CPU高不高)

 

Prometheus是什麼?

Prometheus是最初在SoundCloud上構建的開源系統監視和警報工具包 。自2012年成立以來,許多公司和組織都採用了Prometheus,該項目擁有非常活躍的開發人員和用戶社區。現在,它是一個獨立的開源項目,並且獨立於任何公司進行維護。爲了強調這一點並闡明項目的治理結構,Prometheus 於2016年加入了 Cloud Native Computing Foundation,這是繼Kubernetes之後的第二個託管項目。

Prometheus優勢:

  • 基於time series時間序列模型(數字,數學)

    時間序列(time series x,y)是一系列有序的數據。通常是等時間間隔的採樣數據。

  • 基於K/V數據模型

    key/value鍵值  {disk_size: 80},最大的好處是數據格式簡單、速度快、易維護開發。

  • 採樣數據的查詢

     完全基於數學運算,而不是其他的表達式,並且提供專有的查詢輸入console。所有的查詢都是基於數學運算公式的,例如:(增量(A)+增量(B))/總增量(C)>固定百分比

  • 採用http pull/push兩種對應的數據採集傳輸方式

    所有的數據採集,都是基本採用HTTP,而且分爲pull和push拉和推兩種方式去寫採集程序,非常方便。

  • 開源,大量的社區成品插件

   https://prometheus.io, 很多Prometheus社區開發的插件已經非常強大和完善。如果公司對監控要求不是特別高的話,默認的幾個成品插件就已經可以夠用的了。

  • push方法非常靈活
  • 本身自帶圖形調試

      Prometheus本身自帶了現成的圖形成型界面,雖然最終肯定不能和grafana效果相比,但是這種自帶圖形形成圖可以大大幫助運維做測試。

  • 精細的數據採樣

    大多數市面上的開源監控,採樣也就能精確到半分鐘或一分鐘的程度,但是Prometheus理論上可以達到秒採集,而且可以自行定製頻率(不過強大的同時,不太建議細緻到這個程度,因爲會產生大量的數據)。

 

 

Prometheus劣勢:

但是還有一些不足,需要加以改進

  • 不支持集羣化(這個是當前最迫切的需求)
  • 被監控集羣過大後,本身性能有一定瓶頸(如果有集羣,就可以解決這個問題)
  • 偶爾發生數據丟失(這個問題在2.0之前會偶爾發生幾次,2.0之後已經徹底解決)
  • 中文支持不好,中文資料少

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章