開(kāi)源監(jiān)控系統(tǒng)Prometheus入門(mén)操作介紹

本文是一個(gè)“Hello World”風(fēng)格的教程柠并,演示了如何在簡(jiǎn)單的示例設(shè)置中安裝岭接,配置和使用Prometheus。您將在本地下載并運(yùn)行Prometheus臼予,然后將其自己看做一個(gè)應(yīng)用程序來(lái)進(jìn)行監(jiān)控鸣戴,同時(shí)使用Node Exporter采集主機(jī)數(shù)據(jù)。最后通過(guò)儀表盤(pán)來(lái)使用收集的時(shí)間序列數(shù)據(jù)粘拾。

安裝

為您的平臺(tái)下載最新版本的Prometheus窄锅,然后解壓縮并運(yùn)行它:

$ wget https://github.com/prometheus/prometheus/releases/download/v2.9.1/prometheus-2.9.1.linux-amd64.tar.gz
$ tar xvfz prometheus-2.9.1.linux-amd64.tar.gz

采集應(yīng)用數(shù)據(jù)

Prometheus通過(guò)在目標(biāo)應(yīng)用上的HTTP端點(diǎn)/metrics來(lái)收集受監(jiān)控目標(biāo)的指標(biāo)。由于Prometheus也以同樣的方式公開(kāi)數(shù)據(jù)缰雇,因此也可以抓取它的指標(biāo)和監(jiān)控自身的健康狀況入偷。

雖然Prometheus服務(wù)器收集有關(guān)自身的數(shù)據(jù)在實(shí)踐中并不是很有用,但它是一個(gè)很好的示例械哟。

配置

可以看到Prometheus的配置文件prometheus.yml:

global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

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

這里設(shè)置了Prometheus采集本地9090端口服務(wù)疏之。

啟動(dòng)

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

正常的情況下,你可以看到以下輸出內(nèi)容:

level=info ts=2019-04-18T03:24:43.863Z caller=main.go:285 msg="no time or size retention was set so using the default time retention" duration=15d
level=info ts=2019-04-18T03:24:43.863Z caller=main.go:321 msg="Starting Prometheus" version="(version=2.9.1, branch=HEAD, revision=ad71f2785fc321092948e33706b04f3150eee44f)"
level=info ts=2019-04-18T03:24:43.863Z caller=main.go:322 build_context="(go=go1.12.4, user=root@09f919068df4, date=20190416-17:50:04)"
level=info ts=2019-04-18T03:24:43.863Z caller=main.go:323 host_details="(Linux 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 localhost.localdomain (none))"
level=info ts=2019-04-18T03:24:43.863Z caller=main.go:324 fd_limits="(soft=1024, hard=4096)"
level=info ts=2019-04-18T03:24:43.863Z caller=main.go:325 vm_limits="(soft=unlimited, hard=unlimited)"
level=info ts=2019-04-18T03:24:43.864Z caller=main.go:640 msg="Starting TSDB ..."
level=info ts=2019-04-18T03:24:43.874Z caller=web.go:416 component=web msg="Start listening for connections" address=0.0.0.0:9090
level=info ts=2019-04-18T03:24:43.876Z caller=main.go:655 msg="TSDB started"
level=info ts=2019-04-18T03:24:43.876Z caller=main.go:724 msg="Loading configuration file" filename=prometheus.yml
level=info ts=2019-04-18T03:24:43.877Z caller=main.go:751 msg="Completed loading of configuration file" filename=prometheus.yml
level=info ts=2019-04-18T03:24:43.877Z caller=main.go:609 msg="Server is ready to receive web requests."

這時(shí)Prometheus應(yīng)該已經(jīng)啟動(dòng)暇咆。您還應(yīng)該通過(guò)localhost:9090瀏覽到自己的狀態(tài)頁(yè)面锋爪。過(guò)幾秒鐘后就會(huì)從自己的HTTP指標(biāo)端點(diǎn)收集到有關(guān)數(shù)據(jù)丙曙。

您還可以通過(guò)瀏覽其指標(biāo)端點(diǎn)來(lái)驗(yàn)證Prometheus是否正在提供有關(guān)自身的指標(biāo): localhost:9090/metrics

使用Node Exporter采集主機(jī)數(shù)據(jù)

