欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 用Prometheus搭建實時監(jiān)控系統(tǒng)過程詳解

 更新時間:2020年07月27日 11:36:45   作者:鉑賽東  
這篇文章主要介紹了用Prometheus搭建實時監(jiān)控系統(tǒng)過程詳解之上帝之火,普羅米修斯的崛起,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

上帝之火

本系列講述的是開源實時監(jiān)控告警解決方案Prometheus,這個單詞很牛逼。每次我都能聯(lián)想到帶來上帝之火的希臘之神,普羅米修斯。而這個開源的logo也是火,個人挺喜歡這個logo的設(shè)計。

本系列著重介紹Prometheus以及如何用它和其周邊的生態(tài)來搭建一套屬于自己的實時監(jiān)控告警平臺。

本系列受眾對象為初次接觸Prometheus的用戶,大神勿噴,偏重于操作和實戰(zhàn),但是重要的概念也會精煉出提及下。系列主要分為以下幾塊

  • Prometheus各個概念介紹和搭建,如何抓取數(shù)據(jù)(本次分享內(nèi)容)
  • 如何推送數(shù)據(jù)至Prometheus,推送和拉取分別用于什么樣的場景
  • Prometheus數(shù)據(jù)的結(jié)構(gòu)以及查詢語言PromQL的使用
  • Java應(yīng)用如何和Prometheus集成,如何啟用服務(wù)發(fā)現(xiàn),如果自定義業(yè)務(wù)指標(biāo)
  • Prometheus如何和Grafana可視化套件進(jìn)行集成和設(shè)置告警
  • 教你如何手寫一個集成了監(jiān)控Dubbo各個指標(biāo)的java套件
  • 實際案例分享,如何做各個業(yè)務(wù)端和系統(tǒng)端的監(jiān)控大盤

Prometheus以及時序數(shù)據(jù)庫的基本概念

Prometheus現(xiàn)在在Github有3w多的star,基本上過萬星的開源工具,可以認(rèn)為是社區(qū)里絕對的主流,社區(qū)也相當(dāng)活躍,可以有大量的經(jīng)驗可以借鑒。在企業(yè)級系統(tǒng)中,可以放心的使用。

Prometheus 是由 SoundCloud 開發(fā)的開源監(jiān)控報警系統(tǒng)和時序列數(shù)據(jù)庫。從字面上理解,Prometheus 由兩個部分組成,一個是監(jiān)控報警系統(tǒng),另一個是自帶的時序數(shù)據(jù)庫(TSDB)。

關(guān)于時序數(shù)據(jù)庫(TSDB)這里要說下,我們可以簡單的理解為一個優(yōu)化后用來處理時間序列數(shù)據(jù)的數(shù)據(jù)庫,并且數(shù)據(jù)中的數(shù)組是由時間進(jìn)行索引的。相比于傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)庫主要有幾個好處:

  • 時間序列數(shù)據(jù)專注于海量數(shù)據(jù)的快速攝取。時序數(shù)據(jù)庫視數(shù)據(jù)的每一次變化為一條新的數(shù)據(jù),從而可以去衡量變化:分析過去的變化,監(jiān)測現(xiàn)在的變化,以及預(yù)測未來將如何變化,傳統(tǒng)結(jié)構(gòu)化數(shù)據(jù)在數(shù)據(jù)量小的時候能做到,在數(shù)據(jù)量大的時候就需要花費(fèi)大量的成本。
  • 高精度數(shù)據(jù)保存時間較短,中等或更低精度的摘要數(shù)據(jù)保留時間較長。對于實時監(jiān)控來說,不一定需要每一個精準(zhǔn)的數(shù)據(jù),而是固定時間段時間數(shù)據(jù)的摘要。這對于結(jié)構(gòu)化數(shù)據(jù)庫來說就意味著要進(jìn)行篩選,在保證大量的寫入同時還要進(jìn)行帥選,這是一個超出結(jié)構(gòu)化數(shù)據(jù)庫設(shè)計來處理的工作量。
  • 數(shù)據(jù)庫本身必須連續(xù)計算來自高精度數(shù)據(jù)的摘要以進(jìn)行長期存儲。這些計算既包括一些簡單的聚合,同時也有一些復(fù)雜計算。傳統(tǒng)數(shù)據(jù)庫無法承受那么大量的計算。因為必須去實時統(tǒng)計這些聚合和復(fù)雜運(yùn)算。

開始搭建Prometheus

https://prometheus.io/

在Prometheue官網(wǎng)Download標(biāo)簽頁進(jìn)行下載,這里以linux版本為例:

下載好之后,解壓,運(yùn)行

