最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

上帝之火

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

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

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

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

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

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

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

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

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

開(kāi)始搭建Prometheus

https://prometheus.io/

在Prometheue官網(wǎng)Download標(biāo)簽頁(yè)進(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 &

這樣,就簡(jiǎn)單的搭建起來(lái)Prometheus服務(wù)端了。這時(shí)候,我們可以在web上訪問(wèn)

http://127.0.0.1:9090

就可以訪問(wèn)到管理頁(yè)面

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

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

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

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

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

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

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

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

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

Prometheus主要是通過(guò)拉取的方式獲取數(shù)據(jù),說(shuō)簡(jiǎn)單點(diǎn),就是每隔固定時(shí)間去訪問(wèn)配置的target,target就是一個(gè)獲取數(shù)據(jù)的url。

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

新建一個(gè)springboot的web項(xiàng)目,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=*

啟動(dòng)完畢后,我們就可以在頁(yè)面上訪問(wèn)如下地址:

http://127.0.0.1:8080/actuator/prometheus

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

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

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

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

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

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

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

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

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

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

這里為什么會(huì)有多條數(shù)據(jù)呢,是因?yàn)槊總€(gè)指標(biāo)他們的標(biāo)簽不一樣。完全一樣的標(biāo)簽會(huì)被歸為一種指標(biāo)。

點(diǎn)Graph這標(biāo)簽可以看到在時(shí)間序列下,某個(gè)指標(biāo)的變化趨勢(shì)

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

最后

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

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

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

相關(guān)文章

  • 基于Eclipse 的JSP/Servlet的開(kāi)發(fā)環(huán)境的搭建(圖文)

    基于Eclipse 的JSP/Servlet的開(kāi)發(fā)環(huán)境的搭建(圖文)

    本文將會(huì)詳細(xì)地展示如何搭建JSP的開(kāi)發(fā)環(huán)境。本次教程使用的是最新版的Eclipse 2018-09編輯器和最新版的Apache Tomcat v9.0,步驟詳細(xì),內(nèi)容詳盡,適合零基礎(chǔ)學(xué)者作為學(xué)習(xí)參考
    2018-12-12
  • 在java中用Scanner類讀入單個(gè)字符的方法

    在java中用Scanner類讀入單個(gè)字符的方法

    今天小編就為大家分享一篇在java中用Scanner類讀入單個(gè)字符的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • 一文徹底弄懂Java中MultipartFile接口和File類

    一文徹底弄懂Java中MultipartFile接口和File類

    MultipartFile是一個(gè)接口,我們可以理解為是Spring?給我們綁定的一個(gè)在使用文件上傳等時(shí)簡(jiǎn)便實(shí)現(xiàn)的口子,這篇文章主要給大家介紹了關(guān)于如何通過(guò)一文徹底弄懂Java中MultipartFile接口和File類的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • 分享Java死鎖的4種排查工具

    分享Java死鎖的4種排查工具

    這篇文章主要介紹了分享Java死鎖的4種排查工具,死鎖指的是兩個(gè)或兩個(gè)以上的運(yùn)算單元,都在等待對(duì)方停止執(zhí)行,以取得系統(tǒng)資源,但是沒(méi)有一方提前退出,就稱為死鎖,下文更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-05-05
  • SpringBoot實(shí)現(xiàn)接口校驗(yàn)簽名調(diào)用的項(xiàng)目實(shí)踐

    SpringBoot實(shí)現(xiàn)接口校驗(yàn)簽名調(diào)用的項(xiàng)目實(shí)踐

    在以SpringBoot開(kāi)發(fā)后臺(tái)API接口時(shí),會(huì)存在哪些接口不安全的因素呢?通常如何去解決的呢?本文主要介紹了SpringBoot實(shí)現(xiàn)接口校驗(yàn)簽名調(diào)用的項(xiàng)目實(shí)踐,感興趣的可以了解一下
    2023-09-09
  • 自己動(dòng)手寫一個(gè)java版簡(jiǎn)單云相冊(cè)

    自己動(dòng)手寫一個(gè)java版簡(jiǎn)單云相冊(cè)

    這篇文章主要為大家分享了自己動(dòng)手寫的一個(gè)java版簡(jiǎn)單云相冊(cè),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Spring Boot如何解決Mysql斷連問(wèn)題

    Spring Boot如何解決Mysql斷連問(wèn)題

    本篇文章主要介紹了Spring Boot如何解決Mysql斷連問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • 深入理解Java中的并發(fā)工具類CountDownLatch

    深入理解Java中的并發(fā)工具類CountDownLatch

    CountDownLatch?作為?Java?中的一個(gè)同步工具類,用于在多線程間實(shí)現(xiàn)協(xié)調(diào)和控制,本文主要來(lái)和大家講解一下JUC?工具類?CountDownLatch的使用,需要的可以參考一下
    2023-07-07
  • java中的Serializable、transient關(guān)鍵字詳解

    java中的Serializable、transient關(guān)鍵字詳解

    這篇文章主要介紹了java中的Serializable、transient關(guān)鍵字詳解,序列化只會(huì)保存屬性值,不會(huì)保存方法,通過(guò)反序列化可以把序列化后的內(nèi)容恢復(fù)成對(duì)象,需要的朋友可以參考下
    2023-09-09
  • mybatis?resultMap沒(méi)有全部對(duì)應(yīng)的字段處理方式

    mybatis?resultMap沒(méi)有全部對(duì)應(yīng)的字段處理方式

    這篇文章主要介紹了mybatis?resultMap沒(méi)有全部對(duì)應(yīng)的字段處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評(píng)論

阳谷县| 广元市| 泽库县| 本溪市| 夹江县| 抚松县| 麟游县| 将乐县| 天峻县| 友谊县| 丹江口市| 垣曲县| 临朐县| 昆明市| 夏津县| 永泰县| 潞西市| 贵南县| 道孚县| 庆云县| 本溪市| 井研县| 江陵县| 集贤县| 康保县| 雷山县| 河池市| 额济纳旗| 镇江市| 古浪县| 梁山县| 达尔| 淅川县| 久治县| 沛县| 蕉岭县| 彭阳县| 衡水市| 法库县| 商洛市| 广灵县|