這里說下我在開發(fā)自己的Prometheus Exporter時遇到的幾個坑,所謂的坑,其實是在開發(fā)過程中需要注意到的幾個關鍵點,如果忽略,那么可能會產(chǎn)生錯誤和非預期的結果。
創(chuàng)新互聯(lián)公司是由多位在大型網(wǎng)絡公司、廣告設計公司的優(yōu)秀設計人員和策劃人員組成的一個具有豐富經(jīng)驗的團隊,其中包括網(wǎng)站策劃、網(wǎng)頁美工、網(wǎng)站程序員、網(wǎng)頁設計師、平面廣告設計師、網(wǎng)絡營銷人員及形象策劃。承接:成都網(wǎng)站制作、成都網(wǎng)站設計、網(wǎng)站改版、網(wǎng)頁設計制作、網(wǎng)站建設與維護、網(wǎng)絡推廣、數(shù)據(jù)庫開發(fā),以高性價比制作企業(yè)網(wǎng)站、行業(yè)門戶平臺等全方位的服務。如果對Prometheus不了解的,可以自行谷歌或百度一下,或者可以看下我之前的一篇文章。Prometheus是基于Pull的工作模式,需要定期的從Agent端收集數(shù)據(jù),并入庫,這里的Agent被稱為Exporter。官網(wǎng)和社區(qū)里目前很多成熟的expoter可以選擇,比如監(jiān)控linux機器的node_exporter、監(jiān)控mysql的mysqld_exporter等等。這里的大多數(shù)都是用Go語言寫的,其實理解了Exporter和Prometheus的工作原理之后就知道,exporter其實就是將收集的數(shù)據(jù)轉化為文本格式,并對外暴露接口,提供 http 請求,所以很容自己實現(xiàn)一個,不必拘泥于用那種語言,你可以用Java、PHP或者Python等任何你擅長的。我這里用Python Flask框架寫了一個監(jiān)控vSphere Datastore的Exporter,開發(fā)過程中需要注意一下幾點:
Exporter的整體文本數(shù)據(jù)格式:
Exporter的返回的是文本內(nèi)容,其中以行為單位,空行將被忽略, 文本內(nèi)容最后一行為空行;
文本內(nèi)容以“# HELP”開頭的行為注釋,表示幫助信息,以“# TYPE”開頭的行表示此Metric的類型;
exporter有四種數(shù)據(jù)類型,分別為:counter/gauge/histogram/summary。
Exporter每一行文本的格式
在每一行文本的最后不能有空格,否則會不識別
在每一Metric行代表一個Key、Value對,Value的值是float類型,如果有兩個Value值,最后
一個會被認為是時間戳進行保存,比如:
http_requests_total{method="post",code="200"} 1027 1395066363000
Metrics的Label的value值必須要用雙引號“”引起來
Exporter的Content-Type必須是text類型:
這里我flask返回頁面的Content-Type設置為:text/plain
4. Prometheus有自己的python的client:
項目地址如下:
https://github.com/prometheus/client_python
如果不想重復造輪子,可以選擇用官網(wǎng)提供的lient端。
5. Exporter接口的響應時間
默認Prometheus是每隔15秒抓取一次數(shù)據(jù),每次的timeout超時時間是10s,這個也可以在配置文件里自定義。要注意Exporter的接口響應時間一定要比server配置里的小。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。