nohup /data/prometheus/prometheus --web.listen-address=0.0.0.0:9090 --config.file=/data/prometheus/prometheus.yml --web.enable-lifecycle --storage.tsdb.path=/data/prometheus/data --storage.tsdb.retention.time=15d &

這樣,就簡單的搭建起來Prometheus服務(wù)端了。這時候,我們可以在web上訪問

http://127.0.0.1:9090

就可以訪問到管理頁面

界面上幾個標(biāo)簽說明下:

Alert:用來配置告警規(guī)則。之后我們會用Grafana自身的告警界面配置來代替這個。

Graph:用來運(yùn)行PromQL語句的一個控制臺,并且可以把運(yùn)行出來的語句用用圖形化進(jìn)行展示,此塊我們后面章節(jié)會介紹到。

Status:包含系統(tǒng)信息,系統(tǒng)狀態(tài),配置信息,目標(biāo)節(jié)點的狀態(tài),服務(wù)發(fā)現(xiàn)狀態(tài)等元信息的查看。

Prometheus整體架構(gòu)以及生態(tài)

這張圖是官方的整體架構(gòu)圖。米黃色部分是Prometheus自己的組件,綠色的為第三方的中間件和應(yīng)用。

簡單介紹下整個Prometheus的生態(tài)架構(gòu):

  1. Prometheus獲取數(shù)據(jù)的方式只有一種,就是scrape,也稱作pull,意為拉取。Prometheus每隔一段時間會從目標(biāo)(target)這里以Http協(xié)議拉取指標(biāo)(metrics),這些目標(biāo)可以是應(yīng)用,也可以是代理,緩存中間件,數(shù)據(jù)庫等等一些中間件。
  2. 拉取出來的數(shù)據(jù)Prometheus會存到自己的TSDB數(shù)據(jù)庫。自己的WebUI控制臺以及Grafana可以對其數(shù)據(jù)進(jìn)行時間范圍內(nèi)的不斷查詢,繪制成實時圖表工展現(xiàn)。
  3. Prometheus 支持例如zookeeper,consul之類的服務(wù)發(fā)現(xiàn)中間件,用以對目標(biāo)(target)的自動發(fā)現(xiàn)。而不用一個個去配置target了。
  4. alertManager組件支持自定義告警規(guī)則,告警渠道也支持很多種

拉取數(shù)據(jù)

Prometheus主要是通過拉取的方式獲取數(shù)據(jù),說簡單點,就是每隔固定時間去訪問配置的target,target就是一個獲取數(shù)據(jù)的url。

現(xiàn)在我們就來模擬一個數(shù)據(jù)源,并讓prometheus去拉取。

新建一個springboot的web項目,pom依賴加上

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<dependency>
 <groupId>io.micrometer</groupId>
 <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

application.properties里加上

server.port=8080
anagement.endpoints.web.exposure.include=*

啟動完畢后,我們就可以在頁面上訪問如下地址:

http://127.0.0.1:8080/actuator/prometheus

得到如下數(shù)據(jù):

關(guān)于actuator如何監(jiān)控應(yīng)用指標(biāo)以及自定義指標(biāo)我會在之后的系列里單獨分析,這里只要理解成我們啟動了一個服務(wù),提供了一個url能列出一些kv形式的指標(biāo)就行了。

例如jvm_memory_max_bytes{area="heap",id="PS Old Gen",} 2.863661056E9這個指標(biāo),前面是key,后面為value。

其中key上又分key name和key labels,key name就是``jvm_memory_max_bytes,key labels有2個。

這個指標(biāo)提供了jvm的最大內(nèi)存,其中area為heap,表明這是堆內(nèi)存區(qū)域,id為PS Old Gen,表明這是老年代。綜合起來看,這個指標(biāo)就是jvm中老年代的最大值。數(shù)值類型是byte,換算下來大概是286M左右。

我們有指標(biāo)的數(shù)據(jù)源后,再在prometheus 的根目錄下編輯prometheus.yml文件,添加如下配置:

- job_name: 'test'
 scrape_interval: 5s
 metrics_path: '/actuator/prometheus'
 static_configs:
 - targets: ['localhost:8080']
  labels:
   instance: demo

這個配置表示:prometheue每隔5秒鐘從http://localhost:8080/actuator/prometheus這個url拉取指標(biāo),并且為每個指標(biāo)添加instance這個標(biāo)簽。

添加完畢后,重啟prometheus。進(jìn)入web頁面中的targets頁面。如果前面步驟沒問題的話,會看到:

狀態(tài)為UP表明prometheue已經(jīng)成功獲取到了這個target 的數(shù)據(jù)。

在查詢頁面上輸入剛才那個指標(biāo)的key:

這里每個value都是prometheus最近一次抓取的數(shù)據(jù)。你每執(zhí)行一次,數(shù)據(jù)都會變。

