1. 程式人生 > >Prometheus 系列開篇:為什麼要學 Prometheus ?

Prometheus 系列開篇:為什麼要學 Prometheus ?

# 「Prometheus 系列開篇:為什麼要學 Prometheus ?」首發於【陳樹義】公眾號,點選跳轉到原文[https://mp.weixin.qq.com/s/HCS6X3l6nVBw_hAnd64phQ](https://mp.weixin.qq.com/s/HCS6X3l6nVBw_hAnd64phQ) 第一次接觸 Prometheus 是在去年,我工作了六年的時間點上。但現在看來,工作六年才知道 Prometheus 是有點晚了,因為 Prometheus 確實比較重要。個人感覺 Prometheus 在你 3-5 年之時就應該瞭解,並且應該掌握關於它的一整套知識,最終你應該掌握:如何從零去搭建一套業務監控系統! 說到 Prometheus,大多數人可能不太清楚它是做什麼的。即使知道它是做監控的,也不明白為什麼要做監控。這其中涉及到許多原因,我想主要有下面兩點原因。 **第一,全域性觀不足。** 許多開發同學長期在一線開發,侷限於自己開發的需求上,對整個系統不瞭解,對整個系統業務不瞭解。只有當你做了 leader 之後,你才會更關注系統的整體情況。而如果你當了 leader,你會發現業務監控系統是多麼重要!(畢竟,你也不想半夜被電話吵醒,睡眼惺忪地開啟電腦解決問題~) **第二,工作經驗欠缺。** 剛剛工作一兩年的同學,對於 Java 整個知識體系還學得不夠全面。而 Prometheus 的監控知識更多屬於進階的知識,自然會被排到更後面的位置。 除了前面說到的這兩個主要原因,其實也還有一些其他原因,例如:公司技術體系問題等等。 言歸正傳,那 Prometheus 到底是做什麼的,為什麼要學習 Prometheus 呢? ## 什麼是 Prometheus? # 「Prometheus 系列開篇:為什麼要學 Prometheus ?」首發於【陳樹義】公眾號,點選跳轉到原文[https://mp.weixin.qq.com/s/HCS6X3l6nVBw_hAnd64phQ](https://mp.weixin.qq.com/s/HCS6X3l6nVBw_hAnd64phQ) Prometheus(普羅米修斯)是古希臘的一個神明,名字的意思是「先見之明」。從它的名字可以看出,Prometheus 是做「先見之明」的監控告警用途。維基百科簡單寫了它的作用:Prometheus is a free software application used for event monitoring and alerting(Prometheus 是用來監控、報警的免費軟體)。 ![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16025990301347.jpg) [Prometheus 官網](https://prometheus.io/)則是用「From metrics to insight」(用指標洞察系統的意思)描述了 Prometheus 的用途。 ![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16025990377921.jpg) 看到這裡我們大概知道 **Prometheus 其實就是一個數據監控解決方案,它能幫你簡單快速地搭建起一套視覺化的監控系統。** 但這麼說還是有點抽象,下面我舉幾個簡單的例子,幫助大家理解 Prometheus 究竟能做什麼? 對於運維人員來說,他們需要監控機器的 CPU、記憶體、硬碟的使用情況,以此來保證執行在機器上的應用的穩定性。 對於研發人員來說,他們關注某個異常指標的變化情況,從而來保證業務的穩定執行。 對於產品或運營來說,他們更關心產品層面的事情,例如:某個活動參加人數的增長情況,活動積分的發放情況。 ![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16025990460499.jpg) 對於上面說到的這些功能,Prometheus 都能夠實現。Prometheus 能根據這些收集的資料實現告警功能。 例如:運維希望在 CPU 達到 80% 的時候給值班的運維人員傳送郵件,產品希望活動積分發放數量超過 10 萬的時候傳送告警郵件。這些都可以通過 Prometheus 實現。 除了資料收集、告警功能之外,Prometheus 還有很多強大的功能,例如:強大的 ProQL 查詢、許多客戶端庫等。 ![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16025990565513.jpg) 因為 Prometheus 功能強大、構建成本低,所以現在越來越多的公司都使用 Prometheus 作為其資料監控的解決方案。 ![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16025990657193.jpg) ## 為什麼要學Prometheus? 對於一直在一線開發的同學而言,你可能只需要把自己的需求做好、沒有 bug、順利上線,那麼你的任務就完成了。但是如果你是一個 leader,那麼你是對整個業務系統負責,這個業務系統出了什麼問題,都是你的責任。這個時候,你需要時刻關注這個系統是否正常執行。 對於流量不是很大的系統來說,出現幾分鐘的故障可能造成不了多少損失。但是對於像淘寶、美團、位元組跳動這樣的巨無霸來說,宕機 1 分鐘損失的金額可能就是幾百萬! 所以弄清楚此時此刻系統的執行是否正常?各項業務指標是否超過閾值?這些問題是每個經驗豐富的研發人員所需要關注的事情! 那麼如何監控你的系統?如何得知系統目前是正常還是異常?甚至如何預知未來一段時間系統可能出問題?**Prometheus 正是這麼一套資料監控解決方案。它能讓你隨時掌控系統的執行狀態,快速定位出現問題的位置,快速排除故障。** 只要按照 Prometheus 的方式來做,按部就班地學習和部署,我們就可以監控機器的 CPU、記憶體等資源的使用情況、Java 應用的執行情況以及業務各項指標的實時資料。 當然有一些公司會自己使用 Kafaka 收集監控資料,並且儲存在 Hive 中,最終通過頁面聚合資料,同樣能夠實現資料監控。但是這種解決方案需要開發人員掌握 Hive + Hadoop 等大資料框架,並且在前端展示上比較侷限。 而通過 Prometheus 則可以直接部署使用,並且其與 Grafana 配套使用可以呈現出非常多樣化的圖表配置。**對於中小規模的團隊來說,可以極大地減少成本,加快研發速度。** 而對於個人來講,**掌握 Prometheus 可以增加你當 leader 的競爭力。** 畢竟如果一個研發對自己的系統執行狀況都不瞭解,那麼他怎麼做 leader,怎麼帶領一個團隊往前衝呢? # 「Prometheus 系列開篇:為什麼要學 Prometheus ?」首發於【陳樹義】公眾號,點選跳轉到原文[https://mp.weixin.qq.com/s/HCS6X3l6nVBw_hAnd64phQ](https://mp.weixin.qq.com/s/HCS6X3l6nVBw_hAnd64phQ) ## 總結 對於工作多年的研發人員,對自己負責的系統必須瞭然於胸。而要做到了然於胸,單靠一味的自信是不夠的,必須藉助一套功能強大的業務監控系統。Prometheus 作為這其中的翹楚,憑藉其完善的功能、海量資料支援,可以讓我們較低成本地實現業務監控。 ## 參考資料 * [Prometheus - Monitoring system & time series database](https://prometheus.io/) * [普羅米修斯 - 維基百科,自由的百科全書](https://zh.wikipedia.org/wiki/%E6%99%AE%E7%BD%97%E7%B1%B3%E4%BF%AE%E6%96%AF)