Prometheus入門 | Opensource.com
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。
相關文章
- Prometheus 入門Prometheus
- 入門PrometheusPrometheus
- Prometheus從入門到精通:一、部署Prometheus
- Prometheus監控系統入門與部署Prometheus
- 監控神器:Prometheus 輕鬆入門,真香!(上篇)Prometheus
- 監控神器:Prometheus 輕鬆入門,真香!(下篇)Prometheus
- 是時候扔掉Prometheus了,VictoriaMetrics全家桶入門與K8S部署PrometheusK8S
- 運維必學的監控系統——Prometheus,大牛免費直播帶你入門~運維Prometheus
- 如何遠端寫入prometheus儲存Prometheus
- 入門入門入門 MySQL命名行MySql
- 為什麼我從Java切換到Rust? Opensource.comJavaRust
- 何入CTF的“門”?——所謂入門就是入門
- 如何入CTF的“門”?——所謂入門就是入門
- scala 從入門到入門+
- makefile從入門到入門
- gRPC(二)入門:Protobuf入門RPC
- PrometheusPrometheus
- 【小入門】react極簡入門React
- Android入門教程 | RecyclerView使用入門AndroidView
- 新手入門,webpack入門詳細教程Web
- Android入門教程 | Kotlin協程入門AndroidKotlin
- 《Flutter 入門經典》之“Flutter 入門 ”Flutter
- MyBatis從入門到精通(一):MyBatis入門MyBatis
- Tableau入門
- angular入門Angular
- lodash入門
- Webpack 入門Web
- golang 入門Golang
- lapis入門API
- MarkDown入門
- JSP入門JS
- UML入門
- VuePress 入門Vue
- RSA入門
- jQuery入門jQuery
- Hive 入門Hive
- scrapy入門
- Fetch 入門