這里為什么會有多條數(shù)據(jù)呢,是因為每個指標(biāo)他們的標(biāo)簽不一樣。完全一樣的標(biāo)簽會被歸為一種指標(biāo)。

點Graph這標(biāo)簽可以看到在時間序列下,某個指標(biāo)的變化趨勢

上圖展示了系統(tǒng)cpu指標(biāo)的變化圖。

最后

如今微服務(wù)盛行,小規(guī)模的企業(yè)的微服務(wù)節(jié)點也快上百了,Prometheus生態(tài)能夠用最小的代價使所有的數(shù)據(jù)實時可視化。這對于開發(fā)和運(yùn)維來說,意義在于,所有的數(shù)據(jù)不再是黑盒了,至少我個人覺得所有的數(shù)據(jù)能夠被觀測和分析,是具有安全感的。

這個系列旨在利用實戰(zhàn)操作教你一步步搭建自己系統(tǒng)和業(yè)務(wù)監(jiān)控大盤。后面會繼續(xù)更新。下一個章節(jié)將分析:搭建pushgateway去push數(shù)據(jù)到prometheus,以及2種不同的數(shù)據(jù)獲取方式分別用于什么樣的場景。

到此這篇關(guān)于用Prometheus搭建實時監(jiān)控系統(tǒng)過程詳解之上帝之火,普羅米修斯的崛起的文章就介紹到這了,更多相關(guān)用Prometheus搭建實時監(jiān)控系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實現(xiàn)文件和base64流的相互轉(zhuǎn)換功能示例

    Java實現(xiàn)文件和base64流的相互轉(zhuǎn)換功能示例

    這篇文章主要介紹了Java實現(xiàn)文件和base64流的相互轉(zhuǎn)換功能,涉及Java文件讀取及base64 轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • java有界類型參數(shù)的實例用法

    java有界類型參數(shù)的實例用法

    小編給大家整理了一篇關(guān)于java有界類型參數(shù)的使用的相關(guān)文章及擴(kuò)展實例內(nèi)容,有需要的朋友們可以學(xué)習(xí)參考下。
    2021-07-07
  • 詳解SpringBoot中的參數(shù)校驗(項目實戰(zhàn))

    詳解SpringBoot中的參數(shù)校驗(項目實戰(zhàn))

    這篇文章主要介紹了SpringBoot中的參數(shù)校驗,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • 深入淺析SpringBoot自動配置原理

    深入淺析SpringBoot自動配置原理

    本文給大家介紹SpringBoot自動配置原理解析,springboot使用的是2.3.1版本源碼,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-10-10
  • Java實現(xiàn)簡易圖書借閱系統(tǒng)

    Java實現(xiàn)簡易圖書借閱系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)簡易圖書借閱系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Swing常用組件之多行文本區(qū)JTextArea

    Swing常用組件之多行文本區(qū)JTextArea

    這篇文章主要為大家詳細(xì)介紹了Swing常用組件之多行文本區(qū)JTextArea,感興趣的朋友可以參考一下
    2016-05-05
  • Java LinkedHashSet集合的底層原理和TreeSet集合

    Java LinkedHashSet集合的底層原理和TreeSet集合

    LinkedHashSet保證元素有序且唯一,底層通過雙鏈表實現(xiàn),TreeSet元素不重復(fù)且可排序,底層使用紅黑樹實現(xiàn)排序,自定義類型排序可通過實現(xiàn)Comparable接口或提供Comparator來定義排序規(guī)則,適用于需要大量元素快速檢索的場景
    2024-10-10
  • Dubbo架構(gòu)整體設(shè)計詳解

    Dubbo架構(gòu)整體設(shè)計詳解

    Dubbo是一款高性能、輕量級的開源Java RPC框架,它提供了三大核心能力:面向接口的遠(yuǎn)程方法調(diào)用,智能容錯和負(fù)載均衡,以及服務(wù)自動注冊和發(fā)現(xiàn),本文將從 Dubbo 整體架構(gòu)的視角出發(fā),帶你從全局俯瞰 Dubbo 的架構(gòu)設(shè)計,感興趣的同學(xué)可以參考一下
    2023-04-04
  • Spring使用支付寶掃碼支付

    Spring使用支付寶掃碼支付

    這篇文章主要為大家詳細(xì)介紹了Spring使用支付寶掃碼支付的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Java實現(xiàn)斷點下載功能的示例代碼

    Java實現(xiàn)斷點下載功能的示例代碼

    當(dāng)下載一個很大的文件時,如果下載到一半暫停,如果繼續(xù)下載呢?斷點下載就是解決這個問題的。本文將用Java語言實現(xiàn)斷點下載,需要的可以參考一下
    2022-05-05

最新評論