Exporter的作用是暴露已有的第三方服務(wù)的 metrics 給 Prometheus。Exporter將監(jiān)控?cái)?shù)據(jù)采集的端點(diǎn)通過(guò)HTTP服務(wù)的形式暴露給Prometheus Server其骄,Prometheus Server通過(guò)訪問(wèn)該Exporter提供的Endpoint端點(diǎn)亏镰,即可獲取到需要采集的監(jiān)控?cái)?shù)據(jù)。

從上面的描述中可以看出Exporter可以是一個(gè)相對(duì)開(kāi)放的概念拯爽,其可以是一個(gè)獨(dú)立運(yùn)行的程序獨(dú)立于監(jiān)控目標(biāo)以外索抓,也可以是直接內(nèi)置在監(jiān)控目標(biāo)中。只要能夠向Prometheus提供標(biāo)準(zhǔn)格式的監(jiān)控樣本數(shù)據(jù)即可毯炮。

這里為了能夠采集到主機(jī)的運(yùn)行指標(biāo)如CPU, 內(nèi)存逼肯,磁盤(pán)等信息。我們可以使用Node Exporter否副。

安裝

$ wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
$ tar xvfz node_exporter-0.17.0.linux-amd64.tar.gz

運(yùn)行

 $ cd node_exporter-0.17.0.linux-amd64
 $ ./node_exporter 

看到如下輸出:

INFO[0000] Starting node_exporter (version=0.17.0, branch=HEAD, revision=f6f6194a436b9a63d0439abc585c76b19a206b21)  source="node_exporter.go:82"
INFO[0000] Build context (go=go1.11.2, user=root@322511e06ced, date=20181130-15:51:33)  source="node_exporter.go:83"
INFO[0000] Enabled collectors:                           source="node_exporter.go:90"
INFO[0000]  - arp                                        source="node_exporter.go:97"
INFO[0000]  - bcache                                     source="node_exporter.go:97"
INFO[0000]  - bonding                                    source="node_exporter.go:97"
INFO[0000]  - conntrack                                  source="node_exporter.go:97"
INFO[0000]  - cpu                                        source="node_exporter.go:97"
INFO[0000]  - diskstats                                  source="node_exporter.go:97"
INFO[0000]  - edac                                       source="node_exporter.go:97"
INFO[0000]  - entropy                                    source="node_exporter.go:97"
INFO[0000]  - filefd                                     source="node_exporter.go:97"
INFO[0000]  - filesystem                                 source="node_exporter.go:97"
INFO[0000]  - hwmon                                      source="node_exporter.go:97"
INFO[0000]  - infiniband                                 source="node_exporter.go:97"
INFO[0000]  - ipvs                                       source="node_exporter.go:97"
INFO[0000]  - loadavg                                    source="node_exporter.go:97"
INFO[0000]  - mdadm                                      source="node_exporter.go:97"
INFO[0000]  - meminfo                                    source="node_exporter.go:97"
INFO[0000]  - netclass                                   source="node_exporter.go:97"
INFO[0000]  - netdev                                     source="node_exporter.go:97"
INFO[0000]  - netstat                                    source="node_exporter.go:97"
INFO[0000]  - nfs                                        source="node_exporter.go:97"
INFO[0000]  - nfsd                                       source="node_exporter.go:97"
INFO[0000]  - sockstat                                   source="node_exporter.go:97"
INFO[0000]  - stat                                       source="node_exporter.go:97"
INFO[0000]  - textfile                                   source="node_exporter.go:97"
INFO[0000]  - time                                       source="node_exporter.go:97"
INFO[0000]  - timex                                      source="node_exporter.go:97"
INFO[0000]  - uname                                      source="node_exporter.go:97"
INFO[0000]  - vmstat                                     source="node_exporter.go:97"
INFO[0000]  - xfs                                        source="node_exporter.go:97"
INFO[0000]  - zfs                                        source="node_exporter.go:97"
INFO[0000] Listening on :9100                            source="node_exporter.go:111"

代表已啟動(dòng)成功汉矿,可通過(guò)9100端口訪問(wèn)。

從Node Exporter收集監(jiān)控?cái)?shù)據(jù)

為了能夠讓Prometheus Server能夠從當(dāng)前node exporter獲取到監(jiān)控?cái)?shù)據(jù)备禀,這里需要修改Prometheus配置文件。編輯prometheus.yml并在scrape_configs節(jié)點(diǎn)下添加以下內(nèi)容:

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

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

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

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

重新啟動(dòng)Prometheus Server

訪問(wèn)http://localhost:9090奈揍,進(jìn)入到Prometheus Server曲尸。輸入“up”并且點(diǎn)擊執(zhí)行按鈕以后,可以看到如下結(jié)果:

Prometheus UI

其中“1”表示正常男翰,反之“0”則為異常另患。

集成Grafana

第三方的可視化工具Grafana是一個(gè)開(kāi)源的可視化平臺(tái),并且提供了對(duì)Prometheus的完整支持蛾绎。

下載安裝

官網(wǎng)下載地址:Grafana

根據(jù)自己的系統(tǒng)版本和配置昆箕,下載對(duì)應(yīng)的包。3000為Grafana的默認(rèn)偵聽(tīng)端口租冠,啟動(dòng)后打開(kāi)瀏覽器鹏倘,輸入IP+端口進(jìn)行訪問(wèn)。

系統(tǒng)默認(rèn)用戶(hù)名和密碼為admin/admin顽爹,第一次登陸系統(tǒng)會(huì)要求修改密碼纤泵。

添加數(shù)據(jù)源

首先是添加數(shù)據(jù)源,這里選擇Prometheus作為默認(rèn)的數(shù)據(jù)源镜粤,如下圖所示捏题,指定數(shù)據(jù)源類(lèi)型為Prometheus并且設(shè)置Prometheus的訪問(wèn)地址即可,在配置正確的情況下點(diǎn)擊“Save & Test”按鈕肉渴,會(huì)提示連接成功的信息:


添加數(shù)據(jù)源

創(chuàng)建DashBoard

創(chuàng)建好數(shù)據(jù)源之后公荧,就需要?jiǎng)?chuàng)建DashBoard(儀表盤(pán)),可以自定義同规,也可以導(dǎo)入你需要的儀表盤(pán)循狰,官方提供了很多的可選儀表盤(pán)庸诱。

這里我們選擇官方提供的Prometheus 2.0 Stats。


創(chuàng)建儀表盤(pán)

展示儀表盤(pán)

Grafana中所有的Dashboard通過(guò)JSON進(jìn)行共享晤揣,下載并且導(dǎo)入這些JSON文件桥爽,就可以直接使用這些已經(jīng)定義好的Dashboard:


儀表盤(pán)樣式

可以在Explore的“Metrics”選項(xiàng)下通過(guò)PromQL查詢(xún)需要可視化的數(shù)據(jù),比如輸入指標(biāo)node_memory_MemFree_bytes查看系統(tǒng)可用內(nèi)存:


PromQL查詢(xún)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末昧识,一起剝皮案震驚了整個(gè)濱河市钠四,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌跪楞,老刑警劉巖缀去,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異甸祭,居然都是意外死亡缕碎,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)池户,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)咏雌,“玉大人,你說(shuō)我怎么就攤上這事校焦∩薅叮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵寨典,是天一觀的道長(zhǎng)氛雪。 經(jīng)常有香客問(wèn)我,道長(zhǎng)耸成,這世上最難降的妖魔是什么报亩? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮井氢,結(jié)果婚禮上弦追,老公的妹妹穿的比我還像新娘。我一直安慰自己毙沾,他們只是感情好骗卜,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著左胞,像睡著了一般寇仓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上烤宙,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天遍烦,我揣著相機(jī)與錄音,去河邊找鬼躺枕。 笑死服猪,一個(gè)胖子當(dāng)著我的面吹牛供填,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播罢猪,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼近她,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了膳帕?” 一聲冷哼從身側(cè)響起粘捎,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎危彩,沒(méi)想到半個(gè)月后攒磨,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡汤徽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年娩缰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谒府。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拼坎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出狱掂,到底是詐尸還是另有隱情演痒,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布趋惨,位于F島的核電站,受9級(jí)特大地震影響惦蚊,放射性物質(zhì)發(fā)生泄漏器虾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一蹦锋、第九天 我趴在偏房一處隱蔽的房頂上張望兆沙。 院中可真熱鬧,春花似錦莉掂、人聲如沸葛圃。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)库正。三九已至,卻和暖如春厘唾,著一層夾襖步出監(jiān)牢的瞬間褥符,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工抚垃, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喷楣,地道東北人趟大。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像铣焊,于是被迫代替她去往敵國(guó)和親逊朽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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