新聞中心
學(xué)習(xí)安裝 Prometheus 監(jiān)控和警報(bào)系統(tǒng)并編寫(xiě)它的查詢(xún)。

創(chuàng)新互聯(lián)公司專(zhuān)注于新民網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供新民營(yíng)銷(xiāo)型網(wǎng)站建設(shè),新民網(wǎng)站制作、新民網(wǎng)頁(yè)設(shè)計(jì)、新民網(wǎng)站官網(wǎng)定制、微信小程序定制開(kāi)發(fā)服務(wù),打造新民網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供新民網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
Prometheus 是一個(gè)開(kāi)源的監(jiān)控和警報(bào)系統(tǒng),它直接從目標(biāo)主機(jī)上運(yùn)行的代理程序中抓取指標(biāo),并將收集的樣本集中存儲(chǔ)在其服務(wù)器上。也可以使用像 collectd_exporter 這樣的插件推送指標(biāo),盡管這不是 Promethius 的默認(rèn)行為,但在主機(jī)位于防火墻后面或位于安全策略禁止打開(kāi)端口的某些環(huán)境中它可能很有用。
Prometheus 是云原生計(jì)算基金會(huì)(CNCF)的一個(gè)項(xiàng)目。它使用聯(lián)合模型federation model進(jìn)行擴(kuò)展,該模型使得一個(gè) Prometheus 服務(wù)器能夠抓取另一個(gè) Prometheus 服務(wù)器的數(shù)據(jù)。這允許創(chuàng)建分層拓?fù)?,其中中央系統(tǒng)或更高級(jí)別的 Prometheus 服務(wù)器可以抓取已從下級(jí)實(shí)例收集的聚合數(shù)據(jù)。
除 Prometheus 服務(wù)器外,其最常見(jiàn)的組件是警報(bào)管理器及其輸出器。
警報(bào)規(guī)則可以在 Prometheus 中創(chuàng)建,并配置為向警報(bào)管理器發(fā)送自定義警報(bào)。然后,警報(bào)管理器處理和管理這些警報(bào),包括通過(guò)電子郵件或第三方服務(wù)(如 PagerDuty)等不同機(jī)制發(fā)送通知。
Prometheus 的輸出器可以是庫(kù)、進(jìn)程、設(shè)備或任何其他能將 Prometheus 抓取的指標(biāo)公開(kāi)出去的東西。 這些指標(biāo)可在端點(diǎn) /metrics 中獲得,它允許 Prometheus 無(wú)需代理直接抓取它們。本文中的教程使用 node_exporter 來(lái)公開(kāi)目標(biāo)主機(jī)的硬件和操作系統(tǒng)指標(biāo)。輸出器的輸出是明文的、高度可讀的,這是 Prometheus 的優(yōu)勢(shì)之一。
此外,你可以將 Prometheus 作為后端,配置 Grafana 來(lái)提供數(shù)據(jù)可視化和儀表板功能。
理解 Prometheus 的配置文件
抓取 /metrics 的間隔秒數(shù)控制了時(shí)間序列數(shù)據(jù)庫(kù)的粒度。這在配置文件中定義為 scrape_interval 參數(shù),默認(rèn)情況下設(shè)置為 60 秒。
在 scrape_configs 部分中為每個(gè)抓取作業(yè)設(shè)置了目標(biāo)。每個(gè)作業(yè)都有自己的名稱(chēng)和一組標(biāo)簽,可以幫助你過(guò)濾、分類(lèi)并更輕松地識(shí)別目標(biāo)。一項(xiàng)作業(yè)可以有很多目標(biāo)。
安裝 Prometheus
在本教程中,為簡(jiǎn)單起見(jiàn),我們將使用 Docker 安裝 Prometheus 服務(wù)器和 node_exporter。Docker 應(yīng)該已經(jīng)在你的系統(tǒng)上正確安裝和配置。對(duì)于更深入、自動(dòng)化的方法,我推薦 Steve Ovens 的文章《如何使用 Ansible 與 Prometheus 建立系統(tǒng)監(jiān)控》。
在開(kāi)始之前,在工作目錄中創(chuàng)建 Prometheus 配置文件 prometheus.yml,如下所示:
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'webservers'
static_configs:
- targets: [':9100'] 通過(guò)運(yùn)行以下命令用 Docker 啟動(dòng) Prometheus:
$ sudo docker run -d -p 9090:9090 -v
/path/to/prometheus.yml:/etc/prometheus/prometheus.yml
prom/prometheus默認(rèn)情況下,Prometheus 服務(wù)器將使用端口 9090。如果此端口已在使用,你可以通過(guò)在上一個(gè)命令的后面添加參數(shù) --web.listen-address=" 來(lái)更改它。
在要監(jiān)視的計(jì)算機(jī)中,使用以下命令下載并運(yùn)行 node_exporter 容器:
$ sudo docker run -d -v "/proc:/host/proc" -v "/sys:/host/sys" -v
"/:/rootfs" --net="host" prom/node-exporter --path.procfs
/host/proc --path.sysfs /host/sys --collector.filesystem.ignored-
mount-points "^/(sys|proc|dev|host|etc)($|/)"出于本文練習(xí)的目的,你可以在同一臺(tái)機(jī)器上安裝 node_exporter 和 Prometheus。請(qǐng)注意,生產(chǎn)環(huán)境中在 Docker 下運(yùn)行 node_exporter 是不明智的 —— 這僅用于測(cè)試目的。
要驗(yàn)證 node_exporter 是否正在運(yùn)行,請(qǐng)打開(kāi)瀏覽器并導(dǎo)航到 http://,這將顯示收集到的所有指標(biāo);也即是 Prometheus 將要抓取的相同指標(biāo)。
要確認(rèn) Prometheus 服務(wù)器安裝成功,打開(kāi)瀏覽器并導(dǎo)航至:http://localhost:9090。
你應(yīng)該看到了 Prometheus 的界面。單擊“Status”,然后單擊“Targets”。在 “Status” 下,你應(yīng)該看到你的機(jī)器被列為 “UP”。
使用 Prometheus 查詢(xún)
現(xiàn)在是時(shí)候熟悉一下 PromQL(Prometheus 的查詢(xún)語(yǔ)法)及其圖形化 Web 界面了。轉(zhuǎn)到 Prometheus 服務(wù)器上的 http://localhost:9090/graph。你將看到一個(gè)查詢(xún)編輯器和兩個(gè)選項(xiàng)卡:“Graph” 和 “Console”。
Prometheus 將所有數(shù)據(jù)存儲(chǔ)為時(shí)間序列,使用指標(biāo)名稱(chēng)標(biāo)識(shí)每個(gè)數(shù)據(jù)。例如,指標(biāo) node_filesystem_avail_bytes 顯示可用的文件系統(tǒng)空間。指標(biāo)的名稱(chēng)可以在表達(dá)式框中使用,以選擇具有此名稱(chēng)的所有時(shí)間序列并生成即時(shí)向量。如果需要,可以使用選擇器和標(biāo)簽(一組鍵值對(duì))過(guò)濾這些時(shí)間序列,例如:
node_filesystem_avail_bytes{fstype="ext4"}過(guò)濾時(shí),你可以匹配“完全相等”(=)、“不等于”(!=),“正則匹配”(=~)和“正則排除匹配”(!~)。以下示例說(shuō)明了這一點(diǎn):
要過(guò)濾 node_filesystem_avail_bytes 以顯示 ext4 和 XFS 文件系統(tǒng):
node_filesystem_avail_bytes{fstype=~"ext4|xfs"}要排除匹配:
node_filesystem_avail_bytes{fstype!="xfs"}你還可以使用方括號(hào)得到從當(dāng)前時(shí)間往回的一系列樣本。你可以使用 s 表示秒,m 表示分鐘,h 表示小時(shí),d 表示天,w 表示周,而 y 表示年。使用時(shí)間范圍時(shí),返回的向量將是范圍向量。
例如,以下命令生成從五分鐘前到現(xiàn)在的樣本:
node_memory_MemAvailable_bytes[5m]Prometheus 還包括了高級(jí)查詢(xún)的功能,例如:
100 * (1 - avg by(instance)(irate(node_cpu_seconds_total{job='webservers',mode='idle'}[5m])))請(qǐng)注意標(biāo)簽如何用于過(guò)濾作業(yè)和模式。指標(biāo) node_cpu_seconds_total 返回一個(gè)計(jì)數(shù)器,irate()函數(shù)根據(jù)范圍間隔的最后兩個(gè)數(shù)據(jù)點(diǎn)計(jì)算每秒的變化率(意味著該范圍可以小于五分鐘)。要計(jì)算 CPU 總體使用率,可以使用 node_cpu_seconds_total 指標(biāo)的空閑(idle)模式。處理器的空閑比例與繁忙比例相反,因此從 1 中減去 irate 值。要使其為百分比,請(qǐng)將其乘以 100。
了解更多
Prometheus 是一個(gè)功能強(qiáng)大、可擴(kuò)展、輕量級(jí)、易于使用和部署的監(jiān)視工具,對(duì)于每個(gè)系統(tǒng)管理員和開(kāi)發(fā)人員來(lái)說(shuō)都是必不可少的。出于這些原因和其他原因,許多公司正在將 Prometheus 作為其基礎(chǔ)設(shè)施的一部分。
要了解有關(guān) Prometheus 及其功能的更多信息,我建議使用以下資源:
- 關(guān)于 PromQL
- 什么是 node_exporters 集合
- Prometheus 函數(shù)
- 4 個(gè)開(kāi)源監(jiān)控工具
- 現(xiàn)已推出:DevOps 監(jiān)控工具的開(kāi)源指南
當(dāng)前題目:Prometheus 入門(mén)
文章URL:http://www.dlmjj.cn/article/dpijijo.html


咨詢(xún)
建站咨詢(xún)
