Prometheus學(xué)習(xí)系列(十一)Hello World

本教程是類似"hello,world"的教程,展示怎樣在一個(gè)簡(jiǎn)單地例子中安裝另凌、配置和使用Prometheus康吵。你將下載和本地化運(yùn)行Prometheus服務(wù),并寫一個(gè)配置文件橄浓,監(jiān)控Prometheus服務(wù)本身和一個(gè)簡(jiǎn)單的應(yīng)用粒梦,然后配合使用query、rules和graphs展示收集的時(shí)間序列數(shù)據(jù)荸实。

下載和運(yùn)行Prometheus

下載Prometheus最新的發(fā)布版本,然后提取和運(yùn)行它:

tar zxvf prometheus-*.tar.gz
cd prometheus-*

在開始啟動(dòng)Prometheus之前匀们,我們要配置它

配置Prometheus監(jiān)控自身

Prometheus從監(jiān)控的目標(biāo)上通過http方式拉取指標(biāo)數(shù)據(jù),它也可以拉取自身服務(wù)數(shù)據(jù)并監(jiān)控自身的健康狀況。

當(dāng)然Prometheus服務(wù)拉取自身服務(wù)數(shù)據(jù)准给,并沒有多大的用處泄朴,但是它是一個(gè)好的開始例子。保存下面的基本Prometheus配置露氮,并命名為:prometheus.yml:

global:
  scrape_interval:     15s # 默認(rèn)情況下祖灰,每15s拉取一次目標(biāo)采樣點(diǎn)數(shù)據(jù)。

  # 我們可以附加一些指定標(biāo)簽到采樣點(diǎn)度量標(biāo)簽列表中, 用于和第三方系統(tǒng)進(jìn)行通信, 包括:federation, remote storage, Alertmanager
  external_labels:
    monitor: 'codelab-monitor'

# 下面就是拉取自身服務(wù)數(shù)據(jù)配置
scrape_configs:
  # job名稱會(huì)增加到拉取到的所有采樣點(diǎn)上畔规,同時(shí)還有一個(gè)instance目標(biāo)服務(wù)的host:port標(biāo)簽也會(huì)增加到采樣點(diǎn)上
  - job_name: 'prometheus'

    # 覆蓋global的采樣點(diǎn)局扶,拉取時(shí)間間隔5s
    scrape_interval: 5s

    static_configs:
      - targets: ['localhost:9090']

對(duì)于一個(gè)完整的配置選項(xiàng),請(qǐng)見配置文檔

啟動(dòng)Prometheus

要使用新創(chuàng)建的配置文件啟動(dòng)Prometheus叁扫,請(qǐng)切換到包含Prometheus二進(jìn)制文件的目錄并運(yùn)行:

./prometheus --config.file=prometheus.yml

Prometheus服務(wù)應(yīng)該啟動(dòng)了三妈。你可以在瀏覽器上輸入:http://localhost:9090, 給它幾秒鐘從自己的HTTP指標(biāo)端點(diǎn)收集有關(guān)自身的數(shù)據(jù)。

您還可以通過導(dǎo)航到其指標(biāo)端點(diǎn)來驗(yàn)證Prometheus是否正在提供有關(guān)自身的指標(biāo):http://localhost:9090/metrics

使用expression browser

讓我們?cè)囍匆幌翽rometheus收集的關(guān)于自己的一些數(shù)據(jù)莫绣。 使用Prometheus的內(nèi)置表達(dá)式瀏覽器畴蒲,導(dǎo)航到http://localhost:9090/graph,并選擇帶有"Graph"的"Console".

http://localhost:9090/gmetrics中收集中对室,有一個(gè)metric叫prometheus_target_interval_length_seconds(從目標(biāo)收集數(shù)據(jù)的實(shí)際時(shí)間量)饿凛,在表達(dá)式的console中輸入:

prometheus_target_interval_length_seconds

這個(gè)應(yīng)該會(huì)返回很多不同的時(shí)間序列數(shù)據(jù)(以及每個(gè)記錄的最新值),這些度量名稱都是prometheus_target_interval_length_seconds软驰,但是帶有不同的標(biāo)簽列表值涧窒,這些標(biāo)簽列表值指定了不同的延遲百分比和目標(biāo)組間隔。

如果我們僅僅對(duì)99%的延遲感興趣锭亏,則我們可以使用下面的查詢?nèi)デ逑葱畔ⅲ?/p>

prometheus_target_interval_length_seconds{quantile="0.99"}

為了統(tǒng)計(jì)返回時(shí)間序列數(shù)據(jù)個(gè)數(shù)纠吴,你可以寫:

count(prometheus_target_interval_length_seconds)

有關(guān)更多的表達(dá)式語言,請(qǐng)見表達(dá)式語言文檔

使用graph interface

見圖表表達(dá)式慧瘤,導(dǎo)航到http://localhost:9090/graph戴已, 然后使用"Graph" tab

例如固该,輸入以下表達(dá)式來繪制在自我抓取的Prometheus中創(chuàng)建的每秒塊速率:

rate(prometheus_tsdb_head_chunks_created_total[1m])

試驗(yàn)graph范圍參數(shù)和其他設(shè)置。

啟動(dòng)其他一些采樣目標(biāo)

讓我們讓這個(gè)更有趣糖儡,并開始一些示例目標(biāo)伐坏,讓Prometheus抓取。

Go客戶端庫包含一個(gè)示例握联,該示例為具有不同延遲分布的三個(gè)服務(wù)導(dǎo)出虛構(gòu)的RPC延遲桦沉。

確保已安裝Go編譯器并設(shè)置了正常工作的Go構(gòu)建環(huán)境(具有正確的GOPATH)。

下載Prometheus的Go客戶端金闽,運(yùn)行三個(gè)服務(wù):

git clone https://github.com/prometheus/client_golang.git
cd client_golang/examples/random
go get -d
go build

## 啟動(dòng)三個(gè)服務(wù)
./random -listen-address=:8080
./random -listen-address=:8081
./random -listen-address=:8082

現(xiàn)在你在瀏覽器輸入:http://localhost:8080/metrics, http://localhost:8081/metrics, http://localhost:8082/metrics, 能看到所有采集到的采樣點(diǎn)數(shù)據(jù)纯露。

配置Prometheus去監(jiān)控這三個(gè)目標(biāo)服務(wù)

現(xiàn)在我們將會(huì)配置Prometheus,拉取三個(gè)目標(biāo)服務(wù)的采樣點(diǎn)代芜。我們把這三個(gè)目標(biāo)服務(wù)組成一個(gè)job, 叫example-radom埠褪。 然而,想象成挤庇,前兩個(gè)服務(wù)是生產(chǎn)環(huán)境服務(wù)钞速,后者是測(cè)試環(huán)境服務(wù)。我們可以通過group標(biāo)簽分組嫡秕,要在Prometheus中對(duì)此進(jìn)行建模渴语,我們可以將多組端點(diǎn)添加到單個(gè)作業(yè)中,為每組目標(biāo)添加額外的標(biāo)簽淘菩。在此示例中遵班,我們將group ="production"標(biāo)簽添加到第一組目標(biāo)屠升,同時(shí)將group ="canary"添加到第二組潮改。

要實(shí)現(xiàn)此目的,請(qǐng)將以下作業(yè)定義添加到prometheus.yml中的scrape_configs部分腹暖,然后重新啟動(dòng)Prometheus實(shí)例:

scrape_configs:
  - job_name:       'example-random'

    scrape_interval: 5s

    static_configs:
      - targets: ['localhost:8080', 'localhost:8081']
        labels:
          group: 'production'

      - targets: ['localhost:8082']
        labels:
          group: 'test'

轉(zhuǎn)到表達(dá)式瀏覽器并驗(yàn)證Prometheus現(xiàn)在是否有關(guān)于這些示例端點(diǎn)公開的時(shí)間序列的信息汇在,例如rpc_durations_seconds指標(biāo)。

為抓取的數(shù)據(jù)聚合配置規(guī)則

雖然在我們的示例中不是問題脏答,但是在計(jì)算ad-hoc時(shí)糕殉,聚合了數(shù)千個(gè)時(shí)間序列的查詢會(huì)變慢。 為了提高效率殖告,Prometheus允許您通過配置的錄制規(guī)則將表達(dá)式預(yù)先記錄到全新的持久時(shí)間序列中阿蝶。 假設(shè)我們感興趣的是記錄在5分鐘窗口內(nèi)測(cè)量的所有實(shí)例(但保留作業(yè)和服務(wù)維度)的平均示例RPC(rpc_durations_seconds_count)的每秒速率。 我們可以這樣寫:

avg(rate(rpc_durations_seconds_count[5m])) by (job, service)

要將此表達(dá)式生成的時(shí)間序列記錄到名為job_service:rpc_durations_seconds_count:avg_rate5m的新度量標(biāo)準(zhǔn)中黄绩,請(qǐng)使用以下記錄規(guī)則創(chuàng)建一個(gè)文件并將其另存為prometheus.rules.yml

groups:
- name: example
  rules:
  - record: job_service:rpc_durations_seconds_count:avg_rate5m
    expr: avg(rate(rpc_durations_seconds_count[5m])) by (job, service)

要使Prometheus選擇此新規(guī)則羡洁,請(qǐng)?jiān)?code>prometheus.yml中添加rule_files語句。 配置現(xiàn)在應(yīng)該如下所示:

global:
  scrape_interval:     15s # By default, scrape targets every 15 seconds.
  evaluation_interval: 15s # Evaluate rules every 15 seconds.

  # Attach these extra labels to all timeseries collected by this Prometheus instance.
  external_labels:
    monitor: 'codelab-monitor'

rule_files:
  - 'prometheus.rules.yml'

scrape_configs:
  - job_name: 'prometheus'

    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 5s

    static_configs:
      - targets: ['localhost:9090']

  - job_name:       'example-random'

    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 5s

    static_configs:
      - targets: ['localhost:8080', 'localhost:8081']
        labels:
          group: 'production'

      - targets: ['localhost:8082']
        labels:
          group: 'canary'

使用新配置重新啟動(dòng)Prometheus爽丹,并通過表達(dá)式瀏覽器查詢或繪制圖表筑煮,驗(yàn)證帶有度量標(biāo)準(zhǔn)名稱job_service:rpc_durations_seconds_count:avg_rate5m的新時(shí)間序列現(xiàn)在可用辛蚊。

鏈接

Prometheus官網(wǎng)地址:https://prometheus.io/
我的Github:https://github.com/Alrights/prometheus

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市真仲,隨后出現(xiàn)的幾起案子袋马,更是在濱河造成了極大的恐慌,老刑警劉巖秸应,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件虑凛,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡灸眼,警方通過查閱死者的電腦和手機(jī)卧檐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來焰宣,“玉大人霉囚,你說我怎么就攤上這事∝盎” “怎么了盈罐?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)闪唆。 經(jīng)常有香客問我盅粪,道長(zhǎng),這世上最難降的妖魔是什么悄蕾? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任票顾,我火速辦了婚禮,結(jié)果婚禮上帆调,老公的妹妹穿的比我還像新娘奠骄。我一直安慰自己,他們只是感情好番刊,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布含鳞。 她就那樣靜靜地躺著,像睡著了一般芹务。 火紅的嫁衣襯著肌膚如雪蝉绷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天枣抱,我揣著相機(jī)與錄音熔吗,去河邊找鬼。 笑死佳晶,一個(gè)胖子當(dāng)著我的面吹牛桅狠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼垂攘,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼维雇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起晒他,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤吱型,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后陨仅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體津滞,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年灼伤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了触徐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡狐赡,死狀恐怖撞鹉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情颖侄,我是刑警寧澤鸟雏,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站览祖,受9級(jí)特大地震影響孝鹊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜展蒂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一又活、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧锰悼,春花似錦柳骄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽馆里。三九已至隘世,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鸠踪,已是汗流浹背丙者。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留营密,地道東北人械媒。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親纷捞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子痢虹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容