溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

開(kāi)發(fā)自己的分布式監(jiān)控Prometheus Exporter時(shí)遇到的坑

發(fā)布時(shí)間:2020-04-24 09:33:19 來(lái)源:網(wǎng)絡(luò) 閱讀:26738 作者:Jx戰(zhàn)壕 欄目:軟件技術(shù)

   這里說(shuō)下我在開(kāi)發(fā)自己的Prometheus Exporter時(shí)遇到的幾個(gè)坑,所謂的坑,其實(shí)是在開(kāi)發(fā)過(guò)程中需要注意到的幾個(gè)關(guān)鍵點(diǎn),如果忽略,那么可能會(huì)產(chǎn)生錯(cuò)誤和非預(yù)期的結(jié)果。

開(kāi)發(fā)自己的分布式監(jiān)控Prometheus Exporter時(shí)遇到的坑

  如果對(duì)Prometheus不了解的,可以自行谷歌或百度一下,或者可以看下我之前的一篇文章。Prometheus是基于Pull的工作模式,需要定期的從Agent端收集數(shù)據(jù),并入庫(kù),這里的Agent被稱為Exporter。官網(wǎng)和社區(qū)里目前很多成熟的expoter可以選擇,比如監(jiān)控linux機(jī)器的node_exporter、監(jiān)控mysql的mysqld_exporter等等。這里的大多數(shù)都是用Go語(yǔ)言寫(xiě)的,其實(shí)理解了Exporter和Prometheus的工作原理之后就知道,exporter其實(shí)就是將收集的數(shù)據(jù)轉(zhuǎn)化為文本格式,并對(duì)外暴露接口,提供 http 請(qǐng)求,所以很容自己實(shí)現(xiàn)一個(gè),不必拘泥于用那種語(yǔ)言,你可以用Java、PHP或者Python等任何你擅長(zhǎng)的。我這里用Python Flask框架寫(xiě)了一個(gè)監(jiān)控vSphere Datastore的Exporter,開(kāi)發(fā)過(guò)程中需要注意一下幾點(diǎn):

  1. Exporter的整體文本數(shù)據(jù)格式:

    Exporter的返回的是文本內(nèi)容,其中以行為單位,空行將被忽略, 文本內(nèi)容最后一行為空行;

    文本內(nèi)容以“# HELP”開(kāi)頭的行為注釋,表示幫助信息,以“# TYPE”開(kāi)頭的行表示此Metric的類型;

    exporter有四種數(shù)據(jù)類型,分別為:counter/gauge/histogram/summary。

  2. Exporter每一行文本的格式

    1. 在每一行文本的最后不能有空格,否則會(huì)不識(shí)別

    2. 在每一Metric行代表一個(gè)Key、Value對(duì),Value的值是float類型,如果有兩個(gè)Value值,最后

      一個(gè)會(huì)被認(rèn)為是時(shí)間戳進(jìn)行保存,比如:

        http_requests_total{method="post",code="200"} 1027 1395066363000

    3. Metrics的Label的value值必須要用雙引號(hào)“”引起來(lái)

  3. Exporter的Content-Type必須是text類型:

    1. 這里我flask返回頁(yè)面的Content-Type設(shè)置為:text/plain

開(kāi)發(fā)自己的分布式監(jiān)控Prometheus Exporter時(shí)遇到的坑

    4. Prometheus有自己的python的client:

   項(xiàng)目地址如下:

https://github.com/prometheus/client_python

  如果不想重復(fù)造輪子,可以選擇用官網(wǎng)提供的lient端。

  5. Exporter接口的響應(yīng)時(shí)間

     默認(rèn)Prometheus是每隔15秒抓取一次數(shù)據(jù),每次的timeout超時(shí)時(shí)間是10s,這個(gè)也可以在配置文件里自定義。要注意Exporter的接口響應(yīng)時(shí)間一定要比server配置里的小。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI