Prometheus入門 | Opensource.com

banq發表於2019-01-21

Prometheus是一個功能強大,可擴充套件,輕量級,易於使用和部署的監視工具,對於每個系統管理員和開發人員來說都是必不可少的。出於這些原因和其他原因,許多公司正在將Prometheus作為其基礎設施的一部分。本文將學習安裝和編寫Prometheus普羅米修斯監控和警報系統的查詢。

Prometheus是一個開源監控和警報系統,可直接從目標主機上執行的代理程式中刪除指標,並將收集的樣本集中儲存在其伺服器上。度量也可以使用像外掛collectd_exporter進行推送, -儘管這不是Promethius的預設行為,它可能在某些環境中有用:比如主機在防火牆後或由安全策略禁止埠訪問。
Prometheus是Cloud Native Computing Foundation的一個專案,它使用聯合模型進行擴充套件,該模型使一個Prometheus伺服器能夠抓取另一個Prometheus伺服器。這允許建立分層拓撲,其中中央系統或更高階別的Prometheus伺服器可以抓取已從下級例項收集的聚合資料。
除Prometheus伺服器外,其最常見的元件是Alertmanager及其exporters。
警報規則可以在Prometheus中建立,並配置為向Alertmanager傳送自定義警報。然後,Alertmanager處理和處理這些警報,包括透過電子郵件或第三方服務(如PagerDuty)等不同機制傳送通知。
Prometheus的exporters可以是庫包,流程,裝置或任何其他公開Prometheus將要刪除的指標的東西。這些指標可在端點/指標處獲得,這使得Prometheus可以直接抓取它們而無需代理。本文中的教程使用  node_exporter來公開目標主機的硬體和作業系統指標。exporters的輸出是明文和高度可讀的,這是Prometheus的優勢之一。
此外,您可以將Grafana配置為使用Prometheus作為後端來提供資料視覺化和儀表板功能。

理解Prometheus的配置檔案
控制抓取時間間隔的粒度在配置檔案中定義為scrape_interval引數,預設情況下設定為60秒。
需要為scrape_configs部分中的每個scrape作業設定目標。每個作業都有自己的名稱和一組標籤,可以幫助您過濾,分類並更輕鬆地識別目標。一項工作可以有很多目標。

安裝Prometheus
在本教程中,為簡單起見,我們將使用docker安裝Prometheus伺服器和node_exporter。Docker應該已經在您的系統上正確安裝和配置。

在開始之前,在工作目錄中建立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:['<node exporter node IP>:9100' ]


透過執行以下命令啟動與Docker的Prometheus:

$ sudo docker run -d -p 9090:9090 -v 
/path/to/prometheus.yml:/etc/prometheus/prometheus.yml 
prom / prometheus


預設情況下,Prometheus伺服器將使用埠9090.如果此埠已在使用,您可以透過在末尾新增引數--web.listen-address =“<IP of machine>:<port>”來更改它。

在要監視的計算機中,使用以下命令下載並執行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)($|/)"


出於學習練習的目的,您可以在同一臺計算機上安裝node_exporter和Prometheus。請注意,在生產中在Docker下執行node_exporter並不明智- 這僅用於測試目的。
要驗證node_exporter是否正在執行,請開啟瀏覽器並導航到http:// <Node of node exporter host>:9100 / metrics。將顯示收集的所有指標; 這些是Prometheus將要採取的相同指標。

要驗證Prometheus伺服器安裝,請開啟瀏覽器並導航到http://localhost:9090

您應該看到Prometheus介面。單擊Status,然後單擊Targets。在狀態下,您應該看到您的機器列為  UP。

使用Prometheus查詢
現在是時候熟悉PromQL,Prometheus的查詢語法及其圖形化Web介面。在Prometheus伺服器上轉到http:// localhost:9090 / graph。您將看到一個查詢編輯器和兩個選項卡:Graph和Console。
Prometheus將所有資料儲存為時間序列,使用度量標準名稱標識每個資料。例如,度量標準node_filesystem_avail_bytes顯示可用的檔案系統空間。度量標準的名稱可以在表示式框中使用,以選擇具有此名稱的所有時間序列並生成即時向量。如果需要,可以使用選擇器和標籤(一組鍵值對)過濾這些時間序列 - 例如:

node_filesystem_avail_bytes{fstype="ext4"}


過濾時,您可以匹配“完全相等”(=),“不等於”(!=),“正規表示式匹配”(=〜)和“不要正規表示式匹配”(!〜)。以下示例說明了這一點:
要過濾node_filesystem_avail_bytes以顯示ext4和XFS檔案系統:

node_filesystem_avail_bytes{fstype=~"ext4|xfs"}

要排除匹配:

node_filesystem_avail_bytes{fstype!="xfs"}

您還可以使用方括號從當前時間返回一系列樣本。您可以使用s表示秒,m表示分鐘,h表示小時,d表示天,w表示數週,y表示年。使用時間範圍時,返回的向量將是範圍向量。
例如,以下命令生成從五分鐘到現在的樣本:

node_memory_MemAvailable_bytes[5m]

Prometheus還包括允許高階查詢的功能,例如:

100 * (1 - avg by(instance)(irate(node_cpu_seconds_total{job='webservers',mode='idle'}[5m])))

請注意標籤如何用於過濾作業和模式。度量node_cpu_seconds_total返回一個計數器,irate ()函式根據範圍間隔的最後兩個資料點計算每秒的變化率(意味著該範圍可以小於五分鐘)。要計算總體CPU使用率,可以使用node_cpu_seconds_total指標的空閒模式。處理器的空閒百分比與繁忙的處理器相反,因此從1中減去irate值。要使其為百分比,請將其乘以100。


 

相